core: fix starting stubdom guid for HVM in debug mode
Remove artificial attribute '_start_guid_first' and use guiagent_installed directly. This way starting guid for stubdom in debug mode, even if guiagent_installed is set is much clearer.
This commit is contained in:
parent
f7c86f861c
commit
ee48954445
@ -183,7 +183,6 @@ class QubesVm(object):
|
|||||||
self.kernel) if self.kernel is not None \
|
self.kernel) if self.kernel is not None \
|
||||||
else os.path.join(self.dir_path,
|
else os.path.join(self.dir_path,
|
||||||
vm_files["kernels_subdir"]) },
|
vm_files["kernels_subdir"]) },
|
||||||
"_start_guid_first": { "func": lambda x: False },
|
|
||||||
}
|
}
|
||||||
|
|
||||||
### Mark attrs for XML inclusion
|
### Mark attrs for XML inclusion
|
||||||
@ -1617,6 +1616,10 @@ class QubesVm(object):
|
|||||||
self.log.debug(
|
self.log.debug(
|
||||||
'start_guid(extra_guid_args={!r}, before_qrexec={!r})'.format(
|
'start_guid(extra_guid_args={!r}, before_qrexec={!r})'.format(
|
||||||
extra_guid_args, before_qrexec))
|
extra_guid_args, before_qrexec))
|
||||||
|
if before_qrexec:
|
||||||
|
# On PV start GUId only after qrexec-daemon
|
||||||
|
return
|
||||||
|
|
||||||
if verbose:
|
if verbose:
|
||||||
print >> sys.stderr, "--> Starting Qubes GUId..."
|
print >> sys.stderr, "--> Starting Qubes GUId..."
|
||||||
|
|
||||||
@ -1767,7 +1770,7 @@ class QubesVm(object):
|
|||||||
if qmemman_present:
|
if qmemman_present:
|
||||||
qmemman_client.close()
|
qmemman_client.close()
|
||||||
|
|
||||||
extra_guid_args = None
|
extra_guid_args = []
|
||||||
if preparing_dvm:
|
if preparing_dvm:
|
||||||
# Run GUI daemon in "invisible" mode, so applications started by
|
# Run GUI daemon in "invisible" mode, so applications started by
|
||||||
# prerun script will not disturb the user
|
# prerun script will not disturb the user
|
||||||
@ -1778,7 +1781,7 @@ class QubesVm(object):
|
|||||||
# mode
|
# mode
|
||||||
start_guid = False
|
start_guid = False
|
||||||
|
|
||||||
if self._start_guid_first and start_guid:
|
if start_guid:
|
||||||
self.start_guid(verbose=verbose, notify_function=notify_function,
|
self.start_guid(verbose=verbose, notify_function=notify_function,
|
||||||
before_qrexec=True, extra_guid_args=extra_guid_args)
|
before_qrexec=True, extra_guid_args=extra_guid_args)
|
||||||
|
|
||||||
|
@ -221,15 +221,15 @@ class QubesDisposableVm(QubesVm):
|
|||||||
if qmemman_present:
|
if qmemman_present:
|
||||||
qmemman_client.close()
|
qmemman_client.close()
|
||||||
|
|
||||||
if self._start_guid_first and kwargs.get('start_guid', True) and os.path.exists('/var/run/shm.id'):
|
if kwargs.get('start_guid', True) and os.path.exists('/var/run/shm.id'):
|
||||||
self.start_guid(verbose=verbose,
|
self.start_guid(verbose=verbose, before_qrexec=True,
|
||||||
notify_function=kwargs.get('notify_function', None))
|
notify_function=kwargs.get('notify_function', None))
|
||||||
|
|
||||||
self.start_qrexec_daemon(verbose=verbose,
|
self.start_qrexec_daemon(verbose=verbose,
|
||||||
notify_function=kwargs.get('notify_function', None))
|
notify_function=kwargs.get('notify_function', None))
|
||||||
print >>sys.stderr, "time=%s, qrexec done" % (str(time.time()))
|
print >>sys.stderr, "time=%s, qrexec done" % (str(time.time()))
|
||||||
|
|
||||||
if not self._start_guid_first and kwargs.get('start_guid', True) and os.path.exists('/var/run/shm.id'):
|
if kwargs.get('start_guid', True) and os.path.exists('/var/run/shm.id'):
|
||||||
self.start_guid(verbose=verbose,
|
self.start_guid(verbose=verbose,
|
||||||
notify_function=kwargs.get('notify_function', None))
|
notify_function=kwargs.get('notify_function', None))
|
||||||
print >>sys.stderr, "time=%s, guid done" % (str(time.time()))
|
print >>sys.stderr, "time=%s, guid done" % (str(time.time()))
|
||||||
|
@ -79,7 +79,6 @@ class QubesHVm(QubesVm):
|
|||||||
attrs['seamless_gui_mode'] = { 'default': False,
|
attrs['seamless_gui_mode'] = { 'default': False,
|
||||||
'attr': '_seamless_gui_mode',
|
'attr': '_seamless_gui_mode',
|
||||||
'save': lambda: str(self._seamless_gui_mode) }
|
'save': lambda: str(self._seamless_gui_mode) }
|
||||||
attrs['_start_guid_first']['func'] = lambda x: True
|
|
||||||
attrs['services']['default'] = "{'meminfo-writer': False}"
|
attrs['services']['default'] = "{'meminfo-writer': False}"
|
||||||
|
|
||||||
attrs['memory']['default'] = defaults["hvm_memory"]
|
attrs['memory']['default'] = defaults["hvm_memory"]
|
||||||
@ -97,10 +96,6 @@ class QubesHVm(QubesVm):
|
|||||||
(not 'xml_element' in kwargs or kwargs['xml_element'].get('guiagent_installed') is None):
|
(not 'xml_element' in kwargs or kwargs['xml_element'].get('guiagent_installed') is None):
|
||||||
self.services['meminfo-writer'] = False
|
self.services['meminfo-writer'] = False
|
||||||
|
|
||||||
# Disable qemu GUID if the user installed qubes gui agent
|
|
||||||
if self.guiagent_installed:
|
|
||||||
self._start_guid_first = False
|
|
||||||
|
|
||||||
self.storage.volatile_img = None
|
self.storage.volatile_img = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -409,7 +404,9 @@ class QubesHVm(QubesVm):
|
|||||||
before_qrexec=False, **kwargs):
|
before_qrexec=False, **kwargs):
|
||||||
# If user force the guiagent, start_guid will mimic a standard QubesVM
|
# If user force the guiagent, start_guid will mimic a standard QubesVM
|
||||||
if not before_qrexec and self.guiagent_installed:
|
if not before_qrexec and self.guiagent_installed:
|
||||||
super(QubesHVm, self).start_guid(verbose, notify_function, extra_guid_args=["-Q"], **kwargs)
|
kwargs['extra_guid_args'] = kwargs.get('extra_guid_args', []) + \
|
||||||
|
['-Q']
|
||||||
|
super(QubesHVm, self).start_guid(verbose, notify_function, **kwargs)
|
||||||
stubdom_guid_pidfile = '/var/run/qubes/guid-running.%d' % self.stubdom_xid
|
stubdom_guid_pidfile = '/var/run/qubes/guid-running.%d' % self.stubdom_xid
|
||||||
if os.path.exists(stubdom_guid_pidfile) and not self.debug:
|
if os.path.exists(stubdom_guid_pidfile) and not self.debug:
|
||||||
try:
|
try:
|
||||||
@ -436,7 +433,7 @@ class QubesHVm(QubesVm):
|
|||||||
else:
|
else:
|
||||||
super(QubesHVm, self).start_qrexec_daemon(**kwargs)
|
super(QubesHVm, self).start_qrexec_daemon(**kwargs)
|
||||||
|
|
||||||
if self._start_guid_first:
|
if self.guiagent_installed:
|
||||||
if kwargs.get('verbose'):
|
if kwargs.get('verbose'):
|
||||||
print >> sys.stderr, "--> Waiting for user '%s' login..." % self.default_user
|
print >> sys.stderr, "--> Waiting for user '%s' login..." % self.default_user
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user