Imported tab->space correction by redhat
[infodrom/manpages-de] / man8 / init.8
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.
5 .\"
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.
10 .\"
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.
15 .\"
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,
19 .\" USA.
20 .\" 
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>
23 .\" 
24 .TH INIT 8 "11. February 2000" "" "Dienstprogramme zur Systemverwaltung"
25 .SH BEZEICHNUNG
26 init, telinit \-  Initialisierung der Kontrolle über Prozesse und Runlevel
27 .SH SYNTAX
28 .B /sbin/init
29 .RB [ -t
30 .IR sec ]
31 .RB [ 0123456SsQq ]
32
33 .B  /sbin/telinit
34 .RB [ -t
35 .IR sec ]
36 .RB [ 0123456SsQq ]
37 .SH BESCHREIBUNG
38 .SS init
39 .B Init
40 ist der Vater aller Prozesse.  Seine Hauptaufgabe besteht darin, Prozesse nach 
41 einem Skript in der Datei
42 .I /etc/inittab
43 zu erzeugen (siehe auch 
44 .BR inittab (5)).
45 Diese Datei hat normalerweise bestimmte Einträge, die 
46 \fBinit\fP dazu veranlassen auf jeder Leitung
47 .BR getty s
48 zu erzeugen, auf 
49 der sich ein Benutzer einloggen kann.  Er kontrolliert 
50 auch alle autonomen Prozesse, die von einem bestimmten System benötigt  
51 werden.
52
53 .SH RUNLEVEL
54 Ein Runlevel
55 ist ein Softwarezustand des Systems, der es nur 
56 einer bestimmten Gruppe von Prozessen erlaubt ausgeführt zu werden.
57 Die Prozesse, die von
58 .B init
59 für jeden dieser Runlevel erzeugt werden, sind in der Datei
60 .I /etc/inittab
61 definiert.
62 .B Init
63 kann sich in einem von acht Runlevel befinden,
64 .B 0\-6
65 und
66 .B S
67 oder
68 .BR s .
69 .B Init
70 wechselt den Runlevel, wenn ein priviligierter Benutzer das Programm
71 .B /sbin/telinit
72 startet, das
73 .B init
74 bestimmte Signale sendet, die ihm sagen, in welchen Runleveles
75 wechseln soll.
76
77 Die Runlevel
78 .BR 0 ", " 1 " und " 6
79 sind reserviert.  Der Runlevel
80 .B 0
81 wird dazu verwendet, das System anzuhalten, der Runlevel
82 .B 6
83 iwr dafür benutzt, das System neuzusatarten, und der Runlevel
84 .B 1
85 wird dafür verwendet, das System in den Single-User-Modus
86 herunterzufahren.  Der Runlevel
87 .B S
88 wird normalerweise nicht direkt angesprungen, sondern dient nur als
89 Zwischenstufe für die Skripte, die ausgeführt werden, wenn in den
90 Runlevel
91 .B 1
92 übergegangen wird.  Weitere Informationen darüber finden Sie in den
93 Handbuchseiten zu
94 .BR shutdown (8)
95 und
96 .BR inittab (5).
97
98 Die Runlevel
99 .B 7-9
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
103 Runlevel
104 .B S
105 und
106 .B s
107 keinen ersichtlichen Unterschied gibt.  Tatsächlich sind beide 
108 Optionen lediglich ein Alias für ein und den selben Runlevel.
109
110 .SH SYSTEMSTART
111 Wenn
112 .B init
113 im letzten Schritt des Bootprozesses aufgerufen wird, 
114 sucht er nach der Datei
115 .I /etc/inittab
116 und sieht nach, ob es dort einen
117 .BR initdefault \-Eintrag
118 gibt (siehe 
119 .BR inittab (5)).
120 .B initdefault
121 bestimmt den
122 .RI Anfangs\- runlevel
123 des Systems.
124 Falls es dort keine derartige Eintragung gibt, oder gar keine 
125 .IR inittab \-Datei
126 existiert, so muss an der Systemkonsole der
127 .I runlevel
128 eingegeben werden.
129
130 Die
131 .I runlevel
132 .B S
133 oder
134 .B s
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
139 .I /dev/console
140 .B /sbin/sulogin
141 aufgerufen.
142
143 Wenn das System in den Single-user Modus übergeht, liest
144 .B init
145 die 
146 .BR ioctl (2)\-Zustände
147 der Konsole in
148 .IR /etc/ioctl.save .
149 Existiert 
150 diese Datei nicht, dann initialisiert
151 .B init
152 die Leitung mit 9600 BAUD und mit
153 .BR CLOCAL \-Einstellungen.
154 Wenn
155 .B init
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.
160
161 Wenn
162 .B init
163 das erste mal in einen Multi-User-Modus eintritt, führt 
164 er die
165 .BR boot \-
166 und
167 .BR bootwait \-Einträge
168 der Datei
169 .I /etc/inittab
170 aus, die es erlauben, 
171 dass die Dateisysteme gemountet werden können, bevor sich ein Benutzer 
172 einloggen kann.  Danach werden alle die
173 .I runlevel
174 betreffenden 
175 Einträge ausgeführt.
176
177 Immer wenn
178 .B init
179 einen neuen Prozess startet, schaut das Programm erst nach, 
180 ob die Datei
181 .I /etc/initscript
182 existiert.  Wenn es sie gibt, benutzt 
183 .B init
184 das Skript dieser Datei um den Prozess zu starten.
185
186 Jedesmal, wenn ein Kindprozess terminiert, hält
187 .B init
188 diese Tatsache und den Grund, weshalb der Kindprozess gestorben ist, in den 
189 Dateien
190 .I /var/run/utmp
191 und
192 .I /var/log/wtmp
193 fest, falls diese Dateien existieren.
194
195 .SH RUNLEVEL-ÄNDERUNGEN
196 Sobald alle vorgesehenen Prozesse erzeugt worden sind, wartet
197 .B init
198 darauf, dass ein Kindprozess stirbt, auf ein Stromausfallsignal 
199 oder auf eine Anweisung von
200 .BR /sbin/telinit ,
201 in welchen
202 .I runlevel
203 er wechseln soll.  Wenn eine der drei oben genannten Bedingungen  
204 erfüllt ist, untersucht
205 .B init
206 nochmals die
207 .IR /etc/inittab \-Datei,
208 da dieser 
209 Datei jederzeit neue Einträge hinzugefügt werden können.  Man kann den 
210 schlafenden
211 .BR init \-Prozess
212 auch mit den Kommandos
213 .B Q
214 oder 
215 .B q
216 aufwecken, was ihn dazu veranlaßt, nochmals die 
217 .IR /etc/inittab \-Datei
218 zu examinieren.
219
220 Wenn
221 .B init
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:
226 .IP F(AIL)
227 Strom fällt aus, die USV versorgt den Rechner mit Strom.  Die
228 .BR powerwait "\- und " powerfail \-Einträge
229 werden ausgeführt.
230 .IP O(K)
231 Strom wurde wiederhergestellt, es werden die
232 .BR powerokwait \-Einträge
233 ausgeführt.
234 .IP L(OW)
235 Strom wird knapp und die USV geht auf dem Zahnfleisch.  Die
236 .BR powerfailnow \-Einträge
237 werden ausgeführt.
238 .PP
239 Wenn
240 .I /etc/powerstatus
241 nicht existiert oder etwas anderes enthält als die Buchstaben
242 .BR F ", " O " oder " L,
243 wird
244 .B init
245 sich so verhalten als hätte es den Buchstaben
246 .B F
247 gelesen.
248
249 Die Verwendung von SIGPWR und
250 .I /etc/powerstatus
251 werden nicht empfohlen.  Wenn etwas mit
252 .B init
253 interagieren möchte, sollte der Kontrollkanal
254 .I /dev/initctl
255 verwendet werden - siehe Quellcode des sysvinit-Pakets für mehr
256 Dokumentation darüber.
257
258 Wenn
259 .B init
260 angewiesen wird den
261 .I runlevel
262 zu wechseln, wird das Warnsignal
263 .B SIGTERM
264 an alle Prozesse geschickt, die nicht in der Datei
265 .I /etc/inittab
266 für den  neuen
267 .I runlevel
268 vorgesehen sind.
269 .B Init
270 wartet dann 5 Sekunden bevor er diese Prozesse mit dem kill-Signal 
271 .B SIGKILL
272 gewaltsam terminiert.  Achtung:
273 .B init
274 nimmt an, dass 
275 alle diese Prozesse (und deren Nachfahren) in derselben Prozessgruppe  
276 verblieben sind, die
277 .B init
278 ursprünglich für sie erzeugt hat (siehe 
279 .BR setpgrp (2)).
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!
283
284 .SH TELINIT
285 Das Programm
286 .B /sbin/telinit
287 ist auf
288 .B /sbin/init
289 gelinkt.  Er 
290 wird mit Argumenten, die aus nur einem Buchstaben bestehen gesteuert, und 
291 sendet
292 .B init
293 Anweisungen (Signale), welche Aktionen dieses auszuführen 
294 hat.  Die folgenden Argumente dienen als Anweisungen für
295 .BR telinit :
296
297 .TP
298 .BR 0 , 1 , 2 , 3 , 4 , 5 " oder " 6
299 befehlen
300 .B init
301 in den angegebenen Runlevel zu wechseln.
302 .TP
303 .BR a , b , c
304 befehlen
305 .B /sbin/init
306 nur die Einträge der Datei
307 .I /etc/inittab
308 auszuführen, die den Runlevel
309 .BR a ", " b " oder " c
310 haben.
311 .TP
312 .BR Q " oder " q
313 befehlen
314 .B /sbin/telinit
315 nocheinmal die Datei
316 .I /etc/inittab
317 einzulesen.
318 .TP
319 .BR S " oder " s
320 befehlen
321 .B /sbin/telinit
322 in den Single-User-Modus zu schalten.
323 .PP
324 .B /sbin/telinit
325 kann den
326 .BR init \-Prozess
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 
330 Option
331 .BI \-t " sec"
332 verändert werden.
333
334 .B /sbin/telinit
335 kann nur von Benutzern mit einer entsprechenden Berechtigung aufgerufen werden.
336
337 Das
338 .BR init \-Programm
339 überprüft, ob es als
340 .B init
341 oder
342 .B telinit
343 gestartet wurde, indem es auf seine Prozess-ID schaut; die reelle
344 Prozess-ID von
345 .B init
346 ist immer 1.  Von daher darf man einfach auch
347 .B init
348 anstelle von
349 .B telinit
350 verwenden oder eines Aliases.
351
352 .SH UMGEBUNG
353 .B Init
354 setzt folgende Umgebungsvariablen für alle seine Kindprozesse:
355 .TP 
356 .B PATH
357 Wird standardmäßig auf
358 .I /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
359 gesetzt.
360 .TP
361 .B INIT_VERSION
362 Wie der Name schon sagt.  Nützlich, wenn ein Skript direkt von init 
363 ausgeführt werden soll.
364 .TP
365 .B RUNLEVEL
366 Der augenblickliche Runlevel des Systems.
367 .TP
368 .B PREVLEVEL
369 Der vorherige Runlevel (nützlich nach einer Änderung des Runlevels).
370 .TP
371 .B CONSOLE
372 Die System-KOnsole.  Diese wird tatsächlich vom Kernel vererbt; wenn
373 sie jedoch nicht gesetzt ist, wird
374 .B init
375 sie auf
376 .I /dev/console
377 setzen als Voreinstellung.
378
379 .SH BOOTSIGNALE
380 Es ist möglich
381 .B init
382 eine Reihe von Bootsignalen (bootflags) vom 
383 Bootmonitor aus (d.h. vom LILO aus) zu übergeben. 
384 .B Init
385 akzeptiert folgende Signale:
386 .TP
387 .BR "\-s" ", " S ", " single
388 Bootet im Single-user Modus.  In diesem Modus wird zuerst die Datei
389 .I /etc/inittab
390 eingelesen; danach werden, noch bevor die 
391 Single-User-Shell gestartet wird, die Bootskripte der Datei
392 .I /sbin/init.d/boot
393 ausgeführt.
394 .TP
395 .BR 1 , 2 , 3 , 4 " oder " 5
396 Weist
397 .B init
398 an, in welchen Runlevel gebootet werden soll.
399 .TP
400 .BR \-b ", " emergency
401 Gibt
402 .B init
403 die Anweisung direkt in den Single-User-Modus zu booten,  
404 ohne irgendwelche Startup-Skripte auszuführen.
405 .TP
406 .BR \-a ", " auto
407 .\" ACHTUNG: Englisches Original ergibt keinen Sinn...
408 Der LILO-Bootloader fügt das Wort an den Kernel.
409 .B init
410 ist in der Lage, es zu lesen.
411 .TP
412 .B \-z xxx
413 Das Argument zu
414 .B \-z
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.
417 .B Init
418 kann anschließend die Kommandozeile derart modifizieren, dass
419 .BR ps (1)
420 den aktuellen Runlevel anzeigt.
421
422 .SH SCHNITTSTELLE
423 .B Init
424 lauscht auf einem Fifo in
425 .IR /dev ", " /dev/initctl ,
426 auf Nachrichten.
427 .B Telinit
428 benutzt diesen, um mit
429 .B init
430 zu kommunizieren. Die Schnittstelle ist noch nicht sehr ausführlich
431 dokumentiert.  Wer interessiert ist, möge die Datei
432 .I initreq.h
433 im Quellcode von init studieren.
434
435 .SH SIGNALE
436 Init reagiert auf verschiedene Signale:
437 .TP 0.5i
438 .B SIGHUP
439 Init sucht nach
440 .I /etc/initrunlvl 
441 und
442 .IR /var/log/initrunlvl .
443 Wenn eine dieser Dateien existiert und einen ASCII-Runlevel enthält,
444 wechselt
445 .B init
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
449 init, als wenn
450 .B telinit q
451 ausgeführt wurde.
452 .PP
453 .TP 0.5i
454 .B SIGUSR1
455 Beim Emfang dieses Signals schließt init sein Kontroll-Fifo
456 .I /dev/initctl
457 und öffnet ihn wieder.  Das ist sinnvoll für Boot-Skripte, wenn
458 .I /dev
459 neu gemountet wird.
460 .TP 0.5i
461 .B SIGINT
462 Normalerweise sendet der Kernel dieses Signal an
463 .IR init ,
464 wenn CTRL-ALT-DEL gedrückt wurde.  Es aktiviert die
465 .IR ctrlaltdel \-Aktion.
466 .TP 0.5i
467 .B SIGWINCH
468 Der Kernel sendet dieses Signal, wenn die
469 .IR KeyboardSignal \-Taste
470 gedrückt wurde.  Es aktiviert die
471 .IR kbdrequest \-Aktion.
472
473 .SH "KONFORM ZU"
474 .B Init
475 ist kompatibel zum System V init.  Er arbeitet eng mit 
476 den Skripten zusammen, die in den Verzeichnissen
477 .I /sbin/init.d
478 und 
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 
482 .B README \-Datei
483 befinden, die erklärt wie diese Skripte funktionieren.
484
485 .SH DATEIEN
486 .nf
487 .I /etc/inittab
488 .I /etc/initscript
489 .I /dev/console
490 .I /etc/ioctl.save
491 .I /var/run/utmp
492 .I /var/log/wtmp
493 .I /dev/initctl
494 .fi
495
496 .SH WARNUNGEN
497 .B Init
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.
505
506 .SH DIAGNOSE
507 Wenn
508 .B init
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
515 Tippfehler in
516 .I /etc/inittab
517 einbaut oder das zum Eintrag gehörende Programm löscht.
518
519 .SH AUTOR
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>.
524 .SH "SIEHE AUCH"
525 .BR getty (1),
526 .BR login (1),
527 .BR sh (1),
528 .BR who (1),
529 .BR shutdown (1),
530 .BR kill (2),
531 .BR inittab (5), 
532 .BR inscript (5),
533 .BR utmp (5).