LPIC101/101.2 Das System starten: Unterschied zwischen den Versionen

Aus Foxwiki
Bastianvierich (Diskussion | Beiträge)
K Textersetzung - „angewendet“ durch „angewandt“
 
(75 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=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


==Allgemeines:==
*grundsätzliche Funktionstüchtigkeit des Systems durch Power-on-Self-Test:<br>
*Test des Arbeitsspeichers auf seine Grösse und prinzipielle Funktionstüchtigkeit<br>
*nach der Initialisierung aller Hardwarekomponenten, sucht das BIOS nach einem Betriebssystem oder einem Programm, das ein Betriebssystem laden kann<br>
*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==
==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<br>
* Man kann 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)<br>
* 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<br>
* 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<br>
* Das BIOS liest dort ein Ladeprogramm, nämlich GRUB 2 und im unteren Bereich die Partitionstabelle
*je nach Betriebssystem läuft der Startvorgang in zwei unterschiedlichen Möglichkeiten ab:
* Da ein Sektor auf PC-Systemen nur eine Größe von 512 Bytes aufweist, müssen sich Bootcode und Partitionstabelle diesen Platz teilen: In den ersten 446 Bytes wird der Programmcode des Bootloaders ausgelagert, und in den nächsten 64 Bytes wird die Partitionstabelle untergebracht.
* Die letzten zwei Bytes enthalten den Wert 0xaa55, der zur Identifizierung des MBRs selbst dient.
#wenn ein Bootloader vorgefunden wurde gibt, gibt das BIOS die Kontrolle an diesen ab und beendet sich<br>
* Die verfügbaren 446 Bytes reichen definitiv nicht aus, um einen vernünftigen Bootloader darin unterzubringen. Daher dient dieser Code in der Regel nur dazu, einen zweiten Code zu laden, der sich auf einer der Partitionen befindet.
#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)<br>
* Diesen zweiten Bootloader bezeichnet man als Secondary Bootloader. Typische Secondary Bootloader für Linux-Systeme sind LILO und GRUB (bzw.&nbsp;das neuere GRUB2). Ebenfalls sehr bekannt ist GAG.
*die Partition die mit 80 beginnt ist die Startpartition<br>
#wenn ein Bootloader vorgefunden wurde gibt, gibt das BIOS die Kontrolle an diesen ab und beendet sich
*wenn kein Ladeprogramm im MBR vorliegt, folgt das BIOS nun diesem Verweis und und liest den Bootsektor der Partition aus<br>
#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)
*spätestens hier sollten sich Bootloader oder das Betriebssystem selbst befinden-> jetzt beginnt der Vorgang, den mann als das eigentliche Booten bezeichnet<br>
* Die Partition die mit 80 beginnt ist die Startpartition
*Wenn  Sie  Ihren  MBR  auf  dem  Bildschirm  ausgeben  wollen,  können  Sie  z. B. dieses Kommando verwenden:<br>
* 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.&nbsp;B.&nbsp; dieses Kommando verwenden:


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


==UEFI (Unified Extensible Firmware Interface)==
==UEFI (Unified Extensible Firmware Interface)==
*bei modernen Hauptplatinen kommt nicht mehr BIOS sondern UEFI zu Einsatz
* Bei modernen Hauptplatinen kommt nicht mehr BIOS sondern UEFI zu Einsatz
*grundsätzlicher Verwendungszweck kommt aber dem des BIOS gleich
* Grundsätzlicher Verwendungszweck kommt aber dem des BIOS gleich
*UEFI weist neue Funktionen auf:
* UEFI weist neue Funktionen auf:
** hohe Grafikauflösungen im Setup-Programm
** Hohe Grafikauflösungen im Setup-Programm
** Unterstüzung von GUID-Partitionstabellen für Festplatten mit einer Grösse von bis 8 Zebibytes
** Unterstüzung von GUID-Partitionstabellen für Festplatten mit einer Grösse von bis 8 Zebibytes
** Netzwerkanbindung zur Fernwartung
** Netzwerkanbindung zur Fernwartung
** Integrationsmöglichkeit von Treibern auf Firmware-Ebene
** Integrationsmöglichkeit von Treibern auf Firmware-Ebene
** integrierter Bootloader
** Integrierter Bootloader
** Digital Rights Managment
** Digital Rights Managment
*UEFI benötigt eine eigene Partition, diese wird als EFI System Partition(ESP) bezeichnet
* 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
* Diese Partition wird von Betriebssystemen, die UEFI unterstützen während der Installation automatisch angelegt
*benötigt FAT-Dateisystem
* 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
* 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
* 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
* Systemd-boot kann das nicht, dort muss der Kernel innerhalb der ESP liegen
*


==Boot-Strap-Loader==
==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<br>
* 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<br>
*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<br>
* 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<br>
*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
* 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
* Deshalb nennen wir den Begriff Boot-Strap-Loader, oder kurz Bootloader


