next up previous contents
Next: Aufgaben des Servers beim Up: Der Bootvorgang beim Client Previous: Kernelkonfiguration   Contents

Bootvorgang im Detail

Beim Booten des Kernels werden alle notwendigen Treiber geladen. Am Ende des Kernelstarts sendet er Bootp-Requests ins Netzwerk, worauf ihm ein Bootp-Server seine IP, den Hostnamen und das Root-Verzeichnis auf dem Server zuweist. In diesem Root-Verzeichnis befinden sich unter vielem Anderem die Bootskripte. Diese werden nach dem Mounten des Root-Dateisystems vom INIT-Prozess gestartet. Das für uns wichtigste Skript war /sbin/init.d/boot, welches einige Änderungen erforderte.

Im Folgenden beschreiben wir den Ablauf dieses Bootskriptes etwas genauer.

Zu Beginn wird das /proc-Device gemountet. Danach werden verschiedene Optionen bearbeitet und ein Daemon (bdflush) gestartet. Nun werden einige Verzeichnisse vom Server gemountet: /usr, /bin, /sbin, /lib und /home. Im /usr-Verzeichnis befinden sich Programme, Quelltexte, etc. Das /bin-Verzeichnis enthält mehrere kleine, aber wichtige Programme, z.B. dd, cp, kill, usw. /sbin beinhaltet verschiedene Programme, die der Systemadministrator bei seiner täglichen Arbeit braucht. Im /lib-Directory sind einige Programmbibliotheken abgelegt und das /home-Verzeichnis beherbergt die Benutzerdaten.

Nach dem Mounten folgt das Erstellen von drei Ramlaufwerken für die Verzeichnisse /tmp, /etc und /var. Diese Massnahme erwies sich als notwendig, weil in diese Verzeichnisse verschiedene Daten geschrieben werden müssen und dies nicht zu übermässigem Traffic im Netzwerk führen soll. Da es nur temporäre Daten sind, ist es irrelevant, dass sie nach einem Reboot des Clients nicht mehr vorhanden sind. Daher werden die Daten der Verzeichnisse in diese Ramdisks kopiert:

#/tmp                                                                          
mke2fs /dev/ram0                                                               
mount /dev/ram0 /tmp                                                           
chmod -R a+w /tmp                                                              
                                                                               
#/etc
mkdir /tmp/etc
cp -r /etc /tmp/
mke2fs /dev/ram1
mount /dev/ram1 /etc
cp -r /tmp/etc/* /etc
rm -r /tmp/etc

#/var
cp -r /var /tmp/
mke2fs /dev/ram2
mount /dev/ram2 /var/
cp -r /tmp/var/* /var/
rm -r /tmp/var/
chmod -R a+w /var

Nun wird das pts-Device nach /dev/pts gemountet, falls dies noch nicht geschehen ist. Danach bildet ld7 seinen Cache neu, zic8setzt die Zeitzone und das Loopback-Device wird initialisiert. Es folgt noch das Aufsetzen des Netzwerks, das heisst, dass Hostname und Domainname gesetzt werden. Am Ende werden noch einige Aufräumarbeiten ausgeführt, andere Skripte gestartet, Kernelnachrichten gesammelt und mehrere weitere (hier nicht sehr wichtige) Optionen aktiviert.

Nun wechselt der Rechner vom Runlevel N zum Runlevel 2. Hier werden noch weitere Dienste gestartet: Die seriellen Ports werden konfiguriert, das Netzwerkdevice (eth0) aufgesetzt, Routing aktiviert, Syslog-Service gestartet, Zufallszahlengenerator initialisiert, inetd gestartet und die Keymap qwertz/de-lat1-nd.map.gz geladen.

Nach erreichen des Runlevels 2 erhält man am Client einen Rootlogin-Prompt. Man könnte sich jetzt als root einloggen - das ist jedoch nicht notwendig, da die Clients über das Netzwerk gesteuert werden, kann allerdings für Diagnosezwecke überaus sinnvoll sein.


next up previous contents
Next: Aufgaben des Servers beim Up: Der Bootvorgang beim Client Previous: Kernelkonfiguration   Contents
Manfred Stock 2003-02-07