Um jetzt einmal genauer darzustellen, wie die Einstellungen in der Datei /etc/inittab vorzunehmen sind, wird im Folgenden eine beispielhafte solche Datei dargestellt und beschrieben.

Jede Zeile innerhalb dieser Datei, die mit einem Doppelkreuz (#) beginnt, wird als Kommentar gewertet und nicht ausgeführt. Alle anderen Zeilen haben immer den gleichen Aufbau:

Symbolischer Name:Liste der Runlevels:Art der Aktion:Befehl

Jede Zeile enthält also verschiedene, durch Doppelpunkt (:) getrennte Felder. Die Bedeutung der einzelnen Felder ist im Folgenden genauer dargestellt:

Symbolischer Name

Ein Name für die Zeile, die meist aus zwei Zeichen besteht. Wird benutzt, um bei Fehlern genau den jeweiligen Prozeß angeben zu können, bei dem der Fehler aufgetreten ist. Diese Namen sind beliebig wählbar, müssen aber eindeutig sein.

Liste der Runlevels

Eine einfache Liste der Runlevels, in denen diese Zeile ausgeführt werden soll. Die Runlevels sind ohne Leerzeichen direkt hintereinander zu schreiben. Der Eintrag 234 bedeutet also, dass diese Zeile im Runlevel 2, 3 und 4 gültig ist.

Art der Aktion

Dieser Eintrag beschreibt, auf welche Art der folgende Befehl gestartet werden soll. Gültige Werte sind:

respawn

Der Prozess wird jedesmal neu gestartet, sobald er beendet ist. (Typisches Beispiel ist Getty)

wait

Der Prozess wird einmal gestartet, wenn in den spezifizierten Runlevel gewechselt wird. Init wartet auf seine Abarbeitung und setzt erst dann seine Arbeit fort.

once

Der Prozess wird genau einmal gestartet, wenn in den spezifizierten Runlevel gewechselt wird. Init wartet nicht auf das Ende dieses Prozesses. Damit können direkt Daemon-Prozesse gestartet werden.

boot

Der Befehl wird beim Booten des Systems abgearbeitet. Das Feld mit den Runleveln wird ignoriert.

bootwait

Wie boot, jedoch wartet init auf die Abarbeitung des Befehls, bevor die Arbeit fortgesetzt wird.

initdefault

Spezieller Wert, der nur einmal in der Datei auftauchen darf. Er legt den Runlevel fest, der als voreingestellter gestartet wird. Das Runlevel-Feld darf nur einen Runlevel enthalten. Fehlt dieser Eintrag, so fragt der Init-Prozess beim Start, welcher Runlevel aktiviert werden soll.

powerwait

Der genannte Befehl wird ausgeführt, wenn die Spannungsversorgung abfällt. Init wird darüber von einem Prozeß informiert, der mit der USV verbunden ist. Init wartet, bis der Prozess abgearbeitet ist.

powerfail

Wie Powerwait, nur wartet init nicht auf die Abarbeitung, sondern fährt gleich fort.

powerokwait

Der Prozess, der abgearbeitet wird, sobald init darüber informiert ist, dass die Spannung wieder da ist.

powerfailnow

Dieser Prozess wird abgearbeitet, wenn init gemeldet bekommt, dass die Batterie der USV so gut wie leer ist und die Spannung trotzdem noch nicht wieder da ist. (Funktioniert natürlich nur, wenn die USV das mitteilen kann.)

ctrlaltdel

Legt fest, was passieren soll, wenn Strg-Alt-Entf gedrückt wurde.

Befehl

Der Befehl (bzw. das Shellscript), der abgearbeitet werden soll. Mit diesem Wissen können wir uns jetzt einmal eine beispielhafte /etc/inittab anschauen. Ich habe hier einfach die der SuSE 6.1 Version von Linux genommen und mit deutschen Kommentaren versehen:


#
# /etc/inittab
#
# Voreingestellter Runlevel ist 3 
id:3:initdefault:

# Systemcheck beim Starten
# Für einen speziellen Notfall-Runlevel (I) wird das Programm
# /sbin/init.d/boot gestartet und init wartet auf seine Abarbeitung
# (bootwait)
si:I:bootwait:/sbin/init.d/boot

# Die grundlegenden Scripts, die im jeweiligen Runlevel gestartet werden
# sollen. Das heißt in diesem Fall, dass jeweils das Programm /sbin/init.d/rc
# gestartet wird. Als Parameter bekommt es den aktuellen Runlevel mit. 
# Das ist sehr SuSE spezifisch. In anderen Systemen werden einfach
# verschiedene Scripts gestartet.
l0:0:wait:/sbin/init.d/rc 0
l1:1:wait:/sbin/init.d/rc 1
l2:2:wait:/sbin/init.d/rc 2
l3:3:wait:/sbin/init.d/rc 3
#l4:4:wait:/sbin/init.d/rc 4
#l5:5:wait:/sbin/init.d/rc 5
l6:6:wait:/sbin/init.d/rc 6

# Was soll im Single-User-Modus passieren
# Zunächst wird wieder das Programm /sbin/init.d/rc mit dem Parameter S
# gestartet und auf seine Abarbeitung gewartet.
ls:S:wait:/sbin/init.d/rc S

# Dann wird das Programm /sbin/sulogin aufgerufen und jedesmal wieder
# gestartet, sobald es beendet ist. (respawn)
~~:S:respawn:/sbin/sulogin

# Was passiert wenn Strg-Alt-Entf gedrückt wird
ca::ctrlaltdel:/sbin/shutdown -r -t 4 now

# Die Einstellungen für die Zusammenarbeit mit USVs 
pf::powerwait:/sbin/init.d/powerfail    start
pn::powerfailnow:/sbin/init.d/powerfail now
pn::powerfail:/sbin/init.d/powerfail now
po::powerokwait:/sbin/init.d/powerfail  stop

# für ARGO USV
sh:12345:powerfail:/sbin/shutdown -h now THE POWER IS FAILING

# Die Getty-Programme für die normalen Runlevel
1:123:respawn:/sbin/mingetty --noclear tty1
2:123:respawn:/sbin/mingetty tty2
3:123:respawn:/sbin/mingetty tty3
4:123:respawn:/sbin/mingetty tty4
5:123:respawn:/sbin/mingetty tty5
6:123:respawn:/sbin/mingetty tty6
#
#  Note: Do not use tty7 in runlevel 3, this virtual line
#  is occupied by the programm xdm.
#
# modem getty. Im Runlevel 2 und 3 wird auf die Modemleitung ein Getty
# gelegt.
# mo:23:respawn:/usr/sbin/mgetty -s 38400 modem

# end of /etc/inittab