Linux

Der Bootvorgang


Zuerst startet der Rechner das BIOS (Basic Input Output System). Danach begibt sich der Rechner auf die Suche nach dem Betriebssystem auf einem Datenträger.

Bei jedem Dateträger wird der erste Sektor (die ersten 512 Bytes) gelesen. Dieser Sektor wird als Master Boot Record bezeichnet (kurz MBR). Bei Disketten wird dieser Bereich als Bootsektor bezeichnet. Er enthält auch die Partionstabelle, welche für 4 Einträge Platz bietet (die primären Partionen). Unter anderen kann im MBR auch der Linux Loader (kurz LILO) untergebracht werden, der auch in der Lage ist mehrere Betriebssysteme zu starten.

Laden des Kernels

Im Startsektor wird mit Abarbeitung von Code aus der Datei setup.S begonnen. Aufgaben diese Codes sind:

Die Datei head.s (die vollständig in Assembler geschrieben wurde) werden folgende Dinge initialisiert:

Weitere Funktionen werden von der Datei main.c zur Verfügung gestellt

Der init-Prozess

Init ist der erste Prozeß den der Kernel nach der Initialisierung der Hardware startet. Er wird als "Vater" der Prozesse bezeichnet, da er die Prozeß-ID (PID) 1 erhält. Aufgaben von init sind:

Simple-Init-System

System-V

kennt 2 Betriebszustände.
Bei Einzelplatzsystemen stellt es nur eine Shell auf der Konsole zur Verfügung.
Im Mehrbenutzermodus arbeitet es die Datei
/etc/rc ab.
Diese Datei wird sehr schnell unübersichtlich.

verteilt die Konfiguration der Systemkomponenten auf verschiedene Skripte (Neztwerk, Webserver etc). Um diese können auch nachträglich vom init neugestartet werden. ð Wesentlich leichter zu Handhaben; übersichtlicher.

Runlevels

Die Runlevels definieren den akutellen Zustand eines Unix-Systems - normalerweise Mulituserbetrieb, Wartungsmodus mit oder ohne Netzwerk, Konsolenlogin oder unter X11.

Diese Runlevels werden in der Datei /etc/initab festgelegt.

Runlevel

Name

Beschreibung

0

halt

System herunterfahren

1

singel user mode

Wartungsmodus

2

mulituser without NFS

Mulituserbetrieb (ohne NFS)

3

full mulituser mode

Mulituser mit NFS

4

unused

Nicht benutzt

5

X11

Starten der grafischen Oberfläche, Einlogen über xdm

6

reboot

Neustart

Die Runlevels A-C dienen dazu in einen Runlevel zusätzliche Dienste zu starten, ohne den ursprünglichen Runlevel zu verlassen.

Jeder Eintrag in /etc/initab ist im Format ID:Runlevel:Aktion:Prozeß eintragen.

Die rc-Datei

Diese Datei steuert die Übergänge zwischen den Runlevels und legt die Schritte beim Wechsel der Runlevels fest.

  1. Schritt
    Die rc-Datei sucht im jeweiligen Verzeichnis des Runlevels
    z. B.
    /sbin/init.d/rc*.d
    nach Verweisen*, die mit K (für kill) beginnen. Die Reihenfolge richtet sich nach der Ziffer hinter dem ersten Buchstaben.
  2. Schritt
    In dem Verzeichnis, auf dessen Runlevel man wechseln will, wird nach Verweisen gesucht, die mit S beginnen. Die Reihenfolge richtet sich auch hier nach der Ziffer hinter dem ersten Buchstaben.

Die oben angesprochenen Verweise zeigen auf Init-Skripte und Daemons. Zentrale Rolle des ersten Scriptes ist es die Datei /etc/fstab zu überprüfen um Fehler im Dateisystem zu starten. Gefundene Fehler werden automatisch repariert (sofern dies möglich ist). Danach werden in /etc/fstab eingetragene Dateisysteme automatisch gemountet.#

getty

Das getty liefert nach Abarbeitung sämtlicher Init-Skripte schließlich ein Login-Promt.

Das Programm getty ist der eigentliche Motor für Verbindungen eines Host-Rechneres mit Terminals, PCs als Terminals oder Dail-in-Modemverbindungen. Zudem stellt getty die Geschwindigkeit, den Transfertyp und den Terminaltyp ein. Es gibt 3 gebräuchliche getty-Versionen:

Sie unterscheiden sich in der Syntax, leisten aber ähnliches. In den meisten Distributionen kommt aber getty_ps zum Einsatz. mgetty unterstützt mit sendfax das Versenden von Faxen, während agetty für virtuelle Consolen oder Terminals prädestiniert zu sein scheint.




[Zurück]