==Kernel Parameter==
==Kernel Parameter==


* es gibt zwei Möglichkeiten dem Kernel beim Starten durch den Bootloader Parameter übergeben zu lassen:
* 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)<br>
** Eintragen der Kernel-Parameter bei jedem Systemstart durch Eintragen dieser in die Konfigurationsdatei grub.cfg(z.&nbsp;B.&nbsp;in/boot/grub/grub.cfg)<br>
        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 angewandt); 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==
* Initramfs steht für initial ram filesystem (sinngemäß übersetzt Ausgangsdateisystem im Arbeitsspeicher) und ist der Nachfolger von initrd.
* Das initramfs ist ein komprimiertes Archiv, das für den Systemstart benötigte Dateien enthält. Es kann vom Linux-Kernel beim Booten als Stammverzeichnis eingehängt werden.
* Die Imagedatei findet man in der Datei /boot/initrd
* Zur Erzeugung einer initialen Ramdisk kann man folgende Befehle verwenden
* Unter RedHat:
    mkinitrd


        linux  /boot/vmlinuz-4.6.3 root=/dev/sda1 apm=off


* 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==
<div class="toccolours mw-collapsible mw-collapsed">
Was ist ein Bootloader?
<div class="mw-collapsible-content">Der Bootloader ist ein Startprogramm welches gewöhnlich durch die Firmware (z.&nbsp;B.&nbsp;UEFI, oder dessen Vorgänger bei IBM-kompatiblen PCs, dem BIOS) eines Rechners von einem startfähigen Medium geladen und anschließend ausgeführt wird. Der Bootloader lädt dann weitere Teile des Betriebssystems, gewöhnlich einen Kernel.</div>
</div>


<div class="toccolours mw-collapsible mw-collapsed">
Wie kann man sich den MBR ausgeben lassen?
<div class="mw-collapsible-content">dd if=/dev/sda bs=512 count=1|od -h --endian=big</div>
</div>


<div class="toccolours mw-collapsible mw-collapsed">
Wie kann man sich die Ausgaben, die der Kernel während des Sysemstarts produziert, ausgeben lassen?
<div class="mw-collapsible-content">dmesg |less</div>
</div>


<div class="toccolours mw-collapsible mw-collapsed">
Was ist ein UEFI?
<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>


<code>dmesg |less</code>- Ausgaben die der Kernel während des Systemstarts ausgibt, Programmbefehl diese auszulesen
<div class="toccolours mw-collapsible mw-collapsed">
Wie kann man sich die Startprotokollierung  des Systems noch anzeigen lassen?
<div class="mw-collapsible-content">journalctl -k</div>
</div>


<code>grep kernel /var/log/messages | less</code> <br>
[[Kategorie:Linux/LPIC/101]]
unter systemd:  
<code>journalctl -k</code>  um Protokollierung des Systems auszulesen
</big>
</small>

Aktuelle Version vom 18. August 2023, 11:01 Uhr

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

  • Man kann 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, nämlich GRUB 2 und im unteren Bereich die Partitionstabelle
  • Da ein Sektor auf PC-Systemen nur eine Größe von 512 Bytes aufweist, müssen sich Bootcode und Partitionstabelle diesen Platz teilen: In den ersten 446 Bytes wird der Programmcode des Bootloaders ausgelagert, und in den nächsten 64 Bytes wird die Partitionstabelle untergebracht.
  • Die letzten zwei Bytes enthalten den Wert 0xaa55, der zur Identifizierung des MBRs selbst dient.
  • Die verfügbaren 446 Bytes reichen definitiv nicht aus, um einen vernünftigen Bootloader darin unterzubringen. Daher dient dieser Code in der Regel nur dazu, einen zweiten Code zu laden, der sich auf einer der Partitionen befindet.
  • Diesen zweiten Bootloader bezeichnet man als Secondary Bootloader. Typische Secondary Bootloader für Linux-Systeme sind LILO und GRUB (bzw. das neuere GRUB2). Ebenfalls sehr bekannt ist GAG.
  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 angewandt); 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

  • Initramfs steht für initial ram filesystem (sinngemäß übersetzt Ausgangsdateisystem im Arbeitsspeicher) und ist der Nachfolger von initrd.
  • Das initramfs ist ein komprimiertes Archiv, das für den Systemstart benötigte Dateien enthält. Es kann vom Linux-Kernel beim Booten als Stammverzeichnis eingehängt werden.
  • 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?

Der Bootloader ist ein Startprogramm welches gewöhnlich durch die Firmware (z. B. UEFI, oder dessen Vorgänger bei IBM-kompatiblen PCs, dem BIOS) eines Rechners von einem startfähigen Medium geladen und anschließend ausgeführt wird. Der Bootloader lädt dann weitere Teile des Betriebssystems, gewöhnlich einen Kernel.

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.

Wie kann man sich die Startprotokollierung des Systems noch anzeigen lassen?

journalctl -k