3.8 Systemstart und -stop bei Debian

3.8.1 System starten

Der Start eines Debian Systems ähnelt zunächst sehr dem Systemstart anderer Linux-Versionen. Nach dem Einschalten des Systems lädt der Bootloader (meist GRUB oder LILO auf X86-Systemen) den gewünschten Kernel in den Speicher. Der Kernel wird gestartet und bindet das Wurzeldateisystem (Root) ein. Als erstes Programm wird /sbin/init aufgerufen und erhält somit immer die Prozessnummer 1, alle weiteren Prozesse werden direkt oder indirekt von init gestartet. Man bezeichnet init deshalb auch als Vater aller Prozesse. init liest die Konfigurationsdatei /etc/inittab, in der festgelegt ist, dass zunächst das Skript /etc/init.d/rcS ausgeführt werden soll.

Dieses Skript führt in einer festgelegten Reihenfolge (aufsteigend in numerischer/alphabetischer Reihenfolge) alle Skripte im Verzeichnis /etc/rcS.d aus. Skripte, deren Dateiname mit einem K beginnt, werden mit der Option stop ausgeführt. Mit dem Buchstaben S beginnende Skripte dagegen werden mit der Option start ausgeführt. Mit diesen Skripten werden beispielsweise alle weiteren Partitionen eingebunden, Module geladen, das Netzwerk aktiviert und Dienste gestartet.

Debian verwendet das vom Unix-System V eingeführte Konzept verschiedener Zustände des Systems, die so genannten Runlevel. Ein Runlevel ist ein Software-Zustand des Systems, der es nur einer bestimmten Gruppe von Prozessen erlaubt, ausgeführt zu werden. So können Runlevel beispielsweise für unterschiedliche Betriebsmodi eines Systems verwendet werden. Es ist möglich, zwischen (fast allen) Runleveln im laufenden Betrieb zu wechseln, ohne das System neu starten zu müssen.

Jeder der verfügbaren Runlevel kann mit dem Kommando telinit n, wobei n die Zahl des gewünschten Runlevels ist, aktiviert werden. Zum Einsatz kommen die Runlevel 0-9 sowie S und s, wobei den Runleveln 0, 1 und 6 eine besondere Bedeutung zukommt.

Debian Runlevel

0

halt, hält das System an, ohne es neu zu starten.

1

bringt das System in den Single-User-Modus. Es werden nur die minimal benötigten Dienste gestartet, Netzwerkschnittstellen sind nicht aktiviert. Dieser Modus ist für Wartungsarbeiten gedacht.

2 bis 5

Multiuser Modus, in diesen Runleveln wird üblicherweise gearbeitet. Ein unverändertes Debian System läuft im Normalbetrieb im Runlevel 2.

6

Dieser Runlevel dient zum Neustarten (Reboot) des Systems.

7 bis 9

Diese Runlevel werden nicht verwendet. init ist aber in der Lage, diese zu benutzen, wenn vom Administrator entsprechende Skripte und Verzeichnisse angelegt werden.

S und s

bringen das System in den Single-User-Modus. Siehe auch Runlevel 1.

a bis c

So genannte ondemand-Runlevel. Siehe inittab.

3.8.2 System herunterfahren

Schalten Sie Ihr Debian GNU/Linux-System niemals einfach aus! Sie riskieren in diesem Fall einen Verlust Ihrer Daten!

Wenn Sie Ihren Computer zu Hause benutzen, möchten Sie ihn vielleicht nachts abschalten (eigentlich schaltet kein richtiger Linux-Fan seinen Computer jemals ab, aber trotzdem wollen wir diesen Ausnahmefall kurz besprechen...).

Es ist eine sehr schlechte Idee, einen Linux-Computer nach der Arbeit einfach auszuschalten oder die RESET-Taste zu drücken. Der Linux-Kernel hat, um die Performance zu erhöhen, einen internen Festplatten-Cache. Das bedeutet, dass Informationen temporär im Arbeitsspeicher (RAM) des Computers abgelegt werden, bevor sie auf der Festplatte gespeichert werden. Dies beschleunigt viele Aktionen stark. Periodisch wird der Inhalt dieses Puffers auf die Festplatte übertragen. Dies können Sie auch selbst durch das Kommando sync erreichen.

Um Ihren Rechner ordnungsgemäß herunterzufahren, benutzen Sie bitte das Kommando reboot (als Administrator - root) oder drücken die Tastenkombination STRG+ALT+ENTF gleichzeitig. Debian GNU/Linux wird nun unmittelbar alle Programme beenden und den Rechner neu starten.

Um den Rechner abzuschalten, müssen Sie Administrator (root) sein. Benutzen Sie das Kommando shutdown -h now. Wenn Sie die Zeile System halted, it's safe to turn off the computer. sehen, können Sie den Rechner ausschalten.

Bei neueren Computern mit Advanced Power Management-Unterstützung (APM) und einem Kernel, der dies unterstützt, schaltet sich der Rechner selbsttätig ab.

Sie können aber auch als normaler Benutzer den Rechner jederzeit mit der Tastenkombination STRG+ALT+ENTF herunterfahren, wenn der Administrator dies nicht deaktiviert hat (in /etc/inittab). Keine Angst, das System wird auch so korrekt heruntergefahren, es gehen keine Daten verloren.

3.8.3 inittab

Die Datei /etc/inittab beschreibt die Prozesse, die beim Systemstart und im normalen Betrieb ausgeführt werden. Ein Eintrag in dieser Datei ist wie folgt aufgebaut:

