Ich suche eine gute Übersichtsdokumentation, die den Stapel von Daemons und Diensten beschreibt, die in einer modernen Linux-Sitzung enthalten sind. Obwohl ich verschiedene Dokumentationen über dbus
und gelesen habe systemd
, verstehe ich immer noch nicht den Überblick.
Insbesondere suche ich nach Antworten auf diese Fragen (beantworte die Fragen nicht, sie sollten nur klarstellen, nach welcher Art von Dokumentation ich suche):
Welcher Prozess ist nach der Anmeldung der Stamm der Benutzersitzung?
Welche Prozesse sollen gestartet werden und warum? Ich suche nach einer Desktop-agnostischen Antwort, egal ob Gnome, KDE, FVWM oder eine einfache Shell gestartet wird.
Welche Rolle spielen all diese Dämonen? Welche von ihnen würden alleine laufen, welche von anderen abhängen? Welches sollte von wem, warum und wie lange gestartet werden? Und wer sollte diesen Zoo unterhalten?
Ich frage, weil ich fand , dass ich einen ganzen Zoo von Dämonen haben direkt nach dem Booten ausgeführt wird : systemd-journald
, systemd-udevd
, dbus-daemon
,
systemd-logind
. Doch damit nicht genug: Abgesehen von diesem Laufultraleichte PDF-Betrachter zathura
weiter auffüllt meiner Sitzung mit dbus-launch
,
dbus-daemon
, at-spi2-registryd
, und at-spi-bus-launcher
, letztere Start noch einem anderen dbus-daemon
. Keiner von ihnen war schon einmal dort, keiner wurde eingeladen, aber sie werden im Haus bleiben und mir ein gruseliges Gefühl geben, bis ich mich auslogge. Ich bin mir sicher, dass ich hier etwas vermisse ...
Ein weiteres Beispiel: Nach der Anmeldung systemd
läuft eine mit meiner Benutzer-UID, aber ich habe keine Ahnung, was sie tun soll (seit Version 206 sollte ich das nicht mehr als Sitzungsmanager verwenden, oder?). Es gibt einen untergeordneten Prozess (sd-pam)
, über den ich keine Dokumentation gefunden habe.
Was machen Sie? Welche Idee steckt hinter diesem Setup?
Um meine Sichtweise zu verdeutlichen: In „alten Zeiten“ reichte es zu wissen, dass
login
meine Anmeldeshell gestartet ( bash
ausgeführt ~/.profile
) wurde, und von diesem Punkt an konnte ich eine Sitzung aufbauen, abhängig von den Umständen, möglicherweise starten screen
oder startx
.
quelle
Antworten:
Ich bin so fasziniert von Ihrer Frage, dass ich sie auf linuxintro beantwortet habe . Hier ist die Antwort, die auf Ihre Frage zugeschnitten ist:
Wenn ein typischer PC mit Linux wie Fedora, SUSE oder Ubuntu hochfährt, sind die Schritte wie folgt:
init wird abhängig von Ihrer Distribution, Version und Konfiguration ausgeführt
Der Sinn all dieser Programme ist es, Dienste wie zu starten
10) Der Anmeldevorgang, der von systemd ausgeführt wird, wartet auf eine Anmeldung an einem virtuellen Terminal. Eine Anmeldung ist normalerweise durch Drücken von CTRL_ALT_F1 erreichbar
11) Normalerweise und standardmäßig startet der Init-Prozess jetzt den Anzeigemanager, z. B. kdm (KDE-Anzeigemanager) oder xdm
12) Der Display Manager startet nun das grafische System. Es gibt praktisch kein grafisches System außer Xorg (hildon ist für eingebettete Geräte).
13) Der Anzeigemanager weist den Xorg-Server an, einen Anmeldebildschirm anzuzeigen
Jetzt ist der Startvorgang abgeschlossen und der Computer wartet auf die Anmeldung des Benutzers.
14) Beim Anmelden des Benutzers im Display-Manager wird eine Desktop-Umgebung wie KDE, GNOME oder XFCE4 gestartet. Der Root-Prozess für die KDE-Sitzung eines Benutzers heißt startkde, der Root-Prozess für GNOME heißt gnome-session, der Root-Prozess für XFCE4 heißt xfce4-session
15) KDE startet normalerweise alle ausführbaren Dateien von ~ / .kde / Autostart und die .desktop-Dateien von / etc / xdg / autostart (siehe Aufgaben planen ).
16) Wenn sich der Benutzer grafisch angemeldet hat und auf ein Symbol klickt, um eine Konsole zu öffnen, wird in der Regel eine Bash ausgeführt. Bash führt dann zuerst .bashrc aus
17) Wenn der Benutzer eine Anmeldeshell öffnet, bedeutet dies, dass er sich über ein Kennwort oder einen autorisierten Schlüssel anmelden muss. Er kann dies auf der CTRL_ALT_F1-Konsole oder durch Senden an einen Computer, z. B. localhost, tun. Dann werden die .sh-Skripte aus /etc/profile.d und .bashrc ausgeführt.
quelle
Die Antwort ist 42. Thorsten Staerk hat das Hauptproblem bereits in den Kommentaren erläutert.
Damit Sie sich einen Überblick verschaffen können, müssen Sie wissen, dass Linux- und Open Source-Software von Millionen von Freiwilligen und Unternehmen entwickelt und gepflegt wird. Es ist also nicht einfach, mit dem Wachstum Schritt zu halten.
Auf der anderen Seite gibt es eine Menge Dokumentation: die Man-Pages für jede Software, eine gute Erklärung, was D-Bus ist, die Entwickler-Mailinglisten, Google und so weiter. Nehmen Sie sich also einige Jahre Zeit und lesen Sie alle Dokumente der Pakete, an denen Sie interessiert sind. Wenn Sie es schneller benötigen, stellen Sie einfach einige gute Fragen bei Unix & Linux .
Viel Glück.
quelle
Bevor ich meine Version der Antwort gebe, möchte ich mit ein paar Definitionen beginnen
Linux == 'Ein Betriebssystem-Kernel "Linux-System ==" Eine Art System, das um den Linux-Kernel herum aufgebaut ist "Sitzung auf einem Linux-System ==" Einige verwandte Benutzerprogramme, die auf einem Linux-System ausgeführt werden "
Je weiter Sie sich vom Kernel entfernen, desto unwahrscheinlicher ist es, dass zwei "Systeme" tatsächlich etwas gemeinsam haben. Was bedeutet, dass es keine vernünftige Definition einer "Modern Linux Session" gibt
Ehrlich gesagt ist die Erwartung, dass es eine übergreifende Systemdokumentation geben sollte, die alle Komponenten enthält, eine Erwartung, die in den meisten Teilen der Open-Source-Welt nicht erfüllt werden kann. Open Source-Entwickler schreiben Programme, um die spezifischen Probleme zu lösen (oder neu zu lösen!), Die ihnen wichtig sind - also dokumentieren sie nur das Teil davon - wenn das so ist! :-)
Vielleicht haben Sie mehr Glück mit den Handbüchern, die mit kommerziellen Linux-Distributionen erhältlich sind. Angesichts des konservativen Charakters der meisten von ihnen können Sie jedoch argumentieren, dass ihre Veröffentlichungen nicht "modern" sind!
Der Schlüssel Rat , den ich geben würde ist , dass un ein sehr allgemeinen Sinn Unix / Linux - Systeme heirachical sind. Früher habe ich den Leuten gesagt, dass ich nix systems mag, weil ich mit init anfangen und von dort aus alles verstehen kann, was auf einem System vor sich geht. Systemd und seine Freunde haben dies ein wenig geändert, aber das Grundprinzip ist dasselbe - beginnen Sie oben und arbeiten Sie nach unten - die "Programme, die eine Sitzung bilden" sind im Allgemeinen diejenigen, die von dem Punkt an begannen, an dem Sie in die Erbe eintreten. Also, wenn Sie in ssh sind, werden Sie wahrscheinlich nur das bekommen, was Ihre Standard-Shell ist, wie ssh funktioniert. Wenn Sie sich über eine grafische Oberfläche anmelden, erhalten Sie alles, was von Ihrem Anmeldemanager gestartet wurde, so wie Ihr Anmeldemanager funktioniert
Viele Desktop - Frameworks erschweren dies, indem sie verschiedene Service - Daemons auf Benutzer - oder Systemebene ausführen. Manchmal werden diese bei Bedarf durch einen Blick auf die Befehlszeilenoptionen von gestartet, wenn das erste Programm gestartet wird, das sie benötigt Programme, die Sie ausführen, gibt es sehr wahrscheinlich Optionen, um dieses Verhalten zu beenden und die Anwendung im "nackten" Modus auszuführen.
Leider bedeutet dies, dass "Lesen der Dokumentation der einzelnen Programme" der einzige Weg ist, alles zu verstehen, und dass es für eine Sitzung keine "Mindestanzahl von Daemons" gibt - es gibt nur die Art und Weise, wie eine bestimmte Distribution für eine bestimmte Sitzung funktioniert Anmelde- / Zugriffsmethode und deren Verteilung, Desktop und Anmeldemethode.
quelle