systemd-boot (kurz sd-boot) ist ein einfacher
UEFI-Systemstartverwalter. Er stellt ein graphisches Menü zur Auswahl
des zu startenden Eintrags und einen Editor für die
Kernelbefehlszeile zur Verfügung. systemd-boot
unterstützt nur Systeme mit UEFI-Firmware.
systemd-boot lädt Systemstarteintragsinformationen
aus der EFI-Systempartition (ESP), die zur Betriebssystemlaufzeit
normalerweise unter /efi/, /boot/ oder /boot/efi/ eingehängt ist,
sowie von der »Extended Boot Loader«-Partition, falls sie
existiert (normalerweise unter /boot/ eingehängt).
Konfigurationsdateifragmente, Kernel, Initrds und andere zu startende
EFI-Images müssen im Allgemeinen in der ESP oder der »Extended
Boot Loader«-Partition liegen. Linux-Kernel müssen mit
CONFIG_EFI_STUB gebaut sein, damit sie direkt als EFI-Image
ausgeführt werden können. Während des Systemstarts
fügt systemd-boot automatisch eine Liste von
Systemstarteinträgen aus den folgenden Quellen zusammen:
•Systemstarteinträge, die in
Beschreibungsdateien gemäß der Boot
Loader-Spezifikation[1] in /loader/entries/ auf der ESP und der
»Extended Boot Loader«-Partition liegen. Diese beschreiben
normalerweise Linux-Kernel-Images mit zugehörigen Initrd-Images,
können aber alternativ auch beliebige andere EFI-Programme
beschreiben.
•Vereinigte Kernel-Images, die der Boot
Loader-Spezifikation[1] folgen, als ausführbare EFI-Programme in
/EFI/Linux/ auf der ESP und der »Extended Boot
Loader«-Partition.
•Der Microsoft-Windows-EFI-Systemstartverwalter,
falls installiert.
•Der Apple-MacOS-X-Systemstartverwalter, falls
installiert.
•Das EFI-Shell-Programm, falls installiert.
•Ein Neustart in die
UEFI-Firmware-Einrichtungsoption, falls durch die Firmware
unterstützt.
systemd-boot unterstützt die folgenden
Funktionalitäten:
•Grundlegende Änderungen an der
Konfiguration des Systemstartverwalters (wie Konfiguration der
Zeitüberschreitung, Vorgabe-Systemstartauswahl, …) können
direkt zum Systemstartzeitpunkt von der Bedienoberfläche des
Systemstartprogramms aus vorgenommen werden, sowie während der Laufzeit
des Systems mit EFI-Variablen.
•Der Systemstartverwalter integriert mit dem
Befehl
systemctl, um Funktionalitäten wie
systemctl reboot
--boot-loader-entry=… (zum Neustart in einen bestimmten
Systemstartmenüeintrag, d.h. »Neustart in Windows«) und
systemctl reboot --boot-loader-menu=… (zum Neustawrten in das
Systemstartmenü) zu implementieren, indem die
Systemladerschnittstelle[2] implementiert wird. Siehe
systemctl(1) für Details.
•Eine durch den Systemstartverwalter gesetzte
EFI-Variable informiert das Betriebssystem über die während des
Systemstarts verwandte ESP-Partition. Dies wird dann dazu benutzt, automatisch
die korrekte ESP-Partition unter /efi/ oder /boot/ zur Betriebssystemlaufzeit
einzuhängen. Siehe
systemd-gpt-auto-generator(8) für
Details.
•Der Systemstartverwalter stellt unter Verwendung
der
Boot-Loader-Schnittstelle[2] Informationen über die in der
UEFI-Firmware verbrachte Zeit bereit. Diese Information kann mittels
systemd-analyze(1) dargestellt werden.
•Der Systemstartverwalter implementiert das
Systemstartzählen und fällt bei Fehlschlägen automatisch
zu älteren, funktionierenden Systemstarteinträgen zurück.
Siehe Automatische Systemstartbeurteilung[3].
•Der Systemstartverwalter liest optional die
Zufallsstartwerte aus der ESP-Partition, kombiniert sie mit einem in einer
dauerhaften EFI-Variable abgelegten »Systemmerkmal« und leitet
einen Zufallsstartwert ab, der vom Betriebssystem zur Initialisierung des
Entropie-Fundus während der frühen Systemstartphase verwandt
wird.
bootctl(1) kann aus dem laufenden System verwandt werden,
um die ESP und die »Extended Boot Loader«-Partition zu
ermitteln, verfügbare Einträge aufzulisten und
systemd-boot selbst zu installieren.
kernel-install(8) kann zum Kopieren des Kernel-Images auf
die ESP oder die »Extended Boot Loader«-Partition und zur
Erstellung von Beschreibungsdateien, die konform mit der
Boot-Loader-Spezifikation sind, verwandt werden.
Im Boot-Menü können die folgenden Tasten verwandt
werden:
� (Hoch), �
(Runter), j, k, SeiteHoch, SeiteRunter, Pos 1, Ende
Die Eintragsliste hoch/runter navigieren
� (Eingabetaste)
Den ausgewählten Eintrag starten
d
Den ausgewählten Eintrag als Vorgabe setzen
e
Für den ausgewählten Eintrag die
Kernelbefehlszeile bearbeiten
+, t
Die Zeitüberschreitung vor dem Starten des
Vorgabeeintrags erhöhen
-, T
Die Zeitüberschreitung verringern
v
Zeigt die Versionen von Systemd-boot, UEFI und der
Firmware
P
Gibt den Status aus
Q
Beendet
h, ?
Zeigt einen Hilfebildschirm
Strg+l
Gibt den Bildschirm erneut aus
Die folgenden Tasten können während des Systemstarts
oder im Startmenü verwandt werden, um direkt einen bestimmten Eintrag
zu starten:
l
Linux
w
Windows
a
OS X
s
EFI-Shell
1, 2, 3, 4, 5, 6, 7, 8, 9
Boot-Eintrag Nummer 1 … 9
Im Editor fügen die meisten Tasten einfach sich selbst ein,
aber die folgenden Tasten können zur Ausführung
zusätzlicher Aktionen verwandt werden:
� (Links), �
(Rechts), Pos1, Ende
Links/Rechts navigieren
Esc
Die Bearbeitung abbrechen und den Editor beenden
Strg+k
Die Befehlszeile leeren
Strg+w, Alt+Rückschritt
Rückwärts ein Wort löschen
Alt+d
Vorwärts ein Wort löschen
� (Eingabetaste)
Starteintrag mit der bearbeiteten Befehlszeile
Beachten Sie, dass Systemd-boot die US-Tastaturbelegung verwenden
wird, falls es nicht anders konfiguriert wurde, und daher die
Tastenbezeichnungen für Tasten wie +/- nicht passen
könnten.
Die Dateien, die systemd-boot verarbeitet, liegen im
Allgemeinen auf der UEFI ESP, die normalerweise während der Laufzeit
des Betriebssystems nach /efi/, /boot/ oder /boot/efi/ eingehängt
ist. Sie verarbeitet auch Dateien auf der »Extended Boot
Loader«-Partition, die normalerweise auf /boot/ eingehängt
ist, falls sie existiert. systemd-boot liest Laufzeitkonfigurationen
wie die Systemstartzeitüberschreitung und den Standardeintrag aus
/loader/loader.conf in der ESP (in Kombination mit aus EFI-Variablen
gelesenen Daten). Siehe loader.conf(5).
Systemeintragbeschreibungsdateien, die der
Boot-Loader-Spezifikation[1] folgen, werden aus /loader/entries/auf
der ESP und der »Extended Boot Loader«-Partition gelesen.
Vereinigte Kernelsystemstarteinträge, die der
Boot-Loader-Spezifikation[1] folgen, werden aus /EFI/Linux/ auf der
ESP und der »Extended Boot Loader«-Partition gelesen. Optional
wird ein Zufallsstartwert für die Bereitstellung von Entropie im
Fundus während der frühen Systemstartphase unter
/loader/random-seed im ESP gespeichert.
Die folgenden EFI-Variablen sind definiert und werden durch
systemd-boot unter der Lieferanten-UUID
»4a67b082-0a4c-41cf-b6c7-440b29bb8c4« für die
Kommunikation zwischen dem Betriebssystem und dem Boot-Loader gesetzt und
gelesen:
LoaderBootCountPath
Falls Startzählung aktiviert ist, enthält
dies den Pfad zu der Datei, in deren Namen die Startzähler kodiert
sind. Wird durch den Boot-Loader gesetzt.
systemd-bless-boot.service(8)
verwendet diese Informationen, um einen Systemstart als erfolgreich zu
markieren, wie dies durch die erfolgreiche Aktivierung der Ziel-Unit
boot-complete.target bestimmt wird.
LoaderConfigTimeout, LoaderConfigTimeoutOneShot
Die Menü-Zeitüberschreitung in Sekunden.
Wird vom Boot-Loader gelesen. LoaderConfigTimeout wird dauerhaft
verwaltet, während LoaderConfigTimeoutOneShot eine einmalige
Außerkraftsetzung ist, die einmal gelesen wird (und in diesem Fall
Vorrang vor LoaderConfigTimeout hat) und dann entfernt wird.
LoaderConfigTimeout kann mit den Tasten t/T verändert werden,
siehe oben.
LoaderDevicePartUUID
Enthält die Partitions-UUID der
EFI-Systempartition, von der der Boot-Loader gestartet wurde. Wird vom
Boot-Loader gesetzt.
systemd-gpt-auto-generator(8) verwendet diese
Information, um automatisch die Platte zu finden, von der gestartet wurde, um
die verschiedenen anderen Partitionen auf der gleichen Platte automatisch zu
erkennen.
LoaderEntries
Eine Liste der Kennzeichner aller erkannten
Boot-Loader-Einträge. Wird vom Boot-Loader gesetzt.
LoaderEntryDefault, LoaderEntryOneShot
Der Kennzeichner des Standard-Boot-Loader-Eintrags. Wird
primär vom Betriebssystem gesetzt und vom Boot-Loader gelesen.
LoaderEntryOneShot setzt den Vorgabeeintrag für nur den
nächsten Systemstart, während
LoaderEntryDefault ihn
dauerhaft für alle zukünftigen Systemstarts setzt. Die Befehle
set-default und
set-oneshot von
bootctl(1) verwenden
diese Variablen. Der Boot-Loader verändert auf Anfrage
LoaderEntryDefault, wenn die Taste »d« gedrückt
wird, siehe oben.
LoaderEntrySelected
Der Kennzeichner des Boot-Loader-Eintrags, der derzeit
gestartet wird. Wird vom Boot-Loader gesetzt.
LoaderFeatures
Eine Gruppe von Schaltern, die anzeigen, welche
Funktionalitäten der Boot-Loader unterstützt. Wird vom
Boot-Loader gesetzt. Verwenden Sie
bootctl(1), um diese Daten
anzuschauen.
LoaderFirmwareInfo, LoaderFirmwareType
Kurze Firmware-Information. Wird vom Boot-Loader gesetzt.
Verwenden Sie
bootctl(1), um diese Daten anzuschauen.
LoaderImageIdentifier
Der Pfad zu dem Programm des Boot-Loaders, der für
den aktuellen Systemstart verwandt wurde, relativ zum Wurzelverzeichnis der
EFI-Systempartition. Wird vom Boot-Loader gesetzt. Verwenden Sie
bootctl(1), um diese Daten anzuschauen.
LoaderInfo
Kurze Informationen über den Boot-Loader. Wird vom
Boot-Loader gesetzt. Verwenden Sie
bootctl(1), um diese Daten
anzuschauen.
LoaderTimeExecUSec, LoaderTimeInitUSec,
LoaderTimeMenuUsec
Informationen über die in verschiedenen Teilen des
Boot-Loaders verbrachte Zeit. Wird vom Boot-Loader gesetzt. Verwenden Sie
systemd-analyze(1), um diese Daten anzuschauen.
LoaderRandomSeed
systemd-boot kann optional einen binären
Zufallsstartwert an das Betriebssystem weitergeben. Dies ist eine
flüchtige EFI-Variable, die einen während des Systemstarts
ermittelten Hash aus der Kombination des in der ESP gespeicherten
Zufallsstartwertes (in /loader/random-seed) und einem
»Systemmerkmal«, das dauerhaft in der EFI-Variablen
LoaderSystemToken (siehe unten) enthält. Während der
frühen Betriebssystemstartphase liest der Systemverwalter diese
Variable und gibt sie an den Zufallsfundus des Kernels weiter und schreibt die
vollständige Entropie, die es enthält, gut. Dies ist eine
effiziente Art, um sicherzustellen, dass das System mit einem
vollständig initialisierten Entropiefundus des Kernels startet, und
zwar schon während der Phase der anfänglichen RAM-Platte.
systemd-boot liest den Zufallsstartwert aus dem ESP, kombiniert ihn mit
dem »Systemmerkmal« und leitet einen neuen Zufallsstartwert ab,
um an gleicher Stellen den im ESP gespeicherten Startwert zu ersetzen, sowie
den Zufallsstartwert, um ihn an das Betriebssystem in einem SHA256-Hash im
Zählermodus weiterzugeben. Dies stellt sicher, dass verschiedene
physische Systeme, die mit dem gleichen »goldenen«
Betriebssystemabbild starten, d.h. die die gleiche Zufallsstartwertedatei im
ESP enthalten, dennoch einen verschiedenen Zufallsstartwert an das
Betriebssystem weitergeben. Es wird sichergestellt, dass der im ESP
gespeicherte Zufallsstartwert überschrieben ist, bevor das
Betriebssystem startet, um sicherzustellen, dass zwischen nachfolgenden
Systemstarts verschiedene Zufallsstartwerte verwandt werden.
Siehe Zufallsstartwerte[4] für weitere
Informationen.
LoaderSystemToken
Ein binäres Zufallsdatenfeld, das zur Erzeugung
des an das Betriebssystem zu übergebenen Zufallsstartwertes verwandt
wird (siehe oben). Beachten Sie, dass diese Zufallsdaten im Allgemeinen nur
einmal während der Betriebssysteminstallation erstellt und nie wieder
aktualisiert werden.
Viele dieser Variablen werden durch die
Systemladerschnittstelle[2] definiert.
systemd-boot implementiert einen einfachen
Startzählungsmechanismus auf Grundlage der
Boot-Loader-Spezifikation[1], für automatischen und
unbeaufsichtigten Rückfall zu älteren
Kernelversionen/Boot-Loader-Einträgen, wenn ein bestimmter Eintrag
dauerhaft fehlschlägt. Alle Boot-Loader-Eintragsdateien und
vereinigte Kernel-Image-Dateien, bei denen ein »+« von einer
oder mehreren Zahlen (falls es zwei sind, müssen sie durch ein
»-« getrennt werden) vor der Endung ».conf« oder
».efi« gefolgt ist, unterliegen der Startzählung: die
erste der zwei Zahlen (»verbliebene Einträge«) wird bei
jedem Systemstartversuch heruntergezählt, die zweite der zwei Zahlen
(»unternommene Versuche«) wird um einen erhöht (falls
»unternommene Versuche« nicht vorhanden ist, wird es als 0
angenommen). Abhängig vom aktuellen Wert dieser zwei Zähler
wird der Boot-Eintrag einem der drei Zustände zugeordnet:
1.Falls der Zähler »verbliebene
Einträge« eines Eintrages größer als Null ist,
wird der Eintrag dem Zustand »unbestimmt« zugeordnet. Das
bedeutet, dass der Eintrag noch nicht erfolgreich gestartet wurde, aber auch
noch nicht als nicht funktionstüchtig erkannt wurde.
2.Falls der Zähler »verbliebene
Einträge« eines Eintrages gleich Null ist, wird der Eintrag in
einem »schlechten« Zustand angenommen. Das bedeutet, dass keine
weiteren Versuche unternommen werden, diesen Eintrag zu starten (das bedeutet,
außer alle anderen Boot-Einträge sind auch in einem
»schlechten« Zustand), da alle Versuche, diesen Eintrag zu
starten, nicht erfolgreich abgeschlossen wurden.
3.Falls die Zähler »verbliebene
Einträge« und »unternommene Versuche« eines
Eintrags fehlen, wird er in einem »guten« Zustand angenommen.
Das bedeutet, dass weiteres Startzählen für diesen Eintrag
abgeschaltet ist, da er mindestens einmal erfolgreich startete. Der Dienst
systemd-bless-boot.service(8) verschiebt den aktuell gestarteten
Eintrag vom Zustand »unbestimmt« in den Zustand
»gut«, wenn ein Systemstartversuch erfolgreich abgeschlossen
wurde.
Im Allgemeinen befinden sich neu hinzugefügte
Einträge zum Boot-Loader zuerst im Zustand
»unbestimmt«, d.h. mit dem Zähler »verbliebene
Einträge« größer als Null. Der
Systemstarteintrag verbleibt in diesem Zustand, bis er entweder mindestens
einmal erfolgreich durchgeführt wurde (woraufhin er sich im Zustand
»gut« befindet) — oder der Zähler
»verbliebene Einträge« erreicht Null (woraufhin er sich
im Zustand »schlecht« befindet).
Beispiel: Die Systemstartladereintragsdatei foo.conf ist
für 3 Startversuche eingerichtet. Das Installationsprogramm wird es
daher unter dem Namen foo+3.conf erstellen. Beim ersten Systemstart wird der
Boot-Loader ihn in foo+2-1.conf umbenennen. Falls dieser Systemstart nicht
erfolgreich abgeschlossen werden kann, wird ihn der Boot-Loader in
foo+1-2.conf beim nachfolgenden Systemstart umbenennen. Falls dieser auch
fehlschlägt, wird er schließlich in foo+0-3.conf beim
nachfolgenden Systemstart umbenannt, anschließend wird er als
»schlecht« betrachtet. Falls allerdings der Systemstart
erfolgreich abgeschlossen wird, wird die Eintragsdatei durch das
Betriebssystem in foo.conf umbenannt, so dass sie von diesem Zeitpunkt an
als »gut« betrachtet wird.
Das Systemstartmenü berüchsichtigt den Zähler
»verbliebene Einträge« bei der Sortierung der
Menüeinträge: Einträge im »schlechten«
Zustand werden am Ende der Liste einsortiert und Einträge im
»guten« oder »unbestimmten« Zustand am Anfang.
Der Benutzer kann frei den zu startenden Eintrag aus dem Menü
aussuchen, auch die bereits als »schlecht« markierten. Falls
der zu startende Eintrag automatisch bestimmt wird, bedeutet dies, dass
»gute« oder »unbestimmte« Einträge im
Allgemeinen bevorzugt werden (da der oberste Eintrag im Menü
standardmäßig gestartet wird) und »schlechte«
Einträge nur berücksichtigt werden, falls keine
»guten« oder »unbestimmten« Einträge
verblieben sind.
Das Kernelinstallationsrahmenwerk kernel-install(8) setzt
optional den anfänglichen Zähler »verbliebene
Einträge« auf den in /etc/kernel/tries festgelegten Wert, wenn
ein Systemstarteintrag erstmals erstellt wird.
- 1.
- Systemstartladeprogrammspezifikation
https://systemd.io/BOOT_LOADER_SPECIFICATION
- 2.
- Boot-Loader-Schnittstelle
https://systemd.io/BOOT_LOADER_INTERFACE
- 3.
- Automatische Systemstartbeurteilung
https://systemd.io/AUTOMATIC_BOOT_ASSESSMENT
- 4.
- Zufallsstartwerte
https://systemd.io/RANDOM_SEEDS
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von
Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite
finden, schicken Sie bitte eine E-Mail an
<debian-l10n-german@lists.debian.org>.