012
13.09.2003, 13:22 Uhr
0xdeadbeef
Gott (Operator)
|
Um mal ein bisschen Klarheit in den Wust zu bringen:
Linux benutzt ein System V-Init. Deswegen kann sich Loddab eigentlich in solchen Diskussionen auch nicht wirklich beteiligen, BSD benutzt nämlich (sic!) BSD-Init, das anders und für meinen Geschmack ein bisschen seltsam läuft.
Unter Linux läuft das so: Der Kernel wird gestartet. Er parst und verarbeitet zunächst die Boot-Parameter, sucht sich die init-executable (heutzutage meistens /sbin/init) und gibt die Parameter, mit denen er nichts anfangen kann, an init weiter. Init liest die inittab und arbeitet sie von oben nach unten ab. In der /etc/inittab stehen im wesentlichen Anweisungen wie "Wenn du dich im Runlevel sowieso befindest, mach das und das". Darunter fallen zum Beispiel die tty#s (respektive vc/#s, mit DevFS). Bei mir steht zum Beispiel folgendes in der inittab:
Code: |
1:2345:respawn:/sbin/getty 38400 vc/1 2:2345:respawn:/sbin/getty 38400 vc/2 3:2345:respawn:/sbin/getty 38400 vc/3 4:2345:respawn:/sbin/getty 38400 vc/4 5:2345:respawn:/sbin/getty 38400 vc/5 6:2345:respawn:/sbin/getty 38400 vc/6 7:2345:respawn:/sbin/getty 38400 vc/7 8:2345:respawn:/sbin/getty 38400 vc/8
|
Das bedeutet soviel wie "Wenn du in Runleveln 2-5 bist, führ /sbin/getty vc/[1-8] aus. Wenn der Prozess beendet wird, starte ihn neu". Für genaueres lest die manpage.
Das ist auch schon alles, was init macht, der Rest ist ein Konstrukt, was sich darauf durchgesetzt hat, aber nicht wirklich SysV-Init ist. Zum Beispiel benutzt Slackware zwar ein SysV-init, mach sonst aber alles ziemlich BSD-ish. Naja, und das habt ihr ja schon erklärt. Der Aufruf der Initscripts sieht bei mir so aus:
Code: |
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
|
D.h. /etc/init.d/rc wird mit dem Runlevel als Parameter aufgerufen, und macht dann alles weitere. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |