IT-Academy Logo
Sign Up Login Help
Home - Betriebssysteme - Linux - Allgemeines - Der Bootvorgang unter Linux



Der Bootvorgang unter Linux

Hier wird der allgemeine Bootvorgang unter Linux erklärt.


Autor: Franz Schaefer (mond)
Datum: 23-01-2002, 19:39:48
Referenzen: Keine.
Schwierigkeit: Anfänger
Ansichten: 6492x
Rating: 6.25 (4x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



| special deluxe | Übersicht
Zum guten Verständniss wie unser Betriebsystem so arbeitet gehört auch zu verstehen wie es bootet. Vorallem wenn das system mal aus irgend einem Grund nicht starten will, ist es wichtig zu verstehen wie der Startvorgang (booten) ablaeuft... Es gibt tausende Möglichkeiten ein Linux zu booten.
Es besteht in so einem Fall also kein Grund zur Panik.

Booten ist an und für sich ein ziemlich heikler Vorgang: das System das
noch gar nicht läuft muss von Festplatten lesen von denen es noch gar
nicht weiss, wie es sie anspricht und files lesen von denen es noch gar
nicht weiss, wie sie in einem filesystem organisiert sind...etc..etc.. die
Aufgabe erinnert ein wenig an den Versuch Baron Münchhausens sich an den
Haaren aus dem Sumpf zu ziehen... im englischen Sprachraum sagt man: "an
den Stiefeln (bzw Schnürsenkeln) aus dem Sumpf ziehen"... daher kommt auch
der Name "boot strapping" )

Wir können den Bootvorgang in folgende Phasen unterteilen:

1. BIOS phase: BIOS nennt man das programm das fix in auf einem ROM-
Speicher am Motherboard eingebrannt ist. Das BIOS hat
relativ primitive Funktionen eingebaut, die es erlauben die
ersten paar Blöcke einer Harddisk oder Floppy zu lesen. Je
nachdem was man im BIOS-Setup ausgewählt hat, liest es
einen dieser Datenblöcke und startet den Datenblock als
programm an (moderne BIOSe könne auch von CD oder dem Netzwerk
booten. Erweiterungen des BIOS können auch auf ROM-
Speichern in Erweiterungskarten liegen - damit kann man z.b.
auch von einem SCSI-Controller booten ...)


2. Boot loader: das Programm, dass da von floppy oder dem ersten harddisk
block gelesen wird, ist sehr kurz - einige hundert Bytes lang
und kann keine komplexen Aufgaben bewältigen.. es muss
funktionen die das BIOS zur Verfügung stellt benützen um
weitere Datenblöcke zu laden... und diese wieder
anzustarten.. so kann man komplexere funktionen in den BOOT
loader integrieren... Ziel des bootloaders ist den "kernel"
in den RAM-Speicher zu laden und anzustarten.

3. kernel phase: der linux kernel wenn er vom boot loader in den RAM
speicher geladen und angestartet wurde entpackt sich zuerst
selbst und testet und init alisiert dann die hardware.. das
sind die ganzen zeilen die beim booten ueber den bilschirm
laufen..


4. root filesystem mounten: als lezte aufgabe mountet der kernel das "/"
root filesystem und startet ein programm an. wenn sonst
nichts angegeben ist ist das das programm /sbin/init. init
wird somit der prozess mit der nummer 1. manche boot loader
erlauben es dem kernel parameter mit zu uebergeben. dann
kann man mit dem parameter INIT= ein anders programm
angeben. z.b. INIT=/bin/bash wuerde dem kernel sagen dass er
als erstes programm direkt eine shell starten soll. (das ist
manachmal ganz praktisch.. wenn sonst nichts mehr geht..)


5. startup scripts: init liest das file /etc/inittab und startet die darin
aufgelisteten programme und scripts. init kann verschiedenen
"runlevel" verwalten und verschiedenen scripts nur auf
verschiedenen runleveln starten etc... aufgabe der startup
scripts ist es z.b. weitere harddisks laut /etc/fstab zu
mounten.. IP addressen auf netzwerkkarten zu sezten..
daemons zu starten..etc..etc..

obiges schema hat noch einen kleinen hacken: da der kernel das root
filesystem selbst mounten muss kann der treiber dieses geraetes (z.b. ein
exotischer SCSI controler oder aehnliches) natuerlich NICHT als modul
geladen werden.. weil um module laden zu koennen muesste er ja auf eben
dieses geraet schon zugreiffen koennen...

.. das ist natuerlich unpraktisch fuer die hersteller von distributionen
weil dann kernels haben muessen die sehr viele geraete schon fix
einkompiliert haben... um das problem zu loesen gibt es eine stufe 4.a:

4a. initrd: anstatt das "/" root filesystem von einer harddisk zu mounten
wird eine RAM disk gemountet die schon vorher in phase 2 vom
boot loader mit dem selben mechanismus in den speicher
geschrieben wurde wir der kernel selbst. die ramdisk ist gross
genug um viele module zu enthalten. es wird das passende modul
geladen um auf das echte "/" filesystem zugreiffen zu koennen.
die programme in der initrd umgebung mounten dieses und dann
geht alles wie gewohnt bei 5. weiter.. man kann aber in dieser
initrd umgebung schon alles machen was man im echten linux
machen kann.. (sofern die entsprechenden programme halt in der
RAM disk platz haben..)

die hersteller von distributionen verwenden daher die initrd umgebungen
sehr gerne.. hat man sich seinen eigenen kernel compiliert der alles fix
einkompiliert hat was man braucht kann man aber auf initrd verzichten..

in der naechsten CD folge lernen wir dann welche verschiedenen bootloader
fuer linux existieren und wie wir diese benutzen um unser system zu booten.

EXERCISES:

* rebootet dein system und versuch anhand der meldungen am bildschirm zu
sagen ab wann welche phase erreicht ist.

______________________________________________
CD ist ein service von SILVER SERVER
der inhalt unterliegt der GFDL
_______________________________________________



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04511
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06248
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0