LPIC101/101.2 Das System starten
Das System starten
Allgemeines:
- grundsätzliche Funktionstüchtigkeit des Systems durch Power-on-Self-Test:
- Test des Arbeitsspeichers auf seine Grösse und prinzipielle Funktionstüchtigkeit
- nach der Initialisierung aller Hardwarekomponenten, sucht das BIOS nach einem Betriebssystem oder einem Programm, das ein Betriebssystem laden kann
- im BIOS ist eine genaue Suchreihenfolge hinterlegt und diese beinhaltet meist Diskettenlaufwerke, Festplatten, CD-ROMS, SCSI-Adapter, USB-Geräte und zudem bootfähige Netzwerkkarten
Startvorgang auf Festplatten
- bei Linux kann man drei primäre und eine erweiterte Partition konfigurieren, diese erweiterte Partition kann ihrerseits logische Partitionen enthalten, die ebenfalls nicht von der Partitionstabelle verwaltet werden
- diese Patitionstabelle befindet sich im sogenannten MBR (Master Boot Record)
- MBR gehört selbst keiner Partition an sondern ist eigenständig und ist genau 512 Byte gross und befindet sich am Anfang einer Festplatte im Sektor 0, Spur 0
- das BIOS liest dort ein Ladeprogramm in hexadezimaler Schreibweise, nämlich GRUB 2 und im unteren Bereich die Partitionstabelle
- je nach Betriebssystem läuft der Startvorgang in zwei unterschiedlichen Möglichkeiten ab:
- wenn ein Bootloader vorgefunden wurde gibt, gibt das BIOS die Kontrolle an diesen ab und beendet sich
- wenn kein Bootloader vorhanden ist, konsultiert das BIOS die Partitionstabelle: hier sucht das BIOS nach einer startfähigen Partition (diese Partitionstabelle beginnt in der 5. Zeile von unten mit 8020 und endet mit 55aa; 55aa ist die Abschlussmarkierung)
- die Partition die mit 80 beginnt ist die Startpartition
- wenn kein Ladeprogramm im MBR vorliegt, folgt das BIOS nun diesem Verweis und und liest den Bootsektor der Partition aus
- spätestens hier sollten sich Bootloader oder das Betriebssystem selbst befinden-> jetzt beginnt der Vorgang, den mann als das eigentliche Booten bezeichnet
- Wenn Sie Ihren MBR auf dem Bildschirm ausgeben wollen, können Sie z. B. dieses Kommando verwenden:
dd if=/dev/sda bs=512 count=1|od -h --endian=big
UEFI (Unified Extensible Firmware Interface)
- bei modernen Hauptplatinen kommt nicht mehr BIOS sondern UEFI zu Einsatz
- grundsätzlicher Verwendungszweck kommt aber dem des BIOS gleich
- UEFI weist neue Funktionen auf:
- hohe Grafikauflösungen im Setup-Programm
- Unterstüzung von GUID-Partitionstabellen für Festplatten mit einer Grösse von bis 8 Zebibytes
- Netzwerkanbindung zur Fernwartung
- Integrationsmöglichkeit von Treibern auf Firmware-Ebene
- integrierter Bootloader
- Digital Rights Managment
- UEFI benötigt eine eigene Partition, diese wird als EFI System Partition(ESP) bezeichnet
- diese Partition wird von Betriebssystemen, die UEFI unterstützen während der Installation automatisch angelegt
- benötigt FAT-Dateisystem
- die EFI System Partition wird unter Linux im Verzeichnis /boot/efi bereitgestellt, enthält zumindest den Bootloader oder andere zum Start benötigte Dateien
- GRUB zum Beispiel kann den Kernel auch laden, wenn er sich nicht in der ESP befindet
- systemd-boot kann das nicht, dort muss der Kernel innerhalb der ESP liegen
Boot-Strap-Loader
- dieser Ausdruck kommt von der Geschichte von Baron von Münchhausen, der in einen Sumpf gefallen sein soll und sich selber an den eigenen Haaren aus diesem Sumpf herausgezogen haben soll
- beim Übersetzen der Münchhausen-Geschichte ins Englische wurde es so abgewandelt, dass sich der Baron am Stiefelgurt(Boot-Strap) aus dem Sumpf gezogen haben soll
- so kann man sich das Hochziehen des Betriebssystem sinnbildlich vorstellen: ein Betriebssystem dient einerseits als Plattform um Software auszuführen, andererseits ist ein Betriebssystem selber Software
- deshalb nennen wir den Begriff Boot-Strap-Loader, oder kurz Bootloader
Kernel Parameter
- es gibt zwei Möglichkeiten dem Kernel beim Starten durch den Bootloader Parameter übergeben zu lassen:
- Eintragen der Kernel-Parameter bei jedem Systemstart durch Eintragen dieser in die Konfigurationsdatei grub.cfg(z.B.in/boot/grub/grub.cfg)
dmesg |less
- Ausgaben die der Kernel während des Systemstarts ausgibt, Programmbefehl diese auszulesen
grep kernel /var/log/messages | less
unter systemd:
journalctl -k
um Protokollierung des Systems auszulesen