Montag, 13. Juni 2016

101.3 Runlevel wechseln und das System anhalten oder neu starten

Wichtung 3

Ist der Kernel mit der Initialisierung fertig, übergibt er an den init Prozess. Bis vor kurzem (?) handelte es sich bei allen Linux Distributionen um den init-Daemon.
Bei Linux ist es nicht nur möglich, das Betriebssystem hoch und runter zu fahren, sondern es gibt auch noch einige zusätzliche Abstufungen. Die verschiedenen Zustände, die dabei eingenommen werden können, nennt man Runlevel. Der Wechsel zwischen den Runlevels übernimmt der init-Prozess. Init ist immer der erste Prozess, der auf einem Linux-Rechner gestartet wird, daher bekommt er auch die PID (Prozess-ID) 1. Init ist auch der letzte Prozess, der sich beim Runterfahren selbst beendet.
  • ps -A Auflistung der laufenden Prozesse mit Terminalbezug. Unter Ubuntu heißt PID1 jedoch systemd (siehe weiter unten) wie im Übrigen unter Debian ebenfalls
  • pstree -> init wird als Wurzel des Prozessbaums dargestellt


Runlevel und ihre Funktionen


Runlevel sind sozusagen Zustände und Funktionsstufen, in denen sich ein Linux-System befinden kann

  • Runlevel 0: Tritt das System in dieses Level ein, so wird der Computer ausgeschaltet, sofern das BIOS das automatische Ausschalten unterstützt
  • Runlevel 1: (Auch Runlevel s oder S)Single User Mode -> es werden nur rudimentäre Funktionen zur Verfügung gestellt. Dieses Level sollte vorwiegend zur Wartung und Administration genutzt werden. In diesem Level gibt es noch keine Netzwerkfunktionalität oder Multi-User-Unterstützung
  • Runlevel 2: Nicht bei allen Distributionen gleich definiert! Wahrscheinlich keine Unterstützung für grafische Anmeldung. Multi-User-Funktionalität ist vorhanden und bei einigen Distros wird hier das Netzwerk gestartet
  • Runlevel 3: Ebenfalls nicht bei allen Distros gleich! Multi-User-Funktionalität ist nun vorhanden, spätestens jetzt wird das Netzwerk gestartet, Vorhandensein der grafische Anmeldung macht hier den Unterschied
  • Runlevel 4: Wird von keiner Distribution genutzt
  • Runlevel 5: Höchster funktionaler Runlevel! Unterstützt in der Regel Netzwerk, Multiuserfunktionalität und die grafische Anmeldung, sofern sie installiert wurde
  • Runlevel 6: Distributionsübergreifend definiert! Wird dieser Runlevel aufgerufen, fährt init das System runter und startet es anschließend neu


Konfigurationsdatei inittab

  • Ubuntu und Linux Mint haben heutzutage keine inittab, da sie von systemd verwaltet werden. Ich denke, ich habe in Suse eine Distro gefunden, die den init-Prozess noch verwendet und damit auch die inittab. Leider habe ich bisher Suse noch nicht zum Laufen bekommen
  • /etc/inittab Hauptkonfigurationstabelle für den init-Prozess
  • /sbin befindet sich der init-Prozess
  • in der inittab kann man festlegen, in welchen Runlevel Linux standardmäßig bootet. Möchte ich nur ein paar Kommandos testen, benötige ich die grafische Anmeldung nicht, so dass ich das System z.B. nur bis zu Runlevel 3 booten lassen muss
    # The default runlevel is defined here
    id:3:initdefault
  • Änderungen in der inittab werden beim nächsten Neustart aktiv
  • Runlevel 0 und 6 nicht empfehlenswert, da sich das System in einer ständigen Bootschleife befinden würde, bzw. sich das System direkt wieder abschalten würde
  • In der inittab kann man auch nachlesen, wie die Runlevels organisiert
    # runlevel 0 is System halt
    # runlevel 1 is Single user mode
    # runlevel 2 is Local multiuser without remote network
    # runlevel 3 is Full multiuser with network
    # runlevel 4 is not used
    # runlevel 5 is Full multiuser with network and xdm
    # runlevel 6 is System reboot
  • Die meisten Linux Distributionen stellen von sich aus 6 Konsolen bereit, auf denen man gleichzeitig arbeiten kann; Aufruf der Konsolen erfolgt über Str+Alt + Fx Taste 
  • Es ist auch möglich weitere Konsolen hinzuzufügen, man sollte jedoch darauf achten, dass man nicht die Konsole verwendet, die das X-Window-System verwendet:
    1:2345:respawn:/sbin/mingetty --noclear tty1
    2:2345:respawn:/sbin/mingetty tty2
    3:2345:respawn:/sbin/mingetty tty3
    4:2345:respawn:/sbin/mingetty tty4
    5:2345:respawn:/sbin/mingetty tty5

    6:2345:respawn:/sbin/mingetty tty6
  • erste Ziffer ist die ID der zu startenden Konsole und muss identisch mit der Nummer des verwendeten Terminals sein
  • Nach ersten Doppelpunkt folgen die Runlevel in denen die Konsolen verfügbar sein sollen (hier alle Level bis auf 0, 1 und 6) 
  • Runlevel 1 ist hier nicht vertreten, das es an anderer Stelle konfiguriert wird und auch nur eine Konsole zulässt (? lassen die anderen doch auch, wenn die ID der Nummer des Terminals entspricht-> oder heißt das, dass Runlevel 1 nur eine Konsole zulässt, wo in obigen Beispiel ja die anderen Runlevels 5(6) Konsolen zugewiesen bekommen? -> Nein ist nicht so, weil ich ja z.B. standardmäßig 5 Konsolen generiere)
  • respawn ist ein Kunstwort und kann mit "wieder hervorbringen" übersetzt werden und bedeutet, dass eine beendete Konsole wieder neu gestartet wird. (Benutzeranmeldung durch login oder auch der Benutzerabmeldung und falscher Passworteingabe und durch logout, was ebenfalls eine neue Instanz der Konsole erzeugt)
  • /sbin/mingetty ist eins der wichtigsten Konsolenprogramme (TTY steht für Teletyper)
  • prüfungsrelevante Option innerhalb der inittab:
    # what to do when Ctrl-Alt-Del is pressed
    ca ::ctraltdel:/sbin/shutdown -r +4

    nach der Verwendung des "Affengriffs" wird der Rechner exakt nach 4 Minuten neu gestartet. Vorher wird eine Konsolenmeldung an alle angemeldeten Benutzer gesendet.
  • Da es sich um Konsolenmeldungen handelt, werden Windows-Nutzer, die eventuell auf einem gemeinsamen Samba-Server arbeiten nicht  benachrichtigt
  • shutdown Anweisung kann auch durch init 0 oder init 6 getauscht werden. 
  • telinit q: veranlasst den init-Prozess im laufenden Betrieb die inittab direkt neu einzulesen und nicht erst nach dem Neustart 




Keine Kommentare:

Kommentar veröffentlichen