Zum Inhalt springen

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

Terminal-Fenster
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.

Terminal-Fenster
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.

Terminal-Fenster
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

Terminal-Fenster
sudo sbctl status # Wenn der Setup-Modus aktiviert ist, können wir mit dem nächsten Schritt fortfahren
Installed: sbctl is not installed
Setup Mode: Enabled
Secure Boot Disabled
sudo sbctl create-keys # Erstellen Sie Ihre benutzerdefinierten Secure-Boot-Schlüssel
Created Owner UUID a9fbbdb7-a05f-48d5-b63a-08c5df45ee70
Creating secure boot keys...✔
Secure boot keys created!
sudo sbctl enroll-keys -m # Registrieren Sie Ihre Schlüssel mit den Schlüsseln von Microsoft
Enrolling 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 fortfahren
Installed: sbctl is installed
Owner GUID: a9fbbdb7-a05f-48d5-b63a-08c5df45ee70
Setup Mode: Disabled
Secure Boot Disabled
Vendor 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.

Terminal-Fenster
sudo sbctl verify
Verifying 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 verify
Verifying 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

Terminal-Fenster
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.

Terminal-Fenster
# 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

Terminal-Fenster
sudo sbctl status
Installed: sbctl is installed
Owner GUID: a9fbbdb7-a05f-48d5-b63a-08c5df45ee70
Setup Mode: Disabled
Secure Boot: Enabled
Vendor Keys: microsoft
bootctl
System:
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
  • 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