LPIC101/101.2 Das System starten: Unterschied zwischen den Versionen

Aus Foxwiki
Bastianvierich (Diskussion | Beiträge)
Bastianvierich (Diskussion | Beiträge)
Zeile 110: Zeile 110:


<div class="toccolours mw-collapsible mw-collapsed">
<div class="toccolours mw-collapsible mw-collapsed">
Wie kann man die Dateien in einem Verzeichnis nach Dateigröße sortieren?
Was ist ein UEFI?
<div class="mw-collapsible-content">ls -s | sort -n</div>
<div class="mw-collapsible-content">Bei modernen Hauptplatinen kommt die Unified Extensible Firmware Interface zum Einsatz.Es hat den grundsätzlich gleichen Verwendungszweck wie ein BIOS.</div>
</div>
</div>



Version vom 18. November 2019, 14:53 Uhr

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:
  1. wenn ein Bootloader vorgefunden wurde gibt, gibt das BIOS die Kontrolle an diesen ab und beendet sich
  2. 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 man 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)
        linux  /boot/vmlinuz-4.6.3 root=/dev/sda1 apm=off
  • oder übergeben der Parameter per "Hand" während des Systemstarts im Bootmenü durch Auswählen des gewünschten Eintrages bei GRUP2(diese sind nicht dauerhaft und werden beim nächsten Systemstart nicht mehr angewendet); zum Beispiel:
        init=/bin/bash   
  • wobei nicht der init-Prozess gestartet wird, sondern nur die Shell /bin/bash ohne eine Passwortabfrage, das Root-Dateisystem ist dann allerdings nur im Nur-lesen-Modus gemountet und muss durch den Befehl
        mount -o remount,rw /
        passwd root
  • erweitert werden; jetzt kann man sein Kennwort ändern und den Computer wieder im normalen Modus neu starten

initramfs

  • die Imagedatei findet man in der Datei /boot/initrd
  • zur Erzeugung einer initialen Ramdisk kann man folgende Befehle verwenden
  • unter RedHat:
   mkinitrd


  • unter Debian:
   mkinitramfs

Startprotokollierung

  • Ausgaben die der Kernel während des Systemstarts ausgibt werden im Kernel-Ring-Puffer gespeichert
  • Programmbefehl diesen auszulesen: dmesg
  • weil der Befehl mehrere hundert Zeilen ausgeben kann, sollte man die Ausgabe an less übergeben
   dmesg |less
  • wenn man Informationen über den Systemstartvorgang benötigt, die schon länger zurückliegen, kann man bei älteren Systemen die Log-Dateien durchsuchen (zu finden in /var/log/syslog)
  • um Kernel-bezogene Meldungen schneller zu finden, sollte man man mittels grep filtern und an less übergeben:
   grep kernel /var/log/messages | less


  • heutige Linux-Systeme verwenden systemd
  • unter systemd um Protokollierung des Systems auszulesen mit der Option -k
   journalctl -k

Kontrollfragen

Was ist ein Bootloader?

Wie kann man sich den MBR ausgeben lassen?

dd if=/dev/sda bs=512 count=1|od -h --endian=big

Wie kann man sich die Ausgaben, die der Kernel während des Sysemstarts produziert, ausgeben lassen?

dmesg |less

Was ist ein UEFI?

Bei modernen Hauptplatinen kommt die Unified Extensible Firmware Interface zum Einsatz.Es hat den grundsätzlich gleichen Verwendungszweck wie ein BIOS.

Was passiert bei folgender Befehlszeile : dd if=/dev/sda bs=512 count=1|od -h --endian=big | nl

Der Master-Boot-Record (die ersten 512 Byte der Festplatte) wird ausgegeben. Der Befehl od -h gibt ihn in Hexadezimaler Form aus und der Befehl nl nummeriert die Zeilen.