BEZEICHNUNG
systemd-boot, sd-boot - Ein einfacher UEFI-SystemstartverwalterBESCHREIBUNG
systemd-boot (kurz sd-boot) ist ein einfacher UEFI-Systemstartverwalter. Er stellt ein textuelles 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 (XBOOTLDR), 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
Typ-#1-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, Boot
Loader-Spezifikation[1] Typ 2, die ausführbare EFI-Programme in
/EFI/Linux/ auf der ESP und der »Extended Boot Loader«-Partition
sind.
•Der
Microsoft-Windows-EFI-Systemstartverwalter, falls installiert.
•Der Apple-macOS-Systemstartverwalter,
falls installiert.
•Das EFI-Shell-Programm, falls
installiert.
•Ein Neustart in die
UEFI-Firmware-Einrichtungsoption, falls durch die Firmware
unterstützt.
•Registrierung der Variablen des
sicheren Systemstarts, falls die UEFI-Firmware sich im Einrichtungsmodus
befindet und Dateien auf dem ESP bereitgestellt werden.
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 EFI-System-Partition. Dies wird dann
dazu benutzt, automatisch die korrekte EFI-System-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-Vorrats während der frühen Systemstartphase
verwandt wird.
•Der Systemstartverwalter erlaubt die
Registrierung von Variablen für den sicheren Systemstart, falls sich
die UEFI-Firmware im Einrichtungsmodus befindet. Zusätzlich
können Variablen automatisch registriert werden, falls
konfiguriert.
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.
systemd-stub(7) kann als UEFI-Systemstartrumpf für
ausgeführte Kernel verwandt werden. Das ist nützlich, um
graphische Systemstartbilder zu zeigen, bevor in die Linux-Welt
übergeleitet wird. Es ist auch in der Lage, zusätzliche
Zugangsberechtigungsdateien aufzusammeln (für die Parametrisierung des
Systemstarts) und Erweiterungsabbilder für das System, wie
Begleitdateien für die gestarteten Kernelabbilder.
TASTENBELEGUNGEN
Im Boot-Menü können die folgenden Tasten verwandt werden: ↑ (Hoch), ↓ (Runter), j, k, SeiteHoch, SeiteRunter, Pos 1, EndeDie Eintragsliste hoch/runter navigieren
↵ (Eingabe), → (Rechts)
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
r
Ändert die Bildschirmauflösung,
überspringt nicht unterstützte Modi.
R
Setzt die Bildschirmauflösung auf die
Vorgabe der Firmware oder der Konfigurationsdatei zurück.
p
Gibt den Status aus
h, ?, F1
Zeigt einen Hilfebildschirm
f
Startet neu in die Firmware-Schnittstelle.
Zur Kompatibilität mit Tastaturbindungen mehrerer
Firmware-Implementierungen kann diese Aktion auch mit F2, F10, Entf und Esc
erreicht werden.
Die folgenden Tasten können während des Systemstarts oder im
Startmenü gedrückt werden, um direkt einen bestimmten Eintrag zu
starten:
l
Linux
w
Windows
a
macOS
s
EFI-Shell
1, 2, 3, 4, 5, 6, 7, 8, 9
Boot-Eintrag Nummer 1 … 9
Das Boot-Menü wird angezeigt, wenn eine Zeitüberschreitung
größer Null konfiguriert wurde. Falls die
Menü-Zeitüberschreitung auf Null gesetzt wurde, reicht es aus,
eine Taste zu drücken - bevor sich das Systemstartprogramm
initialisiert -- um das Boot-Menü hochzubringen. Ausnahmen sind die
direkt hierüber aufgeführten Tasten, da sie direkt in den
ausgewählten Boot-Menü-Eintrag starten. Beachten Sie, dass das
Zeitfenster, in dem Tastendrücke akzeptiert werden, bevor sich das
Systemstartprogramm initialisiert, abhängig von der
Firmware-Implementierung sehr kurz sein kann. Falls das Fenster verpasst wird,
starten Sie neu und versuchen Sie es erneut, möglicherweise, indem sie
eine geeignete Taste (beispielsweise die Leertaste) dauerhaft drücken:
auf den meisten Systemen sollte es möglich sein, das Zeitfenster nach
ein paar Versuchen zu treffen. Um das Problem zu vermeiden, sollten Sie
darüber nachdenken, die Zeitüberschreitung auf einen Wert
größer Null zu setzen, wodurch das Boot-Menü
bedingungslos angezeigt wird. Einige Desktop-Umgebungen könnten
anbieten, direkt in das Boot-Menü zu starten, um das Problem insgesamt
zu vermeiden. Alternativ können Sie auch die Befehlszeile systemctl
reboot --boot-loader-menu=0 auf der Shell verwenden.
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), Pos 1, Ende
Links/Rechts navigieren
Esc, Strg+c
Die Bearbeitung abbrechen und den Editor
beenden
Strg+k
Die Befehlszeile vorwärts leeren
Strg+w, Alt+Rückschritt
Rückwärts ein Wort
löschen
Strg+Entf, Alt+d
Vorwärts ein Wort löschen
↵ (Eingabe)
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.
DATEIEN
Die Dateien, die systemd-boot verarbeitet, befinden sich im Allgemeinen auf der UEFI ESP, die normalweise während der Laufzeit des Betriebssystems auf /efi/, /boot/ oder /boot/efi/ eingehängt ist. Es verarbeitet auch Dateien auf der Erweiterten Systemlade-Partition, die normalerweise auf /boot/ eingehängt ist, falls sie existiert. systemd-boot liest Laufzeitkonfiguration wie die Systemstart-Zeitüberschreitung und den Vorgabeeintrag aus /loader/loader.conf aus dem ESP (zusammen mit aus EFI-Variablen gelesenen Daten). Siehe loader.conf(5). Systemstarteintragbeschreibungsdateien, die der Boot Loader-Spezifikation[1] folgen, werden aus /loader/entries/ auf dem ESP und der Erweiterten Systemladepartition gelesen. Vereinigte Kernel-Einträ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 der Entropie-Sammlung für die frühe Systemstartphase in /loader/random-seed in dem ESP gespeichert. Während der Initialisierung lädt sd-boot automatisch alle im Verzeichnis /EFI/systemd/drivers/ auf dem ESP abgelegten Treiberdateien. Die dort abgelegten Dateien müssen eine Erweiterung der EFI-Architekturkennung gefolgt von .efi haben (für x86-64 bedeutet dies beispielsweise eine Endung x64.efi). Dies kann zum automatischen Laden von Dateisystemtreibern und ähnlichem verwandt werden, um die Unterstützung der nativen Firmware zu erweitern. Die Registrierung von Variablen für den sicheren Systemstart kann manuell oder automatisch erfolgen, falls Dateien unter /keys/ NAME/{db,KEK,PK}.auth verfügbar sind. NAME ist der Anzeigename für die Variablengruppe im Menü. Falls eine der Gruppen »auto« heißt, dann könnte sie automatisch registriert werden, abhängig davon, ob »secure-boot-enroll« auf »force« gesetzt ist.EFI-VARIABLEN
Die folgenden EFI-Variablen sind definiert und werden durch systemd-boot unter der Lieferanten-UUID »4a67b082-0a4c-41cf-b6c7-440b29bb8c4f« für die Kommunikation zwischen dem Boot-Loader und dem Betriebssystem gesetzt und gelesen: LoaderBootCountPathFalls 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 Zufallsvorrat 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 Entropievorrat des Kernels startet, und
zwar schon während der Initrd-Phase. 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.
STARTZÄHLUNG
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ücksichtigt den Zähler
»verbliebene Einträge« bei der Sortierung der
Menüeinträge: Einträge im »schlechten«
Zustand werden am Anfang der Liste einsortiert und Einträge im
»guten« oder »unbestimmten« Zustand am Ende. 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 unterste 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.
SIEHE AUCH
bootctl(1), loader.conf(5), systemd-bless-boot.service(8), systemd-boot-system-token.service(8), kernel-install(8), systemd-stub(7), Boot-Loader-Spezifikation[1], Boot-Loader-Schnittstelle[2]ANMERKUNGEN
- 1.
- Systemladerspezifikation
- 2.
- Boot-Loader-Schnittstelle
- 3.
- Automatische Systemstartbeurteilung
- 4.
- Zufallsstartwerte
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <[email protected]> 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 die Mailingliste der Übersetzersystemd 252 |