www.linuxmaterial.deSystem V Init

BIOS

Nach dem Ablauf verschiedener Selbsttests wird das (evtl. im BIOS einstellbare) Bootmedium gelesen. Hier wird bei der Intelarchitektur aus dem sog. Masterbootrecord (MBR) ein Teil eines sogenannten Bootloaders (Ladeprogramm) gelesen und ausgeführt. Dieser liest den restlichen Teil des Bootloaders. Hier sind je nach Bootloader verschiedene Auswahlmöglichkeiten etc. üblich. Letztendlich wird der Kernel in den Speicher geladen und ausgeführt.

Kernel und init

Kernel

Der Kernel startet den ersten Prozess mit dem Namen init.

Initrd

In dieser Datei befindet sich ein Dateisystem *1 mit einigen für den Bootvorgang notwendigen Dateien. Diese sind in einer normalen Verzeichnisstruktur abgelegt. Hierdurch besteht die Möglichkeit, Funktionalitäten die nicht im Kernel enthalten sind wie z.B. spezielle Netzwerktreiber, aber auch Treiber für Dateisysteme zu benutzen obwohl die entsprechenden Module noch nicht geladen werden können, da sie sich auf einem Device (Netzwerk oder Partition) befinden das noch nicht gemountet wurde. So könnte z.B. die Kerneldatei vmlinuz und die initrd auf einer Partiton liegen, welche nach dem Beenden des Bootvorganges dem Verzeichnis /boot entspricht. Die root-Partition ist dem Filesystem Reiserfs und die /usr-Partition mit xfs eingerichtet. Beide Dateisysteme wärden nicht vom Kernel unterstützt. Sofern die Treiber sich als Module in initrd befinden, können beide Partitionen angesprochen und gemountet werden.

Die Datei initrd befindet sich im Verzeichnis /boot. Es handelt sich um einen Link auf die jeweils g�ltige Datei mit Namen initrd-[Kernelversion]-Verwendung.
Beispiele:

lrwxrwxrwx 1 root root 26 23. M�r 20:55 initrd -> initrd-2.6.18.2-34-default
-rw-r--r-- 1 root root 2907802 23. M�r 20:55 initrd-2.6.18.2-34-default
-rw-r--r-- 1 root root 2813566 23. M�r 20:55 initrd-2.6.18.2-34-xen
lrwxrwxrwx 1 root root 22 23. M�r 20:30 initrd-xen -> initrd-2.6.18.2-34-xen

Übung: Den Inhalt der Datei /boot/initrd ansehen *3.

Der Prozess mit der Nummer 1 - init

Der erste wird der letzte sein oder der Vater aller Dinge.

Dieser Prozess ist der Vater aller weiteren Prozesse und ist bis zum endgültigem Halt des Systems vorhanden. Die Konfiguration erfolgt durch die Datei

/etc/inittab

(Beispiel s. inittab.). Hier finden sich Angaben in welchen Runlevel das System booten soll. Wieviele virtuelle Konsolen angesteuert werden, welche Programme bei Nachrichten einer evtl. vorhandenen USV (Unterbrechungsfreie StromVersorgung) gestartet werden sollen oder auch was die Tastenkombination Steuer,Alternative,Entfernen bewirken soll.

/etc/init.d/boot

Die erste Datei, die der init-Prozess ausführt. Hier findet man u.a. Aufrufe von Startskripten wie z.B. boot.ipconfig (Setzt IP-Adresse etc.). Der Mechanismus der die Aufrufreihenfolge bestimmt ist der gleiche wie bei den Run-Level-Skripten *2.

/etc/init.d/boot.local

Da die Datei /etc/init.d/boot bei einem Update etc. geändert oder neu erstellt werden könnte, sollte man eigene Eintragungen in die Datei boot.local schreiben. Diese Datei wird bei Äderungen des Systems nicht beeinträchtigt. boot.local wird nach den o.g. boot-Dateien jedoch vor den Wechsel in den eigentlichen Runlevel abgearbeitet.

/etc/fstab

Jede Zeile in der Datei /etc/fstab wird gelesen und je nach Angabe in dieser Datei wird mit den Bestandteilen dieser Zeile als Argumente der Befehl mount aufgerufen. Näheres siehe dort.

Runlevel

... ist dort beschrieben.

Module

noch nicht erstellt.


*1 D. h. die Datei ist als xxx-system strukturiert. Siehe auch unter Dateien als Dateisysteme.

*2 Softlinks in /etc/init.d/boot.d/ mit der Namenskonvention S[Zahl][Name] werden in Reihenfolge der Zahlen gestartet. Siehe auch Runlevel

*3 Arbeitsverzeichnis erstellen: mkdir /work
Kopie von der Orginaldatei erstellen: cp /boot/initrd /work/initrd
in Arbeitsverzeichnis wechseln: cd /work

(gültig bis Suse-Version 9.2)
Als gzipte Datei behandeln: mv initrd initrd.gz
Dekomprimieren: gzip -d initrd.gz
Datei als Dateisystem mounten: mount -o loop initrd /mnt
Inhalt ansehen: ls /mnt

(ab 9.3 handelt es sich um cpio-Archiv)
Dekomprimieren und das cpio-Archiv entpacken:
gunzip -c -9 /boot/initrd | cpio -i -d -H newc --no-absolute-filenames
ll *