Home Page <- Linux <- Linux in Einzelteilen <-

Kernel

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.

Und so spielt alles zusammen

System starten

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?).

System runterfahren

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.


home

 

fsck

 

E-Mail

Webmaster