id:runlevels:action:process

Zeilen, die mit dem Zeichen # beginnen, sind Kommentare und werden nicht ausgewertet. Die Werte in den einzelnen Feldern einer Datei haben die folgende Bedeutung

Felder in der Datei inittab

id

Ist eine eindeutige Zeichenkette mit der maximalen Länge von vier Zeichen.

runlevels

Beschreibt, in welchen Runleveln der Prozess gestartet werden soll. Hier können mehrere Runlevel, beispielsweise 1234, angegeben werden.

action

Die auszuführende Aktion. Die Aktionen werden weiter unten im Detail beschrieben.

prozess

Das auszuführende Kommando.

Der Eintrag im Feld action steuert, auf welche Weise ein Prozess gestartet wird. Das Feld kann mit den im folgenden beschriebenen Werten belegt werden.

Aktionen

respawn

Der Prozess wird neu gestartet, falls das Programm beendet wird.

wait

Der Prozess wird beim Wechsel in den angegebenen Runlevel gestartet, und init wartet, bis der Prozess beendet wird.

once

Der Prozess wird einmalig gestartet, wenn der Runlevel erreicht wird.

boot

Der Prozess wird beim Systemstart gestartet, das Feld runlevels wird ignoriert.

bootwait

Der Prozess wird beim Systemstart gestartet, init wartet, bis der Prozess beendet wird. Das Feld runlevels wird ignoriert.

off

Dieser Eintrag wird ignoriert.

ondemand

Wird bei dem entsprechenden ondemand-Runlevel ausgeführt. Der Runlevel wird nicht gewechselt. ondemand-Runlevel sind a, b und c.

initdefault

Beschreibt den normalen Runlevel eines Systems, Debian verwendet hier den Runlevel 2. Ist kein Runlevel angegeben, so wird beim Systemstart nach dem gewünschten Runlevel gefragt.

sysinit

Dieser Eintrag wird beim Systemstart vor Einträgen mit der Kennung boot oder bootwait ausgeführt. Das Feld runlevels wird nicht ausgewertet.

powerwait

Unterbrechungsfreie Stromversorgung. Der Prozess wird gestartet, wenn die Netzspannung unterbrochen wird (dies setzt natürlich eine USV - Unterbrechnungsfreie Stromversorgung - voraus). init wird über den Ausfall durch ein Programm informiert, das die USV überwacht, und wartet, bis der Prozess beendet ist.

powerfail

Wie powerwait, jedoch wird nicht auf die Beendigung des Prozesses gewartet.

powerokwait

Dieser Prozess wird ausgeführt, wenn die Netzspannung wieder verfügbar ist.

powerfailnow

Geht die Ladung der USV soweit zur Neige, dass nur noch für kurze Zeit der Betrieb aufrecht erhalten werden kann, so wird dieser Eintrag ausgeführt und das System heruntergefahren.

ctrlaltdel

Wird die Tastenkombination STRG+ALT+ENTF gedrückt, so führt dies zum Herunterfahren das Systems, ähnlich wie man es von anderen Betriebssystemen kennt. Für ein Serversystem sollte dieser Eintrag deaktiviert werden, um zu verhindern, dass das System versehentlich heruntergefahren wird. Ansonsten bietet dieser Eintrag eine Möglichkeit, das System ohne Administrator- Passwort herunterzufahren.

kbrequest

Hierüber können spezielle Tastenkombinationen an init weitergereicht werden. Die Dokumentation hierzu findet sich im Paket kbd.

Hier einige Beispiele für Einträge in der Datei /etc/inittab. Zunächst der Eintrag für den Runlevel, in dem das System gestartet werden soll:

id:2:initdefault:

Debian verwendet hier den Runlevel 2, dies weicht von einigen anderen Distributionen ab. Mit folgendem Eintrag wird festgelegt, welche Aktion auszuführen ist, wenn das System im Single-User-Modus gestartet wird.

~~:S:wait:/sbin/sulogin

Die Runlevel 0 bis 6 werden über die folgenden Zeilen gesteuert, genau genommen wird in jedem Fall das Skript /etc/init.d/rc mit dem Runlevel als Option aufgerufen.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

Das nächste Beispiel aktiviert die virtuellen Konsolen. Debian bietet in den Runleveln 2 und 3 sechs virtuelle Konsolen, in den Runleveln 4 und 5 ist nur die erste Konsole aktiv.

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

Die Datei /etc/inittab auf einem Debian System ist gut kommentiert, so dass mit Hilfe dieses Abschnittes und der Kommentare weitere Anpassungen leicht fallen werden. Aber Achtung: bitte jede Änderung gut prüfen, da Probleme zu einem Systemzustand führen können, in dem beispielsweise ein Login nicht möglich ist.

3.8.4 Fehlermeldungen

Mitunter kann es vorkommen, dass init nicht in der Lage ist, ein Programm zu starten. Die Ursache kann ein fehlerhafter Eintrag in der Datei /etc/inittab, oder auch ein fehlerhaftes Programm sein. Bemerkbar macht sich dies durch die Ausgabe der Zeile

init: Id "D1" respawning to fast: disabled for 5 Minutes

wobei D1 hier beispielhaft für den entsprechenden Eintrag in der Datei inittab steht. Da init nicht in der Lage ist, das Programm zu starten, wird der entsprechende Eintrag für die nächsten 5 Minuten ignoriert, um die Belastung des Systems nicht unnötig in die Höhe zu treiben.

 Impressum