Kapitel 4. Betrieb
Zurück | 4.8 Systemstart und -stop bei Debian | Weiter

## 4.8 Systemstart und -stop bei Debian

### 4.8.1 System starten

Der Start eines Debian-System ä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 dieser ist festgelegt das 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. Aus Gründen der Kompatibilität werden abschliessend die Skripte in `/etc/rc.boot/` ausgeführt.

Debian verwendet das vom Unix System V eingeführte Konzept verschiedener Zustände des Systems, die sogenannten Runlevel. Ein Runlevel ist ein Softwarezustand 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 neuzustarten.

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

  Sogenannte „ondemand“-Runlevel. Siehe inittab.

### 4.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+DEL 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.

### 4.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 neugestartet falls das Programm beendet wird.

wait

  Der Prozess wird beim wechsel in den angegebenen Runlevel gestartet und `init` wartet bis der Prozess beeendet 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 informiert, durch ein Programm welches 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 das nur noch für kurze Zeit der Betrieb aufrecht erhalten werden kann, so wird dieser Eintrag ausgeführt und das System wird herruntergefahren.

ctrlaltdel

  Wird die Tastenkombination STRG+ALT+ENTF gedrückt, so führt dies zum herrunterfahren das Systems, ähnlich wie man es von anderen Betriebssystemen kennt. Für ein Serversystem sollte dieser Eintrag deaktiviert werden um zu verhindern das 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 es bei Problemen zu einem Systemzustand führen kann in dem beispielsweise ein Login nicht möglich ist.

### 4.8.4 Fehlermeldungen

Mitunter kann es vorkommen das `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.

Zurück | Nach oben | Weiter
4.7 Virtuelle Konsolen | Zum Anfang | 4.9 Kommandozeile und Dokumentation

© 1999-2006 Frank Ronneburg - Dieser Inhalt ist unter einem Creative Commons Namensnennung - Nicht-kommerziell - Keine Bearbeitung Lizenzvertrag lizenziert (creativecommons.org/licenses/by-nc-nd/2.0/de/legalcode).