Hier wird gezeigt, was benötigt wird, um eine Prompt zu bringen, von dem aus man gerade mal das System wieder runterfahren kann.
drwxr-xr-x 2 root root 4096 Apr 3 21:07 /boot -rw-r--r-- 1 root root 914612 Jan 19 2001 /boot/vmlinuz drwxr-xr-x 2 root root 4096 Apr 8 21:03 /sbin lrwxrwxrwx 1 root root 4 Apr 17 20:53 /sbin/reboot -> halt -rwxr-xr-x 1 root root 7948 Jan 19 2001 /sbin/halt -rwxr-xr-x 1 root root 392124 Jan 19 2001 /sbin/init drwxr-xr-x 2 root root 4096 Apr 3 21:01 /bin -rwxr-xr-x 1 root root 432268 Mär 25 20:51 /bin/bash -rwxr-xr-x 1 root root 10364 Mär 25 20:51 /bin/sync -rwxr-xr-x 1 root root 6232 Mär 25 20:51 /bin/sleep -rwsr-xr-x 1 root root 67236 Mär 25 20:51 /bin/mount -rwsr-xr-x 1 root root 34568 Mär 25 20:51 /bin/umount lrwxrwxrwx 1 root root 4 Apr 3 22:30 /bin/sh -> bash drwxr-xr-x 3 root root 4096 Apr 8 21:13 /etc -rw-r--r-- 1 root root 128 Apr 7 21:15 /etc/fstab drwxr-x--- 2 root root 4096 Apr 7 21:14 /etc/init.d -rwxr--r-- 1 root root 618 Apr 3 21:32 /etc/init.d/boot -rwxr--r-- 1 root root 1750 Apr 4 21:06 /etc/init.d/halt lrwxrwxrwx 1 root root 4 Apr 1 20:04 /etc/init.d/reboot -> halt -rw-r--r-- 1 root root 654 Apr 7 21:11 /etc/inittab -rw-r--r-- 1 root root 553 Apr 8 23:10 /etc/mtab drwxr-xr-x 2 root root 4096 Apr 7 21:06 /dev crw------- 1 root root 5, 1 Mär 25 21:20 /dev/console brw-rw---- 1 root disk 3, 68 Jan 19 2001 /dev/hdb4 prw------- 1 root root 0 Apr 8 23:10 /dev/initctl crw-rw-rw- 1 root root 1, 3 Apr 1 2001 /dev/null drwxr-xr-x 2 root root 4096 Mär 20 21:17 /proc drwxr-xr-x 2 root root 4096 Apr 4 21:37 /root drwxr-xr-x 2 root root 4096 Apr 7 20:37 /lib -rwxr-xr-x 1 root root 28239 Jan 19 2001 /lib/libhistory.so.4 -rwxr-xr-x 1 root root 569894 Jan 19 2001 /lib/libncurses.so.5 -rwxr-xr-x 1 root root 182647 Jan 19 2001 /lib/libreadline.so.4 -rwxr-xr-x 1 root root 106242 Jan 19 2001 /lib/ld-linux.so.2 -rwxr-xr-x 1 root root 1382179 Jan 19 2001 /lib/libc.so.6 -rwxr-xr-x 1 root root 14330 Jan 19 2001 /lib/libdl.so.2 -rwxr-xr-x 1 root root 92252 Jan 19 2001 /lib/libnsl.so.1 -rwxr-xr-x 1 root root 54577 Jan 19 2001 /lib/libnss_compat.so.2
| /boot | Dateien, die beim Laden des Kernel benötigt werden, wie der Kernel selbst, eine Ram-Disk etc. |
| /boot/vmlinuz | Der Kernel. |
| /sbin | Programme, die während des Bootvorgangs benötigt werden, und die ansonsten nur von root benutzt werden. |
| /sbin/reboot | Über diesen Link aufgerufen startet halt den Rechner neu. |
| /sbin/halt | Rechner anhalten, neustarten, ausschalten. |
| /sbin/init | Vater aller Prozesse. |
| /bin | Programme, die während des Bootvorgangs gebraucht werden, und später allgemein zur Verfügung stehen. |
| /bin/bash | Ich bevorzuge bash. Könnte auch eine andere Shell sein, die den Prompt bringt. |
| /bin/sync | Daten aus Cash auf die Festplatten schreiben. |
| /bin/sleep | Warten. |
| /bin/mount | Dateisysteme einhängen. |
| /bin/umount | Dateisysteme aushängen. |
| /bin/sh | Symlink. init moniert bei der respawn-Zeile, das er sh nicht finden kann!?! :-( |
| /etc | Konfigurationsdateien |
| /etc/fstab | Zusammenstellung der Dateisysteme. |
| /etc/init.d | Scripte für den Bootvorgang. |
| /etc/init.d/boot | Grundlegende Initialisierung des Systems. Erstes Script das ausgeführt wird. |
| /etc/init.d/halt | Script um das System anzuhalten bzw. neu zu starten. |
| /etc/init.d/reboot | Wenn halt über diesen Link aufgerufen wird, wird das System neu gestartet. |
| /etc/inittab | Konfigurationsdatei, die init steuert. Hier wird u.A. festgelegt. daß /etc/int.d/boot als erstes ausgeführt werden soll. |
| /dev | Gerätedateien |
| /dev/console | Console, auf der int's Ausgaben landen, sowie die Ein- und Ausgaben der Shell. |
| /dev/hdb4 | Festplattenpartition, auf der diese System inistalliert ist. |
| /dev/initctl | Kanal, über den init gesteuert wird. |
| /dev/null | Um unerwünschte Kommentare aus den Scripten zu vernichten (könnte man drauf verzichten). |
| /proc | Mount-Punkt für das proc-Dateisystem (Schnittstelle zum Kernel). |
| /root | Home-Verzeichnis von root. |
| /lib | Bibliotheken, die von den Programmen in /bin und /sbin benötigt werden. |
Der Kernel (vmlinuz) wird geladen, in meinem Fall von LILO. Er prüft die Hardware und aktiviert die zur Bedinung notwendigen Module, und mountet das root-Dateisystem (/ in meinem Fall /dev/hdb4) mit reinem Lesezugriff. Wenn das getan ist, startet er /sbin/init. Ein- und Ausgabe erhält init von /dev/console. init liest /etc/inittab und führt als erstes aus, was unter boot bzw. bootwait eingetragen ist (für Details siehe "man init"). Anschließend werden die Einträge für das übergebene oder durch initdefault angegebene Runlevel ausgeführt.
Der bootwait-Eintrag startet das boot-Script. Dieses remountet das root-Dateisystem (/dev/hdb4) mit Vollzugriff und mountet das /proc-Dateisystem (Schnittstelle zum Kernel).
Der Eintrag für die Runlevels 1-5 startet /bin/bash und lenkt Ein- und Ausgabe auf /dev/console (hierzu benötigt init vermutlich sh, kann mir jemand hierzu etwas sagen?).
Die Eingabe "init 0" startet einen neuen init-Prozess. Weil dieser nicht die Prozess-ID 1 hat, teilt er lediglich dem "echten" init über /dev/inictl mit, nach Runlevel 0 zu wechseln. Dieser führt dann die für Runlevel 0 in inittab angegebenen Befehle aus, hier /etc/init.d/halt.
haltVeranlaßt alle Dateisystem noch nicht gesicherte Daten zu sichern (/bin/sync), mountet das root-Dateisystem wieder nur lesend (sonst gilt es nächstesmal als unsauber), und unmountet /proc. Nach einer kurzen Wartezeit (/bin/sleep, Dateisystemen noch ein wenig Zeit zum sichern geben) wird schließlich das System mittel /sbin/halt angehalten.