Der Bootprozeß
Was passiert eigentlich alles beim Booten?DOS kennt nur `CONFIG.SYS' und `AUTOEXEC.BAT', bei Linux läuft das alles etwas vielseitiger ab.
Ersteinmal die Konkurrenz:
Linux hingegen kennt (zumindest theoretisch) beliebig viele,
momentan implementationsbedingt auf folgende beschränkt:
Ab hier ist alles distributionsspezifisch - siehe /etc/inittab
Weitere Informationen findet man mittels
Das Grundgerüst
Das schöne an diesem Bootvorgang ist, daß sich der Systemstart-Vorgang auf alle
möglichen Gegebenheiten anpassen läßt.
Statt des Energy Stars kann auch das hübsche Pinguin-Logo angezeigt werden.
Nähere Hinweise, wie man das BIOS-Logo austauscht, findet man
hier.
Eine zweite Möglichkeit ist LILO, der Linux Loader, der einfach bei der
Konfiguration nachguckt, auf welchen physikalischen Sektoren der Kernel auf der
Festplatte liegt (als Datei), diese mit sich selbst in den MBR (Master Boot Record =
Bootsektor) schreibt, und beim Booten dann genau diese Sektoren ausliest,
ins RAM schreibt und ausführt.
Jetzt ist der Kernel prinzipiell mit Laden fertig und die gesamte Hardware,
die er eingebunden hat, steht zur Verfügung.
Die Meldungen, die Kernel und Programm trennen, lauten folgendermaßen:
VFS: mounted root (ext2fs) filesystem readonly. (Noch Kernel)
INIT: Version X.XX booting (schon INIT)
/etc/inittab geladen, wo INIT unter anderem erfährt, welcher
Runlevel zu starten ist. (id:X:initdefault:
, wobei `X' der Runlevel ist.) Danach guckt INIT, welches Programm als nächstes
starten soll, denn bisher ist weder ein Serverdienst gestartet wordem,
noch eine Shell, noch das Netzwerk, und auch noch nicht einmal andere
Partitionen sind gemountet. (dies steht in der Zeile si:I:wait:PROGRAMM).
Meist ist PROGRAMM gleich /etc/rc.d/init.boot, oder
/sbin/init.d/boot, und dies wird jetzt ausgeführt.
Wohlgemerkt: Jedes System kann hiervon geringfügig abweichen.
und wenn eine Partition beschädigt ist, halt alles anhalten und nur noch root
reinlassen
Meist gibts in dem gleichen Verzeichnis auch eine Datei boot.local,
die von boot zum Schluß ausgeführt wird und in die noch eigenen
Befehle geschrieben werden können. Ansonsten ist es auch möglich, diese Befehle
ins boot-Skript direkt anhängen -- aber vorsicht,
hier sollte man nichts einfach ändern, wenn man nicht genau weiß, was man tut!
/etc/inittab),
und je nach Runlevel werden jetzt die Skripte gestartet:
(/etc/inittab: lN:N:wait:SCRIPT, wobei N=Runlevel), die bei den
meisten Systemen einfach alles starten, was in /etc/init.d/rcN.d/
oder ähnlich liegt (N=Runlevel).
Hier werden also die ganzen Services, Deamons und Dienste gestartet, die dann
später im Hintergrund laufen. Gleichzeitig wird für diese Prozesse
etwas Buch geführt, z.B. Lock-Dateien angelegt, oder ähnliches.
Dies wird ebenfalls in der /etc/inittab festgelegt.
"respawn" heißt hier, daß das Programm, sobald es sich beendet,
sofort erneut gestartet wird, denn ansonsten könnte man sich auf jedem Terminal
nur einmal einloggen ...
Dies funktioniert übrigens auch, wie so manches, übers Netzwerk:
So liefert beispielsweise ein startx --query anderer_rechner:0
ein Login-Fenster von einem anderen Rechner aus dem Netzwerk.
Definition Runlevel
Windows kennt 8 Runlevels, die allerdings weitgehend
festgelegt sind und nicht einstellbar:
Spätestens jetzt sollte jeder wissen, was mit dem Begriff Runlevel gemeint ist.
0:
6:
S:
root darf rein, kein Netz.
1:
Was nun pro Runlevel gestartet/gestoppt wird, bestimmen die Skripte, die
in /etc/rcN.d bzw. /sbin/init.d/rcN.d (wobei N=Runlevel) liegen.2:
3:
4:
5:
>> man 8 init.
Dieser Text ist ein Auszug aus der Linux USER FAQ, und wurde uns freundlicherweise zur
Verfügung gestellt von Jens Benecke, der Mitautor dieser FAQ ist.
Anmerkungen zu diesem Artikel
Bisher keine Kommentare
Eigene Anmerkung eintragen