diff --git a/core-modules/000QubesVm.py b/core-modules/000QubesVm.py index 81bb6f10..41c2aed4 100644 --- a/core-modules/000QubesVm.py +++ b/core-modules/000QubesVm.py @@ -183,7 +183,6 @@ class QubesVm(object): self.kernel) if self.kernel is not None \ else os.path.join(self.dir_path, vm_files["kernels_subdir"]) }, - "_start_guid_first": { "func": lambda x: False }, } ### Mark attrs for XML inclusion @@ -1617,6 +1616,10 @@ class QubesVm(object): self.log.debug( 'start_guid(extra_guid_args={!r}, before_qrexec={!r})'.format( extra_guid_args, before_qrexec)) + if before_qrexec: + # On PV start GUId only after qrexec-daemon + return + if verbose: print >> sys.stderr, "--> Starting Qubes GUId..." @@ -1767,7 +1770,7 @@ class QubesVm(object): if qmemman_present: qmemman_client.close() - extra_guid_args = None + extra_guid_args = [] if preparing_dvm: # Run GUI daemon in "invisible" mode, so applications started by # prerun script will not disturb the user @@ -1778,7 +1781,7 @@ class QubesVm(object): # mode start_guid = False - if self._start_guid_first and start_guid: + if start_guid: self.start_guid(verbose=verbose, notify_function=notify_function, before_qrexec=True, extra_guid_args=extra_guid_args) diff --git a/core-modules/01QubesDisposableVm.py b/core-modules/01QubesDisposableVm.py index 706797bd..6dcbe136 100644 --- a/core-modules/01QubesDisposableVm.py +++ b/core-modules/01QubesDisposableVm.py @@ -221,15 +221,15 @@ class QubesDisposableVm(QubesVm): if qmemman_present: qmemman_client.close() - if self._start_guid_first and kwargs.get('start_guid', True) and os.path.exists('/var/run/shm.id'): - self.start_guid(verbose=verbose, + if kwargs.get('start_guid', True) and os.path.exists('/var/run/shm.id'): + self.start_guid(verbose=verbose, before_qrexec=True, notify_function=kwargs.get('notify_function', None)) self.start_qrexec_daemon(verbose=verbose, notify_function=kwargs.get('notify_function', None)) 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, notify_function=kwargs.get('notify_function', None)) print >>sys.stderr, "time=%s, guid done" % (str(time.time())) diff --git a/core-modules/01QubesHVm.py b/core-modules/01QubesHVm.py index 0bd88a07..08fd0118 100644 --- a/core-modules/01QubesHVm.py +++ b/core-modules/01QubesHVm.py @@ -79,7 +79,6 @@ class QubesHVm(QubesVm): attrs['seamless_gui_mode'] = { 'default': False, 'attr': '_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['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): 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 @property @@ -409,7 +404,9 @@ class QubesHVm(QubesVm): before_qrexec=False, **kwargs): # If user force the guiagent, start_guid will mimic a standard QubesVM 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 if os.path.exists(stubdom_guid_pidfile) and not self.debug: try: @@ -436,7 +433,7 @@ class QubesHVm(QubesVm): else: super(QubesHVm, self).start_qrexec_daemon(**kwargs) - if self._start_guid_first: + if self.guiagent_installed: if kwargs.get('verbose'): print >> sys.stderr, "--> Waiting for user '%s' login..." % self.default_user