bootctl - Steuern Sie die EFI-Firmware-Starteinstellungen und verwalten Sie den Bootloader
bootctl [OPTIONS...] {COMMAND}
bootctl kann die EFI-Firmware und den Bootloader-Status überprüfen, verfügbare Bootloader und Bootloader-Einträge auflisten und verwalten sowie systemd-boot(7) installieren, aktualisieren oder entfernen. Bootloader auf dem aktuellen System.
Diese Befehle sind auf jedem EFI-System verfügbar, unabhängig vom verwendeten Bootloader.
Zeigt kurze Informationen über die System-Firmware, den Bootloader, der zum Booten des Systems verwendet wurde, die aktuell im ESP verfügbaren Bootloader, die in der Firmware-Liste der Bootloader aufgeführten Bootloader und den aktuellen Standard-Bootloader-Eintrag an. Wenn kein Befehl angegeben ist, ist dies die implizite Standardeinstellung.
Einzelheiten zur Ausgabe finden Sie im Beispiel unten.
Fragen Sie das Flag „Reboot-Into-Firmware-Setup“ der EFI-Firmware ab oder setzen Sie es. Akzeptiert ein boolesches Argument, das steuert, ob das Firmware-Setup beim nächsten Systemneustart angezeigt werden soll. Wenn das Argument weggelassen wird, wird der aktuelle Status des Flags angezeigt oder ob das Flag unterstützt wird. Dies steuert das gleiche Flag wie systemctl reboot --firmware-setup, ist jedoch auf niedrigerer Ebene und ermöglicht das Setzen des Flags unabhängig von der tatsächlichen Anforderung eines Neustarts.
Hinweis: Verwenden Sie systemctl reboot --firmware-setup, um das Firmware-Setup einmal neu zu starten. Weitere Informationen finden Sie unter systemctl(1).
Beim Aufruf ohne das optionale Argument wird der aktuelle Wert der EFI-Variablen „SystemdOptions“ gedruckt. Beim Aufruf mit einem Argument wird die Variable auf diesen Wert gesetzt. Siehe systemd(1) für die Bedeutung dieser Variablen.
Diese Befehle sind für alle Bootloader verfügbar, die die Boot Loader Specification[1] implementieren, wie zum Beispiel systemd-boot.
Zeigt alle verfügbaren Bootloader-Einträge an, die die Boot Loader-Spezifikation[1] implementieren, sowie alle anderen Einträge, die von einem Bootloader erkannt oder automatisch generiert werden, der die Boot Loader-Schnittstelle[2 implementiert ]. Die JSON-Ausgabe kann mit --json= angefordert werden.
Einzelheiten zur Ausgabe finden Sie im Beispiel unten.
Entfernt einen Bootloader-Eintrag einschließlich der Dateien, auf die er verweist. Akzeptiert eine einzelne Bootloader-Eintrags-ID-Zeichenfolge oder ein Glob-Muster als Argument. Referenzierte Dateien wie kernel oder initrd werden nur entfernt, wenn kein anderer Eintrag auf sie verweist.
Entfernt Dateien aus den ESP- und XBOOTLDR-Partitionen, die zum Eintragstoken gehören, auf die aber in keinem Bootloader-Eintrag verwiesen wird.
Diese Befehle sind für alle Bootloader verfügbar, die die Boot Loader Specification[1] und die Boot Loader Interface[2] implementieren, wie zum Beispiel systemd-boot.
Legt den Standard-Bootloader-Eintrag fest. Akzeptiert eine einzelne Bootloader-Eintrags-ID-Zeichenfolge oder ein Glob-Muster als Argument. Der Befehl set-oneshot legt den Standardeintrag nur für den nächsten Start fest, der Befehl set-default legt ihn dauerhaft für alle zukünftigen Starts fest.
Mit bootctl list können verfügbare Bootloader-Einträge und deren IDs aufgelistet werden.
Darüber hinaus kann die Bootloader-Eintrags-ID als eine der folgenden angegeben werden: @default, @oneshot oder @current, die dem aktuellen entsprechen Standard-Bootloader-Eintrag für alle zukünftigen Startvorgänge, der aktuelle Standard-Bootloader-Eintrag für den nächsten Start und der aktuell gestartete Bootloader-Eintrag. Diese speziellen IDs werden in die aktuellen Werte der EFI-Variablen LoaderEntryDefault, LoaderEntryOneShot und LoaderEntrySelected aufgelöst, siehe Boot Loader Specification [1] für Details. Diese speziellen IDs sind in erster Linie als schnelle Möglichkeit nützlich, den aktuell gebooteten Bootloader-Eintrag dauerhaft zur Standardauswahl zu machen oder den Standard-Bootloader-Eintrag für den nächsten Start auf den Standard-Bootloader-Eintrag für alle zukünftigen Starts zu aktualisieren, können aber auch verwendet werden auch für andere Operationen.
Bei Einstellung auf @saved wird der ausgewählte Eintrag bei jedem Start als EFI-Variable gespeichert und beim nächsten Start des Bootloaders automatisch ausgewählt.
Wenn eine leere Zeichenfolge ("") als ID angegeben wird, wird die entsprechende EFI-Variable nicht gesetzt.
Hinweis: Verwenden Sie systemctl reboot --boot-loader-entry=ID, um in einem bestimmten Boot-Eintrag neu zu starten, und systemctl reboot --boot-loader-menu=<timeout für einen einmaligen Neustart im Bootloader-Menü. Weitere Informationen finden Sie unter systemctl(1).
Legt den Timeout des Bootloader-Menüs in Sekunden fest. Der Befehl set-timeout-oneshot legt das Timeout nur für den nächsten Start fest. Einzelheiten zur Syntax von Zeitspannen finden Sie unter systemd.time(7).
Wenn dies auf menu-hidden oder 0 eingestellt ist, wird kein Menü angezeigt und der Standardeintrag wird sofort gebootet, während dies auf menu-force gesetzt ist > Deaktiviert die Zeitüberschreitung, während das Menü immer angezeigt wird. Wenn eine leere Zeichenfolge ("") angegeben wird, kehrt der Bootloader zu seinem standardmäßigen Menü-Timeout zurück.
Diese Befehle verwalten den EFI-Bootloader systemd-boot und funktionieren nicht in Verbindung mit anderen Bootloadern.
Installiert systemd-boot in der EFI-Systempartition. Eine Kopie von systemd-boot wird als EFI-Standard-/Fallback-Loader unter ESP/EFI/BOOT/BOOT*.EFI gespeichert. Der Bootloader wird dann oben zur Bootloader-Liste der Firmware hinzugefügt.
Aktualisiert alle installierten Versionen von systemd-boot(7), wenn die verfügbare Version neuer ist als die in der EFI-Systempartition installierte Version. Dazu gehört auch der EFI-Standard-/Fallback-Loader unter ESP/EFI/BOOT/BOOT*.EFI. Der Bootloader wird dann am Ende der Bootloader-Liste der Firmware hinzugefügt, falls er fehlt.
Entfernt alle installierten Versionen von systemd-boot aus der EFI-Systempartition und der Bootloader-Liste der Firmware.
Überprüft, ob systemd-boot im ESP installiert ist. Beachten Sie, dass ein einzelner ESP möglicherweise mehrere Bootloader hostet. Dies prüft daher, ob systemd-boot einer (von möglicherweise vielen) installierten Bootloadern ist – und weder, ob es der Standard ist, noch ob es in irgendwelchen EFI-Variablen registriert ist.
Erzeugt einen zufälligen Startwert und speichert ihn in der EFI-Systempartition zur Verwendung durch den Bootloader systemd-boot. Erzeugt außerdem ein zufälliges System-Token und speichert es dauerhaft als EFI-Variable, sofern noch keins festgelegt wurde. Wenn der Bootloader den Zufallsstartwert im ESP und das Systemtoken in der EFI-Variablen findet, leitet er aus der Kombination beider einen Zufallsstartwert zur Übergabe an das Betriebssystem und einen neuen Startwert zur Speicherung im ESP ab. Der an das Betriebssystem übergebene zufällige Startwert wird vom Systemmanager während des frühen Startvorgangs dem Entropiepool des Kernels gutgeschrieben und ermöglicht es dem Benutzerbereich, sehr früh mit einem vollständig initialisierten Entropiepool zu starten. Siehe auch systemd-boot-random-seed.service(8).
Weitere Informationen finden Sie unter Zufällige Samen[3].
Akzeptiert ein Kernel-Image als Argument. Überprüft, um welche Art von Kernel es sich bei dem Image handelt. Gibt eines von „uki“, „pe“ und „unknown“ zurück.
Akzeptiert ein Kernel-Image als Argument. Druckt Details zum Bild.
Folgende Optionen werden verstanden:
Pfad zur EFI-Systempartition (ESP). Wenn nicht angegeben, werden /efi/, /boot/ und /boot/efi/ nacheinander überprüft. Es wird empfohlen, das ESP nach Möglichkeit in /efi/ zu mounten.
Pfad zur Extended Boot Loader-Partition, wie in der Boot Loader-Spezifikation[1] definiert. Wenn nicht angegeben, wird /boot/ überprüft. Es wird empfohlen, die Extended Boot Loader-Partition nach Möglichkeit in /boot/ zu mounten.
Akzeptiert einen Verzeichnispfad als Argument. Allen Pfaden wird der angegebene alternative root-Pfad vorangestellt, einschließlich Konfigurationssuchpfaden.
Nimmt einen Pfad zu einer Disk-Image-Datei oder einem Blockgeräteknoten an. Wenn angegeben, werden alle Vorgänge auf das Dateisystem im angegebenen Disk-Image angewendet. Diese Option ähnelt --root=, funktioniert jedoch auf Dateisystemen, die in Disk-Images oder Blockgeräten gespeichert sind. Das Disk-Image sollte entweder nur ein Dateisystem oder eine Reihe von Dateisystemen innerhalb einer GPT-Partitionstabelle gemäß der Discoverable Partitions Specification[4] enthalten. Weitere Informationen zu unterstützten Disk-Images finden Sie im gleichnamigen Schalter von systemd-nspawn(1).
Wählt bei der Installation von Binärdateien mit --root= oder --image= aus, woher sie stammen sollen. Akzeptiert entweder „auto“ (Standardeinstellung), „image“ oder „host“. Mit „auto“ werden Binärdateien aus dem angegebenen Verzeichnis oder Image ausgewählt. Wenn sie nicht gefunden werden, werden sie vom Host ausgewählt. Bei „Image“ oder „Host“ wird keine Fallback-Suche durchgeführt, wenn die Binärdateien in der ausgewählten Quelle nicht gefunden werden.
Diese Option ändert das Verhalten von status. Gibt nur den Pfad zur EFI-Systempartition (ESP) in der Standardausgabe aus und wird beendet.
Diese Option ändert das Verhalten von status. Gibt nur den Pfad zur Extended Boot Loader-Partition aus, wenn diese vorhanden ist, und den Pfad zum ESP andernfalls in der Standardausgabe und beim Beenden. Dieser Befehl ist nützlich, um zu bestimmen, wo Bootloader-Einträge abgelegt werden sollen, da diese vorzugsweise in der Extended Boot Loader-Partition, sofern vorhanden, und andernfalls im ESP abgelegt werden.
Einträge des Bootloader-Spezifikationstyps Nr. 1 sollten im Allgemeinen im Verzeichnis „$ (bootctl -x)/loader/entries/“ abgelegt werden. Das Vorhandensein dieses Verzeichnisses kann auch als Hinweis darauf verwendet werden, dass auf dem System Unterstützung für Bootloader-Einträge verfügbar ist. Ebenso sollten Einträge der Bootloader-Spezifikation Typ #2 im Verzeichnis „$ (bootctl -x)/EFI/Linux/“ abgelegt werden.
Beachten Sie, dass diese Option (ähnlich wie die oben erwähnte Option --print-booth-path) unabhängig vom verwendeten Bootloader verfügbar ist, d. h. auch ohne dass systemd-boot vorhanden ist Eingerichtet.
Berühren Sie nicht die in EFI-Variablen gespeicherte Firmware-Bootloader-Liste.
Fehler ignorieren, wenn die EFI-Systempartition nicht gefunden werden kann, EFI-Variablen nicht geschrieben werden können oder bereits ein anderer oder neuerer Bootloader installiert ist. Gilt derzeit nur für die Verben is-installed, update und random-seed.
Unterdrücken Sie die Ausgabe der Ergebnisse verschiedener Befehle sowie der Hinweise, dass ESP nicht verfügbar ist.
Steuert die Erstellung und Löschung des Eintragsverzeichnisses Boot Loader Specification[1] Typ #1 im Dateisystem, das Ressourcen wie Kernel- und initrd-Images während der Installation und Entfernung enthält bzw. Das Verzeichnis ist nach dem Eintrittstoken benannt, wie mit dem unten beschriebenen Parameter --entry-token= angegeben, und wird direkt unter dem Stammverzeichnis $BOOT platziert (d. h. unter Dateisystem, das von der Option --print-boot-path zurückgegeben wird, siehe oben). Der Standardwert ist „Nein“.
Steuert, wie Bootloader-Einträge für diese Betriebssysteminstallation benannt und identifiziert werden. Wird während der Installation akzeptiert und verwendet als Argument entweder „auto“, „machine-id“, „os-id“, „os-image-id“ oder eine beliebige Zeichenfolge mit dem Präfix „literal:“. .
Bei der Einstellung machine-id werden die Einträge nach der Rechner-ID des laufenden Systems benannt (z. B. „b0e793a9baf14b5fa13ecbe84ff637ac“). Einzelheiten zum Maschinen-ID-Konzept und zur Datei finden Sie unter machine-id(5).
Bei der Einstellung os-id werden die Einträge nach der Betriebssystem-ID des laufenden Systems benannt, d. h. dem Feld ID= von os-release( 5) (z. B. „Fedora“). Ähnlich verhält es sich mit der Einstellung os-image-id: Die Einträge werden nach der Betriebssystem-Image-ID des laufenden Systems benannt, d. h. dem Feld IMAGE_ID= von os-release (z. B. „ Vendorx-Kassensystem").
Bei Einstellung auf auto (Standardeinstellung) wird die Datei /etc/kernel/entry-token gelesen, sofern vorhanden, und der gespeicherte Wert verwendet. Andernfalls wird die lokale Maschinen-ID verwendet, wenn sie initialisiert wird. Andernfalls wird IMAGE_ID= aus OS-Release verwendet, sofern festgelegt. Andernfalls wird ID= aus OS-Release verwendet, sofern festgelegt.
Sofern nicht auf „machine-id“ gesetzt oder wenn --make-entry-directory=yes verwendet wird, wird die ausgewählte Tokenzeichenfolge in eine Datei /etc/kernel/entry-token geschrieben, um dies sicherzustellen wird für zukünftige Einträge verwendet. Diese Datei wird auch von kernel-install(8) gelesen, um zu ermitteln, unter welchem Namen Bootloader-Einträge für neu installierte Kernel generiert werden sollen, oder um die Eintragsnamen zum Entfernen alter Kernel zu ermitteln.
Die Verwendung der Maschinen-ID zur Benennung der Einträge ist im Allgemeinen vorzuziehen, es gibt jedoch Fälle, in denen die Verwendung der anderen Kennungen eine gute Option ist. Konkret: wenn die Identifikationsdaten, die die Maschinen-ID beinhaltet, nicht auf der (unverschlüsselten) $BOOT-Partition gespeichert werden sollen, oder wenn die ID beim ersten Booten generiert werden soll und zum Zeitpunkt der Erstellung der Einträge nicht bekannt ist . Beachten Sie, dass die Verwendung der Maschinen-ID den Vorteil hat, dass mehrere parallele Installationen desselben Betriebssystems auf demselben Medium koexistieren können und ihre Bootloader-Einträge unabhängig voneinander aktualisieren können. Bei Verwendung einer anderen Kennung (z. B. der Betriebssystem-ID oder der Betriebssystem-Image-ID) würden parallele Installationen desselben Betriebssystems versuchen, denselben Eintragsnamen zu verwenden. Um parallele Installationen zu unterstützen, muss das Installationsprogramm beim Hinzufügen einer zweiten Installation ein anderes Eintragstoken verwenden.
Installieren Sie Binärdateien für alle unterstützten EFI-Architekturen (dies impliziert --no-variables).
Die Verwendung des Standardeintragsnamens „Linux Boot Manager“ ist im Allgemeinen vorzuziehen, da nur ein Bootloader, der auf einer einzelnen ESP-Partition installiert ist, zum Booten einer beliebigen Anzahl von Betriebssysteminstallationen verwendet werden sollte, die sich auf den verschiedenen im System installierten Festplatten befinden. Insbesondere sollten Distributionen dieses Flag nicht verwenden, um einen Markeneintrag in der Boot-Optionsliste zu installieren. In Situationen mit mehreren Festplatten, von denen jede über eine eigene ESP-Partition verfügt, kann es jedoch von Vorteil sein, den verwendeten Bootloader im Boot-Optionsmenü der Firmware leichter identifizieren zu können.
Probelauf für --unlink und --cleanup.
Im Probelaufmodus drucken die Aufhebungs- und Bereinigungsvorgänge nur die Dateien aus, die gelöscht werden würden, ohne sie tatsächlich zu löschen.
Leiten Sie die Ausgabe nicht an einen Pager weiter.
Zeigt die als JSON formatierte Ausgabe an. Erwartet entweder „short“ (für die kürzestmögliche Ausgabe ohne redundante Leerzeichen oder Zeilenumbrüche), „pretty“ (für eine hübsche Version desselben, mit Einrückungen und Zeilenumbrüchen) oder „off“ (um die JSON-Ausgabe zu deaktivieren). der Standard).
Drucken Sie einen kurzen Hilfetext und beenden Sie den Vorgang.
Geben Sie eine kurze Versionszeichenfolge aus und beenden Sie den Vorgang.
bootctl install und update suchen nach einer systemd-boot-Datei, die mit dem Suffix „.efi.signed“ endet zuerst und kopieren Sie diese anstelle der normalen „.efi“-Datei. Dadurch können Distributionen oder Endbenutzer signierte Images für UEFI SecureBoot bereitstellen.
Bei Erfolg wird 0 zurückgegeben, andernfalls ein Fehlercode ungleich Null.
Wenn $SYSTEMD_RELAX_ESP_CHECKS=1 festgelegt ist, werden die Validierungsprüfungen für den ESP gelockert und der mit --esp-path= angegebene Pfad kann auf jede Art von Dateisystem verweisen jede Art von Partition.
Ebenso deaktiviert $SYSTEMD_RELAX_XBOOTLDR_CHECKS=1 einige Validierungsprüfungen für die Extended Boot Loader-Partition.
Beispiel 1. Ausgabe aus Status und Liste
$ bootctl status System: Firmware: UEFI 2.40 (firmware-version) ← firmware vendor and version Secure Boot: disabled (setup) ← Secure Boot status TPM2 Support: yes Boot into FW: supported ← does the firmware support booting into itself Current Boot Loader: ← details about sd-boot or another boot loader Product: systemd-boot version implementing the Boot Loader Interface[2] Features: ✓ Boot counting ✓ Menu timeout control ✓ One-shot menu timeout control ✓ Default entry control ✓ One-shot entry control ✓ Support for XBOOTLDR partition ✓ Support for passing random seed to OS ✓ Load drop-in drivers ✓ Boot loader sets ESP information ESP: /dev/disk/by-partuuid/01234567-89ab-cdef-dead-beef00000000 File: └─/EFI/systemd/systemd-bootx64.efi Random Seed: ← random seed used for entropy in early boot Passed to OS: yes System Token: set Exists: yes Available Boot Loaders on ESP: ESP: /boot/efi (/dev/disk/by-partuuid/01234567-89ab-cdef-dead-beef00000000) File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 251 File: └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 251 Boot Loaders Listed in EFI Variables: Title: Linux Boot Manager ID: 0x0001 Status: active, boot-order Partition: /dev/disk/by-partuuid/... File: └─/EFI/systemd/systemd-bootx64.efi Title: Fedora ID: 0x0000 Status: active, boot-order Partition: /dev/disk/by-partuuid/... File: └─/EFI/fedora/shimx64.efi Title: Linux-Firmware-Updater ID: 0x0002 Status: active, boot-order Partition: /dev/disk/by-partuuid/... File: └─/EFI/fedora/fwupdx64.efi Boot Loader Entries: $BOOT: /boot/efi (/dev/disk/by-partuuid/01234567-89ab-cdef-dead-beef00000000) Default Boot Loader Entry: type: Boot Loader Specification Type #1 (.conf) title: Fedora Linux 36 (Workstation Edition) id: ... source: /boot/efi/loader/entries/entry-token-kernel-version.conf version: kernel-version machine-id: ... linux: /entry-token/kernel-version/linux initrd: /entry-token/kernel-version/initrd options: root=...
$ bootctl list Boot Loader Entries: type: Boot Loader Specification Type #1 (.conf) title: Fedora Linux 36 (Workstation Edition) (default) (selected) id: ... source: /boot/efi/loader/entries/entry-token-kernel-version.conf version: kernel-version machine-id: ... linux: /entry-token/kernel-version/linux initrd: /entry-token/kernel-version/initrd options: root=... type: Boot Loader Specification Type #2 (.efi) title: Fedora Linux 35 (Workstation Edition) id: ... source: /boot/efi/EFI/Linux/fedora-kernel-version.efi version: kernel-version machine-id: ... linux: /EFI/Linux/fedora-kernel-version.efi options: root=... type: Automatic title: Reboot Into Firmware Interface id: auto-reboot-to-firmware-setup source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
In der Auflistung gibt „(default)“ den Eintrag an, der standardmäßig verwendet wird, und „(selected)“ gibt den Eintrag an, der das letzte Mal ausgewählt wurde (d. h. gerade ausgeführt wird).
systemd-boot(7), Boot Loader Specification[1], Boot Loader Interface[2], systemd-boot-random-seed.service(8)
Bootloader-Spezifikation: https://uapi-group.org/specifications/specs/boot_loader_specification
Bootloader-Schnittstelle: https://systemd.io/BOOT_LOADER_INTERFACE
Zufällige Samen: https://systemd.io/RANDOM_SEEDS
Spezifikation für erkennbare Partitionen: https://uapi-group.org/specifications/specs/discoverable_partitions_specification