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: |
/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 |
/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). |
init |
Bei laufendem Betriebssystem kann man jederzeit zwischen den Runlevels wechseln.
Mit dem Befehl init <runlevel>. |