Manpages

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 miquels [AT] cistron.nl">Miquel van Smoorenburg. Diese Handbuchseite wurde von lederer [AT] francium.de">Sebastian Lederer geschrieben und von u31b3hs [AT] pool.de">Michael Haardt überarbeitet.

SIEHE AUCH

init(8), telinit(8)