Provided by:
manpages-de_0.5-5ubuntu1_all 
BEZEICHNUNG
init, telinit - Initialisierung der Kontrolle ber Prozesse und
Runlevel
SYNTAX
/sbin/init [-t sec] [0123456SsQq]
/sbin/telinit [-t sec] [0123456SsQq]
Diese Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie
die englischsprachige Handbuchseite zu Rate, indem Sie
man -LC 8 init
eingeben.
BESCHREIBUNG
init
Init ist der Vater aller Prozesse. Seine Hauptaufgabe besteht darin,
Prozesse nach einem Skript in der Datei /etc/inittab zu erzeugen (siehe
auch inittab(5)). Diese Datei hat normalerweise bestimmte Eintrge, die
init dazu veranlassen auf jeder Leitung gettys zu erzeugen, auf der
sich ein Benutzer einloggen kann. Er kontrolliert auch alle autonomen
Prozesse, die von einem bestimmten System bentigt werden.
RUNLEVEL
Ein Runlevel ist ein Softwarezustand des Systems, der es nur einer
bestimmten Gruppe von Prozessen erlaubt ausgefhrt zu werden. Die
Prozesse, die von init fr jeden dieser Runlevel erzeugt werden, sind in
der Datei /etc/inittab definiert. Init kann sich in einem von acht
Runlevel befinden, 0-6 und S oder s. Init wechselt den Runlevel, wenn
ein priviligierter Benutzer das Programm /sbin/telinit startet, das
init bestimmte Signale sendet, die ihm sagen, in welchen Runleveles
wechseln soll.
Die Runlevel 0, 1 und 6 sind reserviert. Der Runlevel 0 wird dazu
verwendet, das System anzuhalten, der Runlevel 6 iwr dafr benutzt, das
System neuzusatarten, und der Runlevel 1 wird dafr verwendet, das
System in den Single-User-Modus herunterzufahren. Der Runlevel S wird
normalerweise nicht direkt angesprungen, sondern dient nur als
Zwischenstufe fr die Skripte, die ausgefhrt werden, wenn in den
Runlevel 1 bergegangen wird. Weitere Informationen darber finden Sie
in den Handbuchseiten zu shutdown(8) und inittab(5).
Die Runlevel 7-9 sind ebenfalls gltig, jedoch nicht wirklich
dokumentiert. Das liegt daran, dass die "traditionellen"
UNIX-Varianten diese nicht benutzen. Manche werden sich vielleicht
auch wundern, dass es zwischen den Runlevel S und s keinen
ersichtlichen Unterschied gibt. Tatschlich sind beide Optionen
lediglich ein Alias fr ein und den selben Runlevel.
SYSTEMSTART
Wenn init im letzten Schritt des Bootprozesses aufgerufen wird, sucht
er nach der Datei /etc/inittab und sieht nach, ob es dort einen
initdefault-Eintrag gibt (siehe inittab(5)). initdefault bestimmt den
Anfangs-runlevel des Systems. Falls es dort keine derartige Eintragung
gibt, oder gar keine inittab-Datei existiert, so muss an der
Systemkonsole der runlevel eingegeben werden.
Die runlevel S oder s bringen das System in den Single-user Modus, und
bentigen keine /etc/inittab-Datei. Im Single-user-Modus wird auf
/dev/console /sbin/sulogin aufgerufen.
Wenn das System in den Single-user Modus bergeht, liest init die
ioctl(2)-Zustnde der Konsole in /etc/ioctl.save. Existiert diese Datei
nicht, dann initialisiert init die Leitung mit 9600 BAUD und mit
CLOCAL-Einstellungen. Wenn init den Single-User-Modus verlsst,
schreibt es die ioctl-Einstellungen in diese Datei, so dass diese
Eintrge bei der nchsten Single-User-Sitzung wiederverwendet werden
knnen.
Wenn init das erste mal in einen Multi-User-Modus eintritt, fhrt er die
boot- und bootwait-Eintrge der Datei /etc/inittab aus, die es erlauben,
dass die Dateisysteme gemountet werden knnen, bevor sich ein Benutzer
einloggen kann. Danach werden alle die runlevel betreffenden Eintrge
ausgefhrt.
Immer wenn init einen neuen Prozess startet, schaut das Programm erst
nach, ob die Datei /etc/initscript existiert. Wenn es sie gibt,
benutzt init das Skript dieser Datei um den Prozess zu starten.
Jedesmal, wenn ein Kindprozess terminiert, hlt init diese Tatsache und
den Grund, weshalb der Kindprozess gestorben ist, in den Dateien
/var/run/utmp und /var/log/wtmp fest, falls diese Dateien existieren.
RUNLEVEL-NDERUNGEN
Sobald alle vorgesehenen Prozesse erzeugt worden sind, wartet init
darauf, dass ein Kindprozess stirbt, auf ein Stromausfallsignal oder
auf eine Anweisung von /sbin/telinit, in welchen runlevel er wechseln
soll. Wenn eine der drei oben genannten Bedingungen erfllt ist,
untersucht init nochmals die /etc/inittab-Datei, da dieser Datei
jederzeit neue Eintrge hinzugefgt werden knnen. Man kann den
schlafenden init-Prozess auch mit den Kommandos Q oder q aufwecken, was
ihn dazu veranlat, nochmals die /etc/inittab-Datei zu examinieren.
Wenn init sich nicht im Single-User Modus befindet, und ein
Stromausfallsignal (SIGPWR) empfngt, liest es die Datei
/etc/powerstatus. Anschlieend wird ein Befehl anhand des Inhalts der
Datei gestartet:
F(AIL) Strom fllt aus, die USV versorgt den Rechner mit Strom. Die
powerwait- und powerfail-Eintrge werden ausgefhrt.
O(K) Strom wurde wiederhergestellt, es werden die powerokwait-Eintrge
ausgefhrt.
L(OW) Strom wird knapp und die USV geht auf dem Zahnfleisch. Die
powerfailnow-Eintrge werden ausgefhrt.
Wenn /etc/powerstatus nicht existiert oder etwas anderes enthlt als die
Buchstaben F, O oder L, wird init sich so verhalten als htte es den
Buchstaben F gelesen.
Die Verwendung von SIGPWR und /etc/powerstatus werden nicht empfohlen.
Wenn etwas mit init interagieren mchte, sollte der Kontrollkanal
/dev/initctl verwendet werden - siehe Quellcode des sysvinit-Pakets fr
mehr Dokumentation darber.
Wenn init angewiesen wird den runlevel zu wechseln, wird das Warnsignal
SIGTERM an alle Prozesse geschickt, die nicht in der Datei /etc/inittab
fr den neuen runlevel vorgesehen sind. Init wartet dann 5 Sekunden
bevor er diese Prozesse mit dem kill-Signal SIGKILL gewaltsam
terminiert. Achtung: init nimmt an, dass alle diese Prozesse (und
deren Nachfahren) in derselben Prozessgruppe verblieben sind, die init
ursprnglich fr sie erzeugt hat (siehe setpgrp(2)). Wenn irgendeiner
dieser Prozesse seine Prozessgruppenzugehrigkeit gendert hat, wird er
diese Signale nicht erhalten! Solche Prozesse mssen einzeln terminiert
werden!
TELINIT
Das Programm /sbin/telinit ist auf /sbin/init gelinkt. Er wird mit
Argumenten, die aus nur einem Buchstaben bestehen gesteuert, und sendet
init Anweisungen (Signale), welche Aktionen dieses auszufhren hat. Die
folgenden Argumente dienen als Anweisungen fr telinit:
0,1,2,3,4,5 oder 6
befehlen init in den angegebenen Runlevel zu wechseln.
a,b,c befehlen /sbin/init nur die Eintrge der Datei /etc/inittab
auszufhren, die den Runlevel a, b oder c haben.
Q oder q
befehlen /sbin/telinit nocheinmal die Datei /etc/inittab
einzulesen.
S oder s
befehlen /sbin/telinit in den Single-User-Modus zu schalten.
/sbin/telinit kann den init-Prozess auch anweisen, wie viel Zeit dieser
zwischen dem Senden des TERM und des KILL Signals warten soll; die
Standardeinstellung ist 5 Sekunden, kann jedoch durch die Option -t sec
verndert werden.
/sbin/telinit kann nur von Benutzern mit einer entsprechenden
Berechtigung aufgerufen werden.
Das init-Programm berprft, ob es als init oder telinit gestartet wurde,
indem es auf seine Prozess-ID schaut; die reelle Prozess-ID von init
ist immer 1. Von daher darf man einfach auch init anstelle von telinit
verwenden oder eines Aliases.
UMGEBUNG
Init setzt folgende Umgebungsvariablen fr alle seine Kindprozesse:
PATH Wird standardmig auf
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin gesetzt.
INIT_VERSION
Wie der Name schon sagt. Ntzlich, wenn ein Skript direkt von
init ausgefhrt werden soll.
RUNLEVEL
Der augenblickliche Runlevel des Systems.
PREVLEVEL
Der vorherige Runlevel (ntzlich nach einer nderung des
Runlevels).
CONSOLE
Die System-KOnsole. Diese wird tatschlich vom Kernel vererbt;
wenn sie jedoch nicht gesetzt ist, wird init sie auf
/dev/console setzen als Voreinstellung.
BOOTSIGNALE
Es ist mglich init eine Reihe von Bootsignalen (bootflags) vom
Bootmonitor aus (d.h. vom LILO aus) zu bergeben. Init akzeptiert
folgende Signale:
-s, S, single
Bootet im Single-user Modus. In diesem Modus wird zuerst die
Datei /etc/inittab eingelesen; danach werden, noch bevor die
Single-User-Shell gestartet wird, die Bootskripte der Datei
/sbin/init.d/boot ausgefhrt.
1,2,3,4 oder 5
Weist init an, in welchen Runlevel gebootet werden soll.
-b, emergency
Gibt init die Anweisung direkt in den Single-User-Modus zu
booten, ohne irgendwelche Startup-Skripte auszufhren.
-a, auto
Der LILO-Bootloader fgt das Wort an den Kernel. init ist in der
Lage, es zu lesen.
-z xxx Das Argument zu -z wird ignoriert. Sie knnen es benutzen, um
die Kommandozeile etwas zu verlngern, damit sie etwas mehr Platz
auf dem Stack reserviert. Init kann anschlieend die
Kommandozeile derart modifizieren, dass ps(1) den aktuellen
Runlevel anzeigt.
SCHNITTSTELLE
Init lauscht auf einem Fifo in /dev, /dev/initctl, auf Nachrichten.
Telinit benutzt diesen, um mit init zu kommunizieren. Die Schnittstelle
ist noch nicht sehr ausfhrlich dokumentiert. Wer interessiert ist, mge
die Datei initreq.h im Quellcode von init studieren.
SIGNALE
Init reagiert auf verschiedene Signale:
SIGHUP
Init sucht nach /etc/initrunlvl und /var/log/initrunlvl. Wenn
eine dieser Dateien existiert und einen ASCII-Runlevel enthlt,
wechselt init in den neuen Runlevel. Dieses existiert nur fr
Abwrtskompatibilitt! In normalen Fllen (wenn die Dateien nicht
existieren) verhlt sich init, als wenn telinit q ausgefhrt wurde.
SIGUSR1
Beim Emfang dieses Signals schliet init sein Kontroll-Fifo
/dev/initctl und ffnet ihn wieder. Das ist sinnvoll fr Boot-
Skripte, wenn /dev neu gemountet wird.
SIGINT
Normalerweise sendet der Kernel dieses Signal an init, wenn CTRL-
ALT-DEL gedrckt wurde. Es aktiviert die ctrlaltdel-Aktion.
SIGWINCH
Der Kernel sendet dieses Signal, wenn die KeyboardSignal-Taste
gedrckt wurde. Es aktiviert die kbdrequest-Aktion.
KONFORM ZU
Init ist kompatibel zum System V init. Er arbeitet eng mit den
Skripten zusammen, die in den Verzeichnissen /sbin/init.d und
/sbin/init.d/rc{runlevel 1-6}.d untergebracht sind. Wenn das System
dieser Konvention folgt, sollte sich in diesem Verzeichnis eine README
-Datei befinden, die erklrt wie diese Skripte funktionieren.
DATEIEN
/etc/inittab
/etc/initscript
/dev/console
/etc/ioctl.save
/var/run/utmp
/var/log/wtmp
/dev/initctl
WARNUNGEN
Init geht davon aus, dass alle Prozesse und Kindprozesse in der selben
Prozessgruppe verbleiben, die ursprnglich fr sie eingerichtet worden
ist. Wenn einer dieser Prozesse in eine andere Gruppe wechselt, kann
init ihn nicht mehr beenden, und es kann passieren, dass man in einem
Zustand landet, in dem zwei Prozesse von einer Terminalleitung Befehle
einlesen wollen.
DIAGNOSE
Wenn init herausfindet, dass es kontinuierlich einen Eintrag fter als
10 mal in 2 Minuten neu erzeugt, wird es annehmen, dass ein Fehler in
der Befehlszeile vorliegt, einen Fehler erzeugen, Meldungen auf die
Systemkonsole erstatten und sich weigern, den Eintrag auszufhren, bis 5
Minuten vergangen sind oder es ein Signal empfngt. Dieses verhindert,
dass Systemressourcen verschwendet werden, wenn jemand einen Tippfehler
in /etc/inittab einbaut oder das zum Eintrag gehrende Programm lscht.
AUTOR
Miquel van Smoorenburg <miquels@cistron.nl>, ursprngliche Manpage von
Michael Haardt <u31b3hs@pool.informatik.rwth-aachen.de>, bersetzung
Martin Okrslar <okrslar@informatik.uni-muenchen.de> und berarbeitung
von Martin Schulze <joey@infodrom.north.de>.
SIEHE AUCH
getty(1), login(1), sh(1), who(1), shutdown(1), kill(2), inittab(5),
inscript(5), utmp(5).
11. February 2000 INIT(8)