Secure Boot Einrichtung
sbctl
sbctl
ist ein benutzerfreundlicher Secure-Boot-Key-Manager, der Secure Boot einrichten kann,
bietet Key-Management-Funktionen und verfolgt Dateien, die in der Boot-Kette signiert werden müssen.
sbctl installieren
❯ sudo pacman -S sbctl
Vorbereitung
GRUB Bootmanager
Wenn Sie GRUB verwenden, führen Sie den folgenden Befehl aus, um die Secure-Boot-Unterstützung in GRUB mithilfe von CA-Schlüsseln zu aktivieren.
❯ sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=cachyos --modules="tpm" --disable-shim-lock
Aufrufen des Setup-Modus im UEFI
Zuerst müssen wir in die Firmware-Einstellungen gehen und den Secure-Boot-Modus auf “Setup Mode” setzen. Sie können von einem bereits laufenden System mit dem folgenden Befehl in die Firmware-Einstellungen neu starten.
❯ systemctl reboot --firmware-setup

So sieht das BIOS auf einem Lenovo Ideapad 5 Pro aus. Setzen Sie es in den Setup-Modus zurück oder stellen Sie die Werksschlüssel wieder her und starten Sie das System neu.
sbctl einrichten
❯ sudo sbctl status # Wenn der Setup-Modus aktiviert ist, können wir mit dem nächsten Schritt fortfahrenInstalled: ✘ sbctl is not installedSetup Mode: ✘ EnabledSecure Boot ✘ Disabled
❯ sudo sbctl create-keys # Erstellen Sie Ihre benutzerdefinierten Secure-Boot-SchlüsselCreated Owner UUID a9fbbdb7-a05f-48d5-b63a-08c5df45ee70Creating secure boot keys...✔Secure boot keys created!
❯ sudo sbctl enroll-keys -m # Registrieren Sie Ihre Schlüssel mit den Schlüsseln von MicrosoftEnrolling keys to EFI variables...✔Enrolled keys to the EFI variables!
❯ sudo sbctl status# sbctl sollte jetzt installiert sein und wir können mit dem Signieren der Kernel-Images und des Bootmanagers fortfahrenInstalled: ✔ sbctl is installedOwner GUID: a9fbbdb7-a05f-48d5-b63a-08c5df45ee70Setup Mode: ✔ DisabledSecure Boot ✘ DisabledVendor Keys: microsoft
Signieren des Kernel-Images und des Bootmanagers
CachyOS stellt ein Skript sbctl-batch-sign
bereit,
das die Liste der zu signierenden Dateien von sudo sbctl verify
übernimmt und alle signiert.
❯ sudo sbctl verifyVerifying file database and EFI images in /boot...✘ /boot/1c4b5246eef05ac3bc87339323cd5101/6.10.0-cn4.0.fc40.x86_64/linux is not signed✘ /boot/EFI/BOOT/BOOTX64.EFI is not signed✘ /boot/EFI/systemd/systemd-bootx64.efi is not signed✘ /boot/1c4b5246eef05ac3bc87339323cd5101/0-rescue/linux is not signed✘ /boot/1c4b5246eef05ac3bc87339323cd5101/6.10.0-cn3.0.fc40.x86_64/linux is not signed
❯ sudo sbctl-batch-sign
❯ sudo sbctl verifyVerifying file database and EFI images in /boot...✔ /boot/1c4b5246eef05ac3bc87339323cd5101/6.10.0-cn4.0.fc40.x86_64/linux is signed✔ /boot/EFI/BOOT/BOOTX64.EFI is signed✔ /boot/EFI/systemd/systemd-bootx64.efi is signed✔ /boot/1c4b5246eef05ac3bc87339323cd5101/0-rescue/linux is signed✔ /boot/1c4b5246eef05ac3bc87339323cd5101/6.10.0-cn3.0.fc40.x86_64/linux is signed
Nachdem alle Dateien signiert sind, können wir zurück zu den UEFI-Einstellungen booten und Secure Boot aktivieren.
Beachten Sie, dass dies ein einmaliger Vorgang ist, da das Signieren von Dateien mit dem Flag -s
diese Dateien in der Datenbank von sbctl
speichert.
sbctl
wird mit einem Pacman-Hook ausgeliefert, was bedeutet, dass es automatisch
alle neuen Dateien bei einem Kernel- oder Bootmanager-Update signiert.
systemd-boot
CachyOS verwendet systemd-boot-update.service
, das von systemd bereitgestellt wird, um den Bootmanager beim Neustart zu aktualisieren. Dies bedeutet, dass der sbctl
Pacman-Hook die aktualisierten EFI-Binärdateien nicht signiert. Als Workaround können wir den Bootmanager direkt signieren
❯ sudo sbctl sign -s -o /usr/lib/systemd/boot/efi/systemd-bootx64.efi.signed /usr/lib/systemd/boot/efi/systemd-bootx64.efi
Limine
Limine ist ein spezieller Bootmanager, der es ermöglicht, den Hash von Kernel-Images und anderen Dateien zu überprüfen, die Limine während des Bootvorgangs verwendet. Wenn dies aktiviert ist, wird jede manuelle Konfiguration durch den Benutzer, z. B. das Signieren des Images mittels sbctl-batch-sign
, den Hash der entsprechenden Dateien ändern und Limines Prüfsummenverifizierung fehlschlagen lassen.
Das Signieren dieser Dateien ist bei Limine jedoch nicht notwendig, da es einen speziellen Bootprozess hat, der das EFI-Chainloading und die Signaturprüfungen umgeht. Die einzigen EFI-Binärdateien, die signiert werden müssen, sind Limine selbst und die Backup-EFI-Binärdatei, die sich in allen UEFI-Systemen befindet.
# Verwenden Sie limine-enroll-config, um Limines EFI-Binärdatei zu signieren# Dies verwendet intern sbctl❯ sudo limine-enroll-config
# Signieren Sie die spezielle EFI-Binärdatei❯ sudo sbctl sign -s /boot/EFI/BOOT/BOOTX64.EFI
Überprüfen, ob Secure Boot aktiviert ist
Um zu überprüfen, ob Secure Boot tatsächlich aktiviert ist, können Sie einen der folgenden Befehle ausführen
❯ sudo sbctl statusInstalled: ✓ sbctl is installedOwner GUID: a9fbbdb7-a05f-48d5-b63a-08c5df45ee70Setup Mode: ✓ DisabledSecure Boot: ✓ EnabledVendor Keys: microsoft
❯ bootctlSystem: Firmware: UEFI 2.80 (INSYDE Corp. 28724.16435) Firmware Arch: x64 Secure Boot: enabled (user) TPM2 Support: yes Measured UKI: no Boot into FW: supported
Links und Credits
- Das Arch Wiki hat die Grundlage für diesen Leitfaden gelegt. Das meiste hier wurde von dort übernommen
- sbctl - Dieser einfache Leitfaden zur Aktivierung der Secure-Boot-Unterstützung wäre nicht möglich gewesen, wenn nicht für die erstaunliche Arbeit, die geleistet wurde, um dieses Stück Software zu erstellen.
- Verbesserung der Secure-Boot-Erfahrung von Morten linderud - Blog-Post von Morten
“Foxboron” Linderud darüber, wie kompliziert die Secure-Boot-Erfahrung vor
sbctl
war