inittab - Format der Datei inittab für den SysV-kompatiblen Init-Prozess
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
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
/etc/inittab
Der Autor von
init(8) ist
Miquel van
Smoorenburg Diese Handbuchseite wurde von
Sebastian
Lederer geschrieben und von
Michael
Haardt überarbeitet.
init(8),
telinit(8)