1 .\" This is free documentation; you can redistribute it and/or
2 .\" modify it under the terms of the GNU General Public License as
3 .\" published by the Free Software Foundation; either version 2 of
4 .\" the License, or (at your option) any later version.
6 .\" The GNU General Public License's references to "object code"
7 .\" and "executables" are to be interpreted as the output of any
8 .\" document formatting or typesetting system, including
9 .\" intermediate and printed output.
11 .\" This manual is distributed in the hope that it will be useful,
12 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
13 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 .\" GNU General Public License for more details.
16 .\" You should have received a copy of the GNU General Public
17 .\" License along with this manual; if not, write to the Free
18 .\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
21 .\" Translated into german by Martin Okrslar <okrslar@cip.informatik.uni-muenchen.de>
22 .\" Modified Fri Jan 12 01:15:29 2001 by Martin Schulze <joey@infodrom.north.de>
24 .TH INIT 8 "11. February 2000" "" "Dienstprogramme zur Systemverwaltung"
26 init, telinit \- Initialisierung der Kontrolle über Prozesse und Runlevel
40 ist der Vater aller Prozesse. Seine Hauptaufgabe besteht darin, Prozesse nach
41 einem Skript in der Datei
43 zu erzeugen (siehe auch
45 Diese Datei hat normalerweise bestimmte Einträge, die
46 \fBinit\fP dazu veranlassen auf jeder Leitung
49 der sich ein Benutzer einloggen kann. Er kontrolliert
50 auch alle autonomen Prozesse, die von einem bestimmten System benötigt
55 ist ein Softwarezustand des Systems, der es nur
56 einer bestimmten Gruppe von Prozessen erlaubt ausgeführt zu werden.
59 für jeden dieser Runlevel erzeugt werden, sind in der Datei
63 kann sich in einem von acht Runlevel befinden,
70 wechselt den Runlevel, wenn ein priviligierter Benutzer das Programm
74 bestimmte Signale sendet, die ihm sagen, in welchen Runleveles
78 .BR 0 ", " 1 " und " 6
79 sind reserviert. Der Runlevel
81 wird dazu verwendet, das System anzuhalten, der Runlevel
83 iwr dafür benutzt, das System neuzusatarten, und der Runlevel
85 wird dafür verwendet, das System in den Single-User-Modus
86 herunterzufahren. Der Runlevel
88 wird normalerweise nicht direkt angesprungen, sondern dient nur als
89 Zwischenstufe für die Skripte, die ausgeführt werden, wenn in den
92 übergegangen wird. Weitere Informationen darüber finden Sie in den
100 sind ebenfalls gültig, jedoch nicht wirklich dokumentiert. Das liegt
101 daran, dass die "traditionellen" UNIX\-Varianten diese nicht benutzen.
102 Manche werden sich vielleicht auch wundern, dass es zwischen den
107 keinen ersichtlichen Unterschied gibt. Tatsächlich sind beide
108 Optionen lediglich ein Alias für ein und den selben Runlevel.
113 im letzten Schritt des Bootprozesses aufgerufen wird,
114 sucht er nach der Datei
116 und sieht nach, ob es dort einen
117 .BR initdefault \-Eintrag
122 .RI Anfangs\- runlevel
124 Falls es dort keine derartige Eintragung gibt, oder gar keine
126 existiert, so muss an der Systemkonsole der
135 bringen das System in den
136 Single-user Modus, und benötigen keine
137 .IR /etc/inittab \-Datei.
138 Im Single-user-Modus wird auf
143 Wenn das System in den Single-user Modus übergeht, liest
146 .BR ioctl (2)\-Zustände
148 .IR /etc/ioctl.save .
150 diese Datei nicht, dann initialisiert
152 die Leitung mit 9600 BAUD und mit
153 .BR CLOCAL \-Einstellungen.
156 den Single-User-Modus verlässt, schreibt es die
157 .IR ioctl \-Einstellungen
158 in diese Datei, so dass diese Einträge bei der nächsten Single-User-Sitzung
159 wiederverwendet werden können.
163 das erste mal in einen Multi-User-Modus eintritt, führt
167 .BR bootwait \-Einträge
170 aus, die es erlauben,
171 dass die Dateisysteme gemountet werden können, bevor sich ein Benutzer
172 einloggen kann. Danach werden alle die
179 einen neuen Prozess startet, schaut das Programm erst nach,
182 existiert. Wenn es sie gibt, benutzt
184 das Skript dieser Datei um den Prozess zu starten.
186 Jedesmal, wenn ein Kindprozess terminiert, hält
188 diese Tatsache und den Grund, weshalb der Kindprozess gestorben ist, in den
193 fest, falls diese Dateien existieren.
195 .SH RUNLEVEL-ÄNDERUNGEN
196 Sobald alle vorgesehenen Prozesse erzeugt worden sind, wartet
198 darauf, dass ein Kindprozess stirbt, auf ein Stromausfallsignal
199 oder auf eine Anweisung von
203 er wechseln soll. Wenn eine der drei oben genannten Bedingungen
204 erfüllt ist, untersucht
207 .IR /etc/inittab \-Datei,
209 Datei jederzeit neue Einträge hinzugefügt werden können. Man kann den
212 auch mit den Kommandos
216 aufwecken, was ihn dazu veranlaßt, nochmals die
217 .IR /etc/inittab \-Datei
222 sich nicht im Single-User Modus befindet, und ein
223 Stromausfallsignal (SIGPWR) empfängt, liest es die Datei
224 .IR /etc/powerstatus .
225 Anschließend wird ein Befehl anhand des Inhalts der Datei gestartet:
227 Strom fällt aus, die USV versorgt den Rechner mit Strom. Die
228 .BR powerwait "\- und " powerfail \-Einträge
231 Strom wurde wiederhergestellt, es werden die
232 .BR powerokwait \-Einträge
235 Strom wird knapp und die USV geht auf dem Zahnfleisch. Die
236 .BR powerfailnow \-Einträge
241 nicht existiert oder etwas anderes enthält als die Buchstaben
242 .BR F ", " O " oder " L,
245 sich so verhalten als hätte es den Buchstaben
249 Die Verwendung von SIGPWR und
251 werden nicht empfohlen. Wenn etwas mit
253 interagieren möchte, sollte der Kontrollkanal
255 verwendet werden - siehe Quellcode des sysvinit-Pakets für mehr
256 Dokumentation darüber.
262 zu wechseln, wird das Warnsignal
264 an alle Prozesse geschickt, die nicht in der Datei
270 wartet dann 5 Sekunden bevor er diese Prozesse mit dem kill-Signal
272 gewaltsam terminiert. Achtung:
275 alle diese Prozesse (und deren Nachfahren) in derselben Prozessgruppe
278 ursprünglich für sie erzeugt hat (siehe
280 Wenn irgendeiner dieser Prozesse seine
281 Prozessgruppenzugehörigkeit geändert hat, wird er diese Signale nicht
282 erhalten! Solche Prozesse müssen einzeln terminiert werden!
290 wird mit Argumenten, die aus nur einem Buchstaben bestehen gesteuert, und
293 Anweisungen (Signale), welche Aktionen dieses auszuführen
294 hat. Die folgenden Argumente dienen als Anweisungen für
298 .BR 0 , 1 , 2 , 3 , 4 , 5 " oder " 6
301 in den angegebenen Runlevel zu wechseln.
306 nur die Einträge der Datei
308 auszuführen, die den Runlevel
309 .BR a ", " b " oder " c
322 in den Single-User-Modus zu schalten.
327 auch anweisen, wie viel
328 Zeit dieser zwischen dem Senden des TERM und des KILL Signals warten
329 soll; die Standardeinstellung ist 5 Sekunden, kann jedoch durch die
335 kann nur von Benutzern mit einer entsprechenden Berechtigung aufgerufen werden.
343 gestartet wurde, indem es auf seine Prozess-ID schaut; die reelle
346 ist immer 1. Von daher darf man einfach auch
350 verwenden oder eines Aliases.
354 setzt folgende Umgebungsvariablen für alle seine Kindprozesse:
357 Wird standardmäßig auf
358 .I /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
362 Wie der Name schon sagt. Nützlich, wenn ein Skript direkt von init
363 ausgeführt werden soll.
366 Der augenblickliche Runlevel des Systems.
369 Der vorherige Runlevel (nützlich nach einer Änderung des Runlevels).
372 Die System-KOnsole. Diese wird tatsächlich vom Kernel vererbt; wenn
373 sie jedoch nicht gesetzt ist, wird
377 setzen als Voreinstellung.
382 eine Reihe von Bootsignalen (bootflags) vom
383 Bootmonitor aus (d.h. vom LILO aus) zu übergeben.
385 akzeptiert folgende Signale:
387 .BR "\-s" ", " S ", " single
388 Bootet im Single-user Modus. In diesem Modus wird zuerst die Datei
390 eingelesen; danach werden, noch bevor die
391 Single-User-Shell gestartet wird, die Bootskripte der Datei
395 .BR 1 , 2 , 3 , 4 " oder " 5
398 an, in welchen Runlevel gebootet werden soll.
400 .BR \-b ", " emergency
403 die Anweisung direkt in den Single-User-Modus zu booten,
404 ohne irgendwelche Startup-Skripte auszuführen.
407 .\" ACHTUNG: Englisches Original ergibt keinen Sinn...
408 Der LILO-Bootloader fügt das Wort an den Kernel.
410 ist in der Lage, es zu lesen.
415 wird ignoriert. Sie können es benutzen, um die Kommandozeile etwas zu
416 verlängern, damit sie etwas mehr Platz auf dem Stack reserviert.
418 kann anschließend die Kommandozeile derart modifizieren, dass
420 den aktuellen Runlevel anzeigt.
424 lauscht auf einem Fifo in
425 .IR /dev ", " /dev/initctl ,
428 benutzt diesen, um mit
430 zu kommunizieren. Die Schnittstelle ist noch nicht sehr ausführlich
431 dokumentiert. Wer interessiert ist, möge die Datei
433 im Quellcode von init studieren.
436 Init reagiert auf verschiedene Signale:
442 .IR /var/log/initrunlvl .
443 Wenn eine dieser Dateien existiert und einen ASCII-Runlevel enthält,
446 in den neuen Runlevel.
447 .I Dieses existiert nur für Abwärtskompatibilität!
448 In normalen Fällen (wenn die Dateien nicht existieren) verhält sich
455 Beim Emfang dieses Signals schließt init sein Kontroll-Fifo
457 und öffnet ihn wieder. Das ist sinnvoll für Boot-Skripte, wenn
462 Normalerweise sendet der Kernel dieses Signal an
464 wenn CTRL-ALT-DEL gedrückt wurde. Es aktiviert die
465 .IR ctrlaltdel \-Aktion.
468 Der Kernel sendet dieses Signal, wenn die
469 .IR KeyboardSignal \-Taste
470 gedrückt wurde. Es aktiviert die
471 .IR kbdrequest \-Aktion.
475 ist kompatibel zum System V init. Er arbeitet eng mit
476 den Skripten zusammen, die in den Verzeichnissen
479 .I /sbin/init.d/rc{runlevel 1\-6}.d
480 untergebracht sind. Wenn das
481 System dieser Konvention folgt, sollte sich in diesem Verzeichnis eine
483 befinden, die erklärt wie diese Skripte funktionieren.
498 geht davon aus, dass alle Prozesse und Kindprozesse
499 in der selben Prozessgruppe verbleiben, die ursprünglich für
500 sie eingerichtet worden ist. Wenn einer dieser Prozesse in eine andere
501 Gruppe wechselt, kann
502 .B init ihn nicht mehr beenden, und es kann
503 passieren, dass man in einem Zustand landet, in dem zwei Prozesse von
504 einer Terminalleitung Befehle einlesen wollen.
509 herausfindet, dass es kontinuierlich einen Eintrag öfter als 10 mal in
510 2 Minuten neu erzeugt, wird es annehmen, dass ein Fehler in der
511 Befehlszeile vorliegt, einen Fehler erzeugen, Meldungen auf die
512 Systemkonsole erstatten und sich weigern, den Eintrag auszuführen, bis
513 5 Minuten vergangen sind oder es ein Signal empfängt. Dieses
514 verhindert, dass Systemressourcen verschwendet werden, wenn jemand einen
517 einbaut oder das zum Eintrag gehörende Programm löscht.
520 Miquel van Smoorenburg <miquels@cistron.nl>, ursprüngliche Manpage von
521 Michael Haardt <u31b3hs@pool.informatik.rwth-aachen.de>, Übersetzung
522 Martin Okrslar <okrslar@informatik.uni-muenchen.de> und Überarbeitung
523 von Martin Schulze <joey@infodrom.north.de>.