MenüNetzwerklösungen, Webprogrammierung, Intranetlösungen, Datenbanken, Anwendungsprogrammierung und Systemsicherheit aus einer Hand in Bad Tölz
Diese Seite beschreibt den Bootvorgang von Linux

 Bootkonzept

Um allen Mißverständnissen vorzubeugen: Das Bootkonzept von Linux ist keineswegs einheitlich; vielmehr kocht da so ziemlich jede Distribution ihr eigenens Süppchen - traurig aber wahr. Tatsache ist, daß man beim Booten von Linux außergewöhnliche Freiheiten genießt, was den Weg für proprietäre Lösungen ebnet.

Auf dieser Seite wir das "Hochfahren" von Linux am Beispiel der bekannten S.u.S.E-Distribution verdeutlicht.

Betriebssystemkern    

Zunächst ist alles noch ganz einfach und einheitlich: Irgendwie muß der Betriebssystemkern (= Kernel) in den Speicher geladen und ausgeführt werden. Dabei spielt es praktisch keine Rolle, ob das der "LILO" gleich beim Booten des Rechners besorgt, oder das gute alte DOS als "Sprungbrett" den "LOADLIN" startet, der seinerseits wiederum den (meist komprimierten) Kernel in den Speicher lädt und ausführt (bei dieser Gelegenheit wird das DOS natürlich komplett aus dem Speicher gekickt).

 
Rootverzeichnis

Sowohl der "LILO" als auch der "LOADLIN" müssen dem Kernel zumindest einen Parameter mit auf dem Weg geben:
Auf welcher Partition soll der Kernel das Wurzelverzeichnis (= Rootverzeichnis) erwarten?
Denn sonst weiß der Kernel nicht, was er machen soll und kriegt die "Kernel panic..."

 
/sbin/init

Jetzt wo der Kernel weiß, auf welcher Partition sich das Rootverzeichnis befindet, startet er init, die "Mutter aller Prozesse". Falls Linux von einer initrd in einer RAMDISK gestartet wird, muß ein Link namens linuxrc im Verzeichnis "/" auf init zeigen. Ansonsten wird init in /sbin erwartet. init ....

 
/etc/inittab

.... erwartet das Vorhandensein der Datei /etc/inittab, in der sich unter anderem ein Eintrag wie
si:I:wait:/sbin/init.d/boot
befinden sollte. Und genau diese Datei führt "init" als allererstes aus. Damit wird jetzt auch klar, warum es kein einheitliches Bootkonzept geben kann, denn statt /sbin/init.d/boot kann natürlich auch jede beliebige andere Datei genannt werden. Hauptsache, sie existiert....

 
/sbin/init.d/boot

Bei der S.u.S.E werden hier unter anderem die lokalen Filesysteme gecheckt und nach den Vorgaben in /etc/fstab gemountet. Am Schluß wird dann vor Erreichen irgend eines runlevels die Datei /sbin/init.d/boot.local ausgeführt, die, zunächst leer, später mit zusätzlichen Kommandos gefüllt werden kann.

 
/sbin/init.d/rc x

Und jetzt kommt wieder die Datei /etc/inittab ins Spiel, denn hier geht es jetzt um die sogenannten "Runlevels", grob gesagt also der "Gang" in dem Linux "fahren" soll mit den beiden "Rückwärtsgängen" 0 und 6 und was passieren soll, wenn in welchen "Gang" geschaltet werden soll:

# Ok, voreingestellter Runlevel ist "2",
# also "multi-user" mit Netzwerk
id:2:initdefault:

# runlevel 0 ist halt (Herunterfahren ohne Neustart)
# runlevel 1 ist "multi-user" ohne Netzwerk
# runlevel 2 ist "multi-user" mit Netzwerk
# runlevel 3 ist "multi-user" mit Netzwerk und X
# runlevel 6 ist reboot (Herunterfahren mit Neustart)

l0:0:wait:/sbin/init.d/rc 0
l1:1:wait:/sbin/init.d/rc 1
l2:2:wait:/sbin/init.d/rc 2
l3:3:wait:/sbin/init.d/rc 3
l6:6:wait:/sbin/init.d/rc 6

Hier wollen wir also im 2. Gang fahren und starten dazu das Script /sbin/init.d/rc mit dem Parameter "2". Dieses lädt und konfiguriert dann nach den Vorgaben in /etc/rc.config und /etc/route.conf den ganzen Netzwerkkrempel von der Netzwerkkarte (eth0) bis zur ISDN-Karte (ippp0 oder isdn0).
Und fertig ist unser Bootvorgang:
server login:

 
init

Bei laufendem Betriebssystem kann man jederzeit zwischen den Runlevels wechseln. Mit dem Befehl init <runlevel>.
Cool: Will man mal ein paar Netzwerkeinstellungen ändern, reicht es völlig aus, diese einfach in den entsprechenden Konfigurationsdateien vorzunehmen und das dann ganz lässig mit init 1; sleep 10; init 2 vom System übernehmen zu lassen. Ohne dieses lästige

 
Neustart