6Jul

Was sind "Runlevel" unter Linux?

Beim Booten eines Linux-Systems wird der Standard-Runlevel eingegeben und die Startskripte ausgeführt, die diesem Runlevel zugeordnet sind. Sie können auch zwischen Runlevels wechseln - zum Beispiel gibt es einen Runlevel für Wiederherstellungs- und Wartungsvorgänge.

Traditionell verwendete Linux System V-Style-Init-Skripte - während neue Init-Systeme schließlich traditionelle Runlevels veralten werden, haben sie noch nicht. Zum Beispiel verwendet Ubuntus Upstart-System immer noch traditionelle System V-Style-Skripte.

Was ist ein Runlevel?

Wenn ein Linux-System gestartet wird, werden die Prozesse init gestartet.init ist dafür verantwortlich, die anderen Prozesse auf dem System zu starten. Wenn Sie beispielsweise Ihren Linux-Computer starten, startet der Kernel init, und init führt die Startskripte aus, um Ihre Hardware zu initialisieren, Netzwerke zu erstellen und Ihren grafischen Desktop zu starten.

Es wird jedoch nicht nur ein einziger Satz von Startskripten init ausgeführt. Es gibt mehrere Run-Levels mit eigenen Startup-Skripts - beispielsweise kann ein Runlevel das Netzwerk aufrufen und den grafischen Desktop starten, während ein anderer Runlevel das Netzwerk deaktiviert lassen und den grafischen Desktop überspringen kann. Dies bedeutet, dass Sie mit einem einzigen Befehl vom "grafischen Desktopmodus" in den "Textkonsolenmodus ohne Netzwerkbetrieb" wechseln können, ohne verschiedene Dienste manuell starten und stoppen zu müssen.

Genauer gesagt führt init die Skripte in einem bestimmten Verzeichnis aus, das dem Runlevel entspricht. Wenn Sie beispielsweise Runlevel 3 unter Ubuntu eingeben, führt init die Skripte aus, die sich im Verzeichnis /etc/ rc3.d befinden.

So funktioniert es zumindest mit einem herkömmlichen System-V-Init-System - Linux-Distributionen beginnen, das alte System-V-Init-System zu ersetzen. Während Ubuntu Upstart derzeit die Kompatibilität mit SysV-Init-Skripten aufrechterhält, wird sich dies in Zukunft wahrscheinlich ändern.

Die Runlevels

Einige Runlevels sind Standard zwischen Linux-Distributionen, während einige Runlevels von Distribution zu Distribution variieren.

Die folgenden Runlevels sind Standard:

  • 0 - Halt ( fährt das System herunter.)
  • 1 - Einzelbenutzermodus ( Das System startet in den Superuser-Modus, ohne Daemons oder Netzwerkbetrieb zu starten. Ideal zum Booten in eine Wiederherstellungs- oder Diagnoseumgebung.)
  • 6 - Neustart

Die Runlevel 2-5 variieren je nach Verteilung. Unter Ubuntu und Debian sind die Runlevel 2-5 beispielsweise identisch und bieten einen vollständigen Mehrbenutzermodus mit Netzwerk und grafischer Anmeldung. Auf Fedora und Red Hat bietet Runlevel 2 den Multi-User-Modus ohne Netzwerk( nur Konsolenanmeldung), Runlevel 3 bietet Multi-User-Modus mit Networking( nur Konsolenanmeldung), Runlevel 4 ist nicht belegt und Runlevel 5 bietet Multi-User-Modus mitVernetzung und grafische Anmeldung.

Wechseln zu einem anderen Runlevel

Um zu einem anderen Runlevel zu wechseln, während das System bereits läuft, verwenden Sie den folgenden Befehl:

sudo telinit #

Ersetzen Sie # durch die Nummer des Runlevels, zu dem Sie wechseln möchten. Lassen Sie sudo aus und führen Sie den Befehl als root aus, wenn Sie eine Distribution ausführen, die sudo nicht verwendet.

Direkt zu einem bestimmten Runlevel booten

Sie können einen Runlevel zum Booten vom Bootloader auswählen - zum Beispiel Grub. Drücken Sie zu Beginn des Startvorgangs eine Taste, um auf Grub zuzugreifen, wählen Sie Ihren Starteintrag und drücken Sie e, um ihn zu bearbeiten.

Sie können am ---------------- hinzufügen.(Drücken Sie Strg + X, um danach zu booten.) Dies ist die gleiche Option wie die Wiederherstellungsmodus-Option in Grub.

Traditionell könnten Sie eine Zahl als Kernel-Parameter angeben und Sie würden auf diesem Runlevel booten - zum Beispiel mit 3 anstelle von Single , um auf Runlevel 3 zu booten. Dies scheint jedoch nicht auf den neuesten Versionen zu funktionierenvon Ubuntu - Upstart scheint es nicht zu erlauben. In ähnlicher Weise hängt die Änderung des Standard-Runlevels von Ihrer Distribution ab.

Während der Upstart-Daemon von Ubuntu das SystemV-Init-System immer noch emuliert, werden sich viele dieser Informationen in Zukunft ändern. Zum Beispiel ist Upstart ereignisbasiert - es kann Dienste anhalten und starten, wenn Ereignisse auftreten( zum Beispiel könnte ein Dienst starten, wenn ein Hardwaregerät mit dem System verbunden ist und wenn das Gerät entfernt wird.) Fedora hat auch einen eigenen Nachfolgerzu init, systemd.