Merge branch 'hvm' of 10.141.1.101:/var/lib/qubes/git/marmarek/core into hvm

This commit is contained in:
Joanna Rutkowska 2012-03-16 10:24:48 +01:00
commit 4ebcace459
3 changed files with 23 additions and 15 deletions

View File

@ -881,9 +881,15 @@ class QubesVm(object):
return args
@property
def uses_custom_config(self):
return self.conf_file != self.absolute_path(self.name + ".conf", None)
def create_config_file(self, file_path = None, source_template = None, prepare_dvm = False):
if file_path is None:
file_path = self.conf_file
if self.uses_custom_config:
return
if source_template is None:
source_template = self.template
@ -1622,19 +1628,6 @@ class QubesTemplateVm(QubesVm):
return True
def start(self, debug_console = False, verbose = False, preparing_dvm=False):
if dry_run:
return
self.reset_volatile_storage(verbose=verbose)
if not self.updateable:
raise QubesException ("Cannot start Template VM that is marked \"nonupdatable\"")
# TODO?: check if none of running appvms are outdated
return super(QubesTemplateVm, self).start(debug_console=debug_console, verbose=verbose)
def reset_volatile_storage(self, verbose = False):
assert not self.is_running(), "Attempt to clean volatile image of running Template VM!"

View File

@ -119,16 +119,23 @@ def block_name_to_majorminor(name):
major = 0
minor = 0
dXpY_style = False
name_match = re.match(r"([a-z]+)([a-z])([0-9]*)", name)
if not name_match:
raise QubesException("Invalid device name: %s" % name)
name_match = re.match(r"([a-z]+)([0-9]*)(?:p([0-9]+)?", name)
if not name_match:
raise QubesException("Invalid device name: %s" % name)
else:
dXpY_style = True
disk = True
if name_match.group(1) == "xvd":
major = 202
elif name_match.group(1) == "sd":
major = 8
elif name_match.group(1) == "mmcblk":
major = 179
elif name.startswith("scd"):
disk = False
major = 11
@ -143,7 +150,10 @@ def block_name_to_majorminor(name):
return (0, 0)
if disk:
minor = (ord(name_match.group(2))-ord('a')) * 16
if dXpY_style:
minor = int(name_match.group(2))*8
else:
minor = (ord(name_match.group(2))-ord('a')) * 16
else:
minor = 0
if name_match.group(3):

View File

@ -41,6 +41,8 @@ def main():
help="Temporarily attach specified drive as CD/DVD")
parser.add_option ("--dvm", action="store_true", dest="preparing_dvm", default=False,
help="Do actions necessary when preparing DVM image")
parser.add_option ("--custom-config", action="store", dest="custom_config", default=None,
help="Use custom Xen config instead of Qubes-generated one")
(options, args) = parser.parse_args ()
if (len (args) != 1):
@ -64,6 +66,9 @@ def main():
print >> sys.stderr, "This VM does not support attaching drives"
exit (1)
if options.custom_config:
vm.conf_file = options.custom_config
try:
vm.verify_files()
xid = vm.start(debug_console=options.debug_console, verbose=options.verbose, preparing_dvm=options.preparing_dvm)