Benjamin Berg (), einer der Ingenieure von Red Hat, der an der Entwicklung von GNOME arbeitet, die Ergebnisse der Arbeit an der Portierung von GNOME zur Sitzungsverwaltung ausschließlich mit systemd, ohne den Einsatz des gnome-session-Prozesses.
Für die Verwaltung des Zugangs zu GNOME wird bereits seit längerem , das den Status von Sitzungen in Verbindung mit Benutzern überwacht, Sitzungs-IDs verwaltet, das Wechseln zwischen aktiven Sitzungen ermöglicht, Multi-Seat-Umgebungen koordiniert, Zugriffspolitiken für Geräte festlegt, Optionen zum Herunterfahren und Einschlafen bereitstellt usw.
Dabei blieb ein Teil der mit Sitzungen verbundenen Funktionen im Prozess gnome-session, der über D-Bus verwaltete, den Display-Manager und die Komponenten von GNOME startete und den Autostart der vom Benutzer angegebenen Anwendungen organisierte. Im Verlauf der Entwicklung von GNOME 3.34 wurden die spezifischen Funktionen für gnome-session in Form von Unit-Dateien für systemd gestaltet, die im Modus "systemd --user" ausgeführt werden, d.h. im Zusammenhang mit der Umgebung eines bestimmten Benutzers und nicht des gesamten Systems. Die Änderungen wurden bereits im Fedora 31-Distributions-Release angewendet, das für Ende Oktober erwartet wird.
Die Verwendung von systemd ermöglicht es, Handler nach Bedarf oder bei bestimmten Ereignissen zu starten und auf unerwartete Prozessabschlüsse aufgrund von Fehlfunktionen raffinierter zu reagieren sowie die Abhängigkeiten beim Start von GNOME-Komponenten umfassender zu verarbeiten. Infolgedessen kann die Anzahl ständig laufender Prozesse reduziert und der Speicherverbrauch gesenkt werden. Zum Beispiel kann XWayland jetzt nur dann gestartet werden, wenn eine Anwendung auf der Grundlage des X11-Protokolls ausgeführt wird, und hardware-spezifische Komponenten werden nur bei Vorhandensein der entsprechenden Hardware gestartet (z. B. werden Treiber für Smartcards beim Einstecken der Karte aktiviert und beim Herausziehen der Karte deaktiviert).
Für den Benutzer stehen flexiblere Werkzeuge zur Verfügung, um den Start von Diensten zu verwalten. Um beispielsweise den Medienschlüssel-Handler zu deaktivieren, genügt es, den Befehl „systemctl —user stop gsd-media-keys.target“ auszuführen. Bei Problemen können die Protokolle für jeden Handler mit dem Befehl journalctl eingesehen werden (zum Beispiel „journalctl —user -u gsd-media-keys.service“), nachdem zuvor das Debug-Protokoll im Dienst aktiviert wurde („Environment=G_MESSAGES_DEBUG=all“). Außerdem besteht die Möglichkeit, alle GNOME-Komponenten in isolierten Sandbox-Umgebungen zu starten, was erhöhte Sicherheitsanforderungen erfüllt.
Um den Übergang zu glätten, wird die Unterstützung der alten Methode zum Starten von Prozessen über mehrere Entwicklungszyklen von GNOME hinweg aufrechterhalten. Anschließend werden die Entwickler den Status von gnome-session überprüfen und es ist sehr wahrscheinlich (als „likely“ markiert), dass die Startmittel für Prozesse und die Unterstützung des D-Bus-API daraus entfernt werden. Danach wird der Einsatz von „systemd —user“ zu einem verpflichtenden Feature werden, was Schwierigkeiten für Systeme ohne systemd schaffen und die Vorbereitung einer alternativen Lösung erfordern könnte, wie es früher der Fall war mit . Dennoch erwähnte Benjamin Berg in seiner Rede auf der GUADEC 2019 den Plan, die Unterstützung der alten Startmethode für Systeme ohne systemd aufrechtzuerhalten, aber diese Informationen widersprechen den geplanten Entwicklungen. .

Quelle: opennet.ru
