INITTAB(5)

BEZEICHNUNG
inittab - Format der Datei inittab für den SysV-kompatiblen Init-Prozess

BESCHREIBUNG
Die Datei inittab beschreibt, welche Prozesse beim Booten und während des normalen Betriebs gestartet werden (z. B. /etc/init.d/boot, /etc/init.d/rc, gettys …). init(8) unterscheidet mehrere Runlevel, von denen jeder einen eigenen Satz von Prozessen umfasst, die gestartet werden. Gültige Runlevel sind 0-6 plus A, B und C für ondemand-Einträge. Ein Eintrag in der Datei inittab hat folgendes Format:

    ID:Runlevel:Aktion:Prozess

Zeilen mit einer Raute »#« am Anfang werden ignoriert.

ID  ist eine eindeutige Folge von 1-4 Zeichen zur Identifikation eines Eintrags in inittab. (Für Versionen von SysVinit, die mit der alten Libc5 (< 5.2.18) oder a.out-Bibliotheken kompiliert wurden, ist das Limit 2 Zeichen).

    Hinweis: Traditionell ist für Getty und andere Anmeldeverfahren der Wert des ID-Felds der gleiche wie die Endung des entsprechenden ttys gehalten, z.B. 1 für tty1. Einige alte Anmeldeabrechnungsprogramme könnten das voraussetzen, obwohl der Verfasser sich keines vorstellen kann.

Runlevel
    listet die Runlevel, für die die angegebene Aktion durchgeführt werden soll.

Aktion
    beschreibt, was getan werden soll.

