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.