diff --git a/doc/manpages/qvm-create.rst b/doc/manpages/qvm-create.rst index 0e7de1bd..23c4552b 100644 --- a/doc/manpages/qvm-create.rst +++ b/doc/manpages/qvm-create.rst @@ -6,7 +6,7 @@ Synopsis -------- -:command:`qvm-create` skel-manpage.py [-h] [--xml *XMLFILE*] [--force-root] [--class *CLS*] [--property *NAME*=*VALUE*] [--template *VALUE*] [--label *VALUE*] [--root-copy-from *FILENAME* | --root-move-from *FILENAME*] *VMNAME* +:command:`qvm-create` [-h] [--xml *XMLFILE*] [--force-root] [--class *CLS*] [--property *NAME*=*VALUE*] [--template *VALUE*] [--label *VALUE*] [--root-copy-from *FILENAME* | --root-move-from *FILENAME*] *VMNAME* Options ------- @@ -25,7 +25,8 @@ Options .. option:: --class, -C - The class of the new domain (default: AppVM). + The new domain class name (default: **AppVM** for + :py:class:`qubes.vm.appvm.AppVM`). .. option:: --prop=NAME=VALUE, --property=NAME=VALUE, -p NAME=VALUE @@ -44,11 +45,23 @@ Options .. option:: --root-copy-from=FILENAME, -r FILENAME - Use provided root.img instead of default/empty one (file will be *copied*). + Use provided :file:`root.img` instead of default/empty one (file will be + *copied*). This option is mutually exclusive with :option:`--root-move-from`. .. option:: --root-move-from=FILENAME, -R FILENAME - use provided root.img instead of default/empty one (file will be *moved*). + Use provided :file:`root.img` instead of default/empty one (file will be + *moved*). This option is mutually exclusive with :option:`--root-copy-from`. + +Options for internal use +------------------------ + +Do not use if you don't know, what you are doing. + +.. option:: --no-root + + Do not create :file:`root.img`. This option is mutually exclusive with + :option:`--root-copy-from` and :option:`--root-move-from`. Authors diff --git a/qubes/tools/qvm_create.py b/qubes/tools/qvm_create.py index caf6e982..cee620c5 100644 --- a/qubes/tools/qvm_create.py +++ b/qubes/tools/qvm_create.py @@ -62,6 +62,9 @@ parser_root.add_argument('--root-copy-from', '-r', metavar='FILENAME', parser_root.add_argument('--root-move-from', '-R', metavar='FILENAME', help='use provided root.img instead of default/empty one' ' (file will be MOVED)') +parser_root.add_argument('--no-root', + action='store_true', default=False, + help=argparse.SUPPRESS) parser.add_argument('name', metavar='VMNAME', action=qubes.tools.SinglePropertyAction, @@ -124,23 +127,24 @@ def main(): # if (options.verbose): # print('--> Using default TemplateVM: {0}'.format(template.name)) - try: - vm.create_on_disk() + if not args.no_root: + try: + vm.create_on_disk() - if args.root_move_from is not None: -# if (options.verbose): -# print "--> Replacing root.img with provided file" - os.unlink(vm.root_img) - os.rename(options.root_move_from, vm.root_img) - elif args.root_copy_from is not None: -# if (options.verbose): -# print "--> Replacing root.img with provided file" - os.unlink(vm.root_img) - # use 'cp' to preserve sparse file - subprocess.check_call(['cp', options.root_copy_from, vm.root_img]) + if args.root_move_from is not None: +# if (options.verbose): +# print "--> Replacing root.img with provided file" + os.unlink(vm.root_img) + os.rename(options.root_move_from, vm.root_img) + elif args.root_copy_from is not None: +# if (options.verbose): +# print "--> Replacing root.img with provided file" + os.unlink(vm.root_img) + # use 'cp' to preserve sparse file + subprocess.check_call(['cp', options.root_copy_from, vm.root_img]) - except (IOError, OSError) as err: - parser.error(str(err)) + except (IOError, OSError) as err: + parser.error(str(err)) app.save()