Prozess
    gibt an, welcher Prozess ausgeführt werden soll. Wenn das Prozess-Feld mit einem »+«-Zeichen beginnt, führt Init(8) keine utmp- und wtmp-Abrechnung (accounting) für diesen Prozess. Dies ist für Gettys erforderlich, die darauf bestehen, das selber zu erledigen. Dies ist auch ein historischer Fehler. Die Länge dieses Feldes ist auf 127 Zeichen begrenzt.

    Please note that including certain characters in the process field will result in init attempting to launch a shell to interpret the command contained in the process field. The characters which will trigger a shell are: ~`!$^&*()=|}[];

    On systems which do not have a shell to be launched or which do not wish to use a shell to interpret the process field, the process field can be prefixed with the @ symbol. The @ will be ignored and everything followed will be treated as a command to be launched, literally, by the init service.

    In cases where both a + and @ sign are to be used (to turn off logging and shell interpretation), place the + sign before the @ symbol. Both flags will be handled and then everything following the @ will be handled by init

Das Feld Runlevel kann mehrere Zeichen für verschiedene Runlevel enthalten. Beispielsweise legt 123 fest, dass der Prozess in den Runleveln 1, 2 und 3 gestartet werden soll. Die Runlevel für ondemand-Einträge können A, B oder C enthalten. Das Feld Runlevel der Einträge sysinit, boot und bootwait wird ignoriert.

Bei einem Wechsel des Runlevels des Systems werden alle laufenden Prozesse, die nicht im neuen Runlevel laufen sollen, beendet; zuerst mit SIGTERM, dann mit SIGKILL.

Gültige Einträge für das Aktion-Feld sind:

respawn
    Der Prozess wird jedesmal, wenn er terminiert, neu gestartet (z.B. getty).

wait
    Der Prozess wird einmal beim Eintritt in den Runlevel gestartet und Init(8) wartet auf den Abschluss des Prozesses.

once
    Der Prozess wird einmal während der Initialisierung des Runlevels ausgeführt.

boot
    Der Prozess wird ausgeführt, während das System hochfährt. Das Feld Runlevel wird ignoriert.

bootwait
    Der Prozess läuft während des Systemstarts und Init(8) wartet auf seinen Abschluss (z. B. /etc/rc). Das Feld Runlevel wird ignoriert.

off Es wird keine Aktion durchgeführt.

ondemand
    Ein mit ondemand gekennzeichneter Prozess wird jedesmal ausgeführt, wenn das angegebene ondemand-Runlevel aufgerufen wird. Es erfolgt aber kein Wechsel des Runlevels. (Die ondemand-Runlevel sind »a«, »b« und »c«.)

initdefault
    Ein initdefault-Eintrag legt den Runlevel nach dem Systemstart fest. Fehlt dieser Eintrag, wird init(8) auf der Konsole nach dem Runlevel fragen. Das Prozess-Feld wird ignoriert.

sysinit
    Dieser Prozess läuft beim Systemstart vor den boot- und bootwait-Einträgen. Das Feld Runlevel wird ignoriert.

powerwait
    Dieser Prozess wird ausgeführt, wenn die Spannung der Stromversorgung sinkt. init(8) wird üblicherweise von einem Prozess informiert, der mit der USV kommuniziert. init(8) wartet das Ende dieses Prozesses ab, bevor es weiter macht.

powerfail
    Wie powerwait; init(8) wartet aber nicht auf den Abschluss dieses Prozesses.

powerokwait
    Dieser Prozess wird ausgeführt, sobald init(8) erfährt, dass die Spannungsversorgung wieder normal funktioniert.

powerfailnow
    Dieser Prozess wird ausgeführt, wenn init(8) erfährt, dass die Batterie der externen USV fast leer ist und ein Stromausfall droht. Voraussetzung ist natürlich, dass USV und Überwachungsprozess diesen Zustand erkennen können.

ctrlaltdel
    Der Prozess wird ausgeführt, wenn init(8) das Signal SIGINT erhält. Dies bedeutet, dass jemand auf der System-Konsole die Tastenkombination STRG-ALT-ENTF eingegeben hat. Normalerweise will man eine Art von shutdown ausführen; entweder in den Single-User-Runlevel wechseln oder den Rechner neu starten.

kbrequest
    Der Prozess wird ausgeführt, wenn der Tastatur-Handler init(8) signalisiert, dass auf der Tastatur der Konsole eine bestimmte Tastenkombination eingegeben wurde.

    Die Dokumentation für diese Funktion ist noch nicht vollständig. Zusätzliche Dokumentation finden Sie in den kbd-x.xx-Paketen (das aktuellste war beim Schreiben dieser Handbuchseite kbd-0.94). Wahrscheinlich möchten Sie der »KeyboardSignal«-Aktion eine Tastenkombinationen zuordnen. Um beispielsweise die Kombination »Alt Aufwärtspfeil« zu verwenden, tragen Sie in Ihre keymaps-Datei ein:

    alt keycode 103 = KeyboardSignal

BEISPIELE
Dies ist ein Beispiel für eine inittab, die der alten Linux-inittab ähnelt:

    # inittab für Linux
    id:1:initdefault:
    rc::bootwait:/etc/rc
    1:1:respawn:/etc/getty 9600 tty1
    2:1:respawn:/etc/getty 9600 tty2
    3:1:respawn:/etc/getty 9600 tty3
    4:1:respawn:/etc/getty 9600 tty4

Diese inittab-Datei führt beim Systemstart /etc/rc aus und startet Gettys auf tty1 bis tty4.

Eine ausgefeiltere inittab mit verschiedenen Runleveln (siehe die innenstehenden Kommentare):

    # Standard-Runlevel
    id:2:initdefault:

    # Skript für Konfiguration/Initialisierung während
    # des Systemstarts
    si::sysinit:/etc/init.d/rcS

    # Das läuft im Single-User-Modus.
    ~:S:wait:/sbin/sulogin

    # /etc/init.d führt beim Wechsel des Runlevel die
    # S- und K-Skripte aus.
    #
    # Runlevel 0 ist Halt.
    # Runlevel 1 ist der Single-User-Betrieb.
    # Runlevel 2-5 sind Mehrbenutzer-Modi.
    # Runlevel 6 ist der Neustart (Reboot).

    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

    # Was wird beim »Affengriff« getan?
    ca::ctrlaltdel:/sbin/shutdown -t1 -h now

    # Runlevel 2,3: Getty auf virtuellen Konsolen
    # Runlevel   3: Getty auf Terminal (ttyS0) und Modem (ttyS1)
    1:23:respawn:/sbin/getty tty1 VC linux
    2:23:respawn:/sbin/getty tty2 VC linux
    3:23:respawn:/sbin/getty tty3 VC linux
    4:23:respawn:/sbin/getty tty4 VC linux
    S0:3:respawn:/sbin/getty -L 9600 ttyS0 vt320
    S1:3:respawn:/sbin/mgetty -x0 -D ttyS1

DATEIEN
/etc/inittab

AUTOR
Der Autor von init(8) ist Miquel van Smoorenburg (miquels@cistron.nl). Diese Handbuchseite wurde von Sebastian Lederer (lederer@francium.informatik.uni-bonn.de) geschrieben und von Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de) überarbeitet.

SIEHE AUCH
init(8), telinit(8)