Montag, 16. Mai 2016

101.2 Das System startet

Wichtung: 3
  • Betriebssystem ist dazu da, um Software zu starten, ist aber selbst Software
  • => Boot-Strap-Problem (Henne-Ei-Problem)

Einschaltprozess

  • Einschalten
  • Initiale Prozesse im BIOS
    • Power-On-Self-Test -> grundsätzliche Funktionstüchtigkeit
    • Arbeitsspeicher auf Größe und Funktionstüchtigkeit prüfen
    • sehr oberflächlicher Test 
  • nach Initialisierung aller Hardwarekomponenten, sucht das BIOS nach einem Betriebssystem oder Programm, das ein Betriebssystem laden kann
    • Suchreihenfolge ist im BIOS hinterlegt
  • logischer Aufbau einer Festplatte:
    • max. 4 Partitionen (drei primäre + eine erweiterte)
    • Partitionstabelle befindet sich im Master Boot Record (MBR)
    • MBR ist eigenständig, gehört keiner Partition an und ist genau 512 Byte groß
    • MBR befindet sich am Anfang der Festplatte (Spur 0, Sektor 0)
  • BIOS liest nun den MBR aus
    • Beispiel in Buch zeigt ein Ladeprogramm in hexadezimaler Schreibweise (erste Stufe GRUB 2) und im unteren Bereich (letzten 5 Zeilen) die Partitionstabelle
    • 2 Möglichkeiten den Bootvorgang fortzusetzen:
      • Bootloader im MBR -> Übergabe der Kontrolle an diesen
      • Kein Bootloader vorhanden (nur Nullen in oberer Zeile des Ladeprogramms) -> Konsultation der Partitionstabelle nach Verweis auf eine startfähige Partition
  • Partionen werden im Ladeprogramm in den letzten 5 Zeilen dargestellt
    • Erste Partition (Startpartition) ist mit 8020 gekennzeichnet
    • Die Abschlussmarkierung der letzten Partition 55aa
    • Jede Partition nimmt eine Zeile ein
    • Darstellung der Hexadezimalen Bytes:
      • Big-Endian-First-Byte-Abfolge -> Vertauschung des High- und Lowbytes
      • Little-Endian-First-Byte-Abfolge -> niederwertigste Bits werden zuerst angezeigt
      • Historische Entwicklung: Intel verwendet Little-Endian, Motorola z.B. verwendet Big-Endian
  • Boot-Strap-Loader: GRUB Legacy, GRUB 2
  • Kernel Parameter werden durch dem Bootloader übergeben, oder man kann die Parameter auch per Hand initiieren
  • Automatisch: Eintrag in die Konfigurationsdateien des Bootloaders (z.B. /boot/grub/grub.conf)
    • z.B. kernel /bzImage-2.6.11 root=/dev/hda2 ide=nodma apm=off
  • Übergabe von Hand nur sinnvoll für Tests oder Fehlerbehebung, nicht permanent
    • Stoppen des Bootvorgangs, wenn Bootmenü erscheint, durch kurzes Betätigen der Cursortasten (in einer VM kommt man ins Auswahlmenü über die Shift-Taste)
    • Eintrag aus Bootmenü auswählen, mit Taste e bestätigen
    • Editor, in dem der entsprechende Booteintrag bearbeitet werden kann
    • Änderungen sind nicht permanent, nächsten Systemstart werden sie revidiert
    • Fortsetzen des Startvorgangs GRUB 2 Strg + X, GRUB Legacy Eingabetaste gefolgt von B
    • prominenter Übergabeparameter: init=/bin/bash Wird benötigt, um ein lokales Terminal zu initiieren. Dieses wird im nur lesen Modus gestartet, daher ist noch ein mount -o remount, rw / und passwd root notwendig, um dann das Kennwort für root neu setzten zu können
  • initramfs (initiale RAM-Disk): abgelegt unter /boot/initrd, Erzeugen mit mkinitrd (Red Hat) und mkinitramfs (Debian)
  • Startprotokollierung -> Protokollierung der Ausgaben, die der Kernel beim Start produziert
    • Auslesen des sogenannten Kernel-Ring-Buffers mit Hilfe des Programms dmesg
    • Ausgabe kann recht groß sein, daher empfiehlt es sich die Protokollierung entweder direkt in eine Datei umzuleiten, oder mit | less die Ausgabe zu kanalisieren 
    • Ausgabe wird wohl extrem gekürzt, da die Firewall direkt im Kernel integriert ist. Kann ich unter Ubuntu jedoch nicht bestätigen
    • Ansonsten findet man dieses Log auch unter /var/log/messages (nicht unter Ubuntu und RedHat) Hier werden die Informationen über einen längeren Zeitraum gespeichert.
    • Unter Ubuntu finden sich die Logs, wie z.B. syslog unter /var/log/ Dort findet man die gleichen Einträge wie unter dem Aufruf dmesg. Diese Protokolldateien haben zusätzlich zu den Informationen, ebenfalls einen Zeitstempel gespeichert.

Fragen: 
  • Wenn ein Bootloader installiert ist, wird die Kontrolle an diesen abgegeben. Ansonsten werden die Partitionen nach bootfähigen Programmen durchsucht. Bei meinen Ubuntu Installationen habe ich immer den GRUB Bootloader installiert. Übernimmt der nun, obwohl ich bootfähige Partitionen habe? Antwort: GRUB startet den Kernel, der auf der Partition abgelegt ist. Gibt es keine bootfähige Partition, sucht er nach anderen bootfähigen Medien
  • Unterschied zwischen Startsektor einer Partition und MBR genauer klären. Startsektor ist mir nicht ganz klar... Antwort: Der MBR ist eigenständig und gehört keiner Partition an. Der Startsektor ist der Anfang einer erweiterten Partition und verweist 

Keine Kommentare:

Kommentar veröffentlichen