21.Mai 2025
In diesem Artikel beschreibe ich, wie ich auf einem bereits in Betrieb befindlichen Proxmox-Server mit ZFS-Root, Secure Boot aktiviert habe. Dabei bin ich auf ein paar Stolpersteine gestoßen, weil Proxmox ab Installation ohne Secure Boot standardmäßig systemd-boot benutzt und ein ZFS-Root in Kombination mit Secure Boot nicht sofort unterstützt wird. Mit dem Zusatzpaket proxmox-secure-boot-support und dem Werkzeug proxmox-boot-tool lässt sich das System aber nachträglich auf „shim + GRUB“ umstellen und Secure Boot aktivieren.
⚠️ Sicherheitshinweis: Falsche Anwendung der nachfolgenden Schritte kann dazu führen, dass das System nicht mehr bootet. Ich übernehme keinerlei Haftung für Schäden oder Funktionsstörungen. Bitte immer vorher Backups und Funktionsprüfungen durchführen!
1. Ausgangslage prüfen
Bootloader & Secure Boot
Zuerst prüfen wir, ob systemd-boot aktiv ist und Secure Boot im UEFI-Setup deaktiviert wurde:
bootctl --path=/boot/efi status
In meinem Fall zeigte die Ausgabe:
Secure Boot: disabled (setup)
Current Boot Loader: systemd-boot 252.22-1~deb12u1
Damit war klar: systemd-boot und kein Secure Boot.
Dateisystem-Root ermitteln
Um sicherzugehen, dass das Root-Dateisystem auf ZFS liegt, habe ich ausgeführt:
findmnt /
Ergebnis:
TARGET SOURCE FSTYPE OPTIONS
/ rpool/ROOT/pve-1 zfs rw,relatime,...
Damit war bestätigt: das System bootet von ZFS.
EFI-Partition identifizieren
Nun muss die EFI-Systempartition (ESP) bekannt sein. Mit
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
fand ich die 1 GiB große vfat-Partitionen, z. B. /dev/nvme1n1p2 & /dev/nvme2n1p2
2. Proxmox-Secure-Boot-Support installieren
Proxmox liefert ein Support-Paket, das „shim + GRUB“ für Secure Boot vorbereitet:
apt update
apt install proxmox-secure-boot-support
3. Bootloader austauschen
Mit dem neuen Tool proxmox-boot-tool tauschen wir systemd-boot gegen GRUB (mit Shim) aus:
proxmox-boot-tool init /dev/nvme1n1p2 grub
proxmox-boot-tool init /dev/nvme2n1p2 grub
Da in meinem Fall ein ZFS-Mirror eingerichtet ist, führe ich das Kommando auf beiden Disks aus.
-
Parameter
- /dev/nvme1n1p2 ist die ESP.
- grub wählt GRUB as Bootloader (das Paket stellt automatisch shimx64.efi bereit).
Das Kommando kopiert shimx64.efi, grubx64.efi und die notwendige GRUB-Konfiguration in die ESP und legt einen neuen EFI-Boot-Eintrag an.
4. EFI-Boot-Einträge kontrollieren
Mit efibootmgr -v sehen wir nun, dass der neue Eintrag auf shimx64.efi zeigt:
efibootmgr -v
Beispiel-Auszug:
BootOrder: 0000,000B,0009,...
Boot0000* proxmox HD(2,GPT,6c7edcbe-c242-...)/File(\EFI\proxmox\shimx64.efi)
Boot0001 ONBOARD NIC (IPv4) ...
...
Der mit * markierte Eintrag ist jetzt der standardmäßige Boot-Eintrag.
5. Secure Boot im UEFI aktivieren
-
Server neu starten und ins UEFI-Setup (BIOS) wechseln.
-
Secure Boot einschalten (meist unter Security → Secure Boot).
-
UEFI-Konfiguration speichern und neu booten lassen.
6. Abschlusstest
Nach dem Reboot prüfe ich erneut per SSH oder Konsole:
bootctl --path=/boot/efi status
Erwartete Ausgabe:
Secure Boot: enabled (deployed)
Optional: Zweiten EFI-Boot-Eintrag anlegen
Da ich zwei NVMe-Disks im RAID 1 hatte, wollte ich GRUB auf beiden ESPs einrichten – allerdings legte proxmox-boot-tool nur auf einer Platte den EFI-Eintrag an.
Um auf der zweiten Disk einen identischen Eintrag zu erstellen:
Welche Disk hat schon den Eintrag?
Aus efibootmgr -v entnehme ich die PARTUUID der Partition:
Boot0000* proxmox2 HD(2,GPT,09f17d6e-a704-493d-b366-259b75b18be1,...)/File(\EFI\proxmox\shimx64.efi)
DEV-Pfad der Partition ermitteln
ls -l /dev/disk/by-partuuid/09f17d6e-a704-493d-b366-259b75b18be1
Das Ergebnis:
lrwxrwxrwx 1 root root 15 May 20 16:01 /dev/disk/by-partuuid/09f17d6e-a704-493d-b366-259b75b18be1 -> ../../nvme1n1p2
EFI-Eintrag auf der zweiten Disk erstellen
Angenommen, die zweite ESP ist /dev/nvme2n1p2, dann:
efibootmgr \
--disk /dev/nvme2n1 \
--part 2 \
--create \
--label "proxmox2" \
--loader '\EFI\proxmox\shimx64.efi'
Nach erneutem efibootmgr -v sieht man nun zwei identische Einträge – je einen pro Disk.
Fazit
Mit diesen Schritten lässt sich auf einem bestehenden Proxmox-Knoten:
-
feststellen, dass systemd-boot & ZFS aktiv sind,
-
das Paket proxmox-secure-boot-support installieren,
-
per proxmox-boot-tool init … grub auf GRUB+Shim umstellen,
-
im UEFI Secure Boot einschalten und
-
bei Bedarf einen zweiten EFI-Eintrag für redundante ESPs anlegen.
So bleibt das System gegen Boot-Manipulation geschützt, ohne Neuinstallation oder komplexe Workarounds.
⚠️ Sicherheitshinweis: Falsche Anwendung der beschriebenen Schritte kann dazu führen, dass das System nicht mehr bootet. Ich übernehme keinerlei Haftung für Schäden oder Funktionsstörungen. Bitte immer vorher Backups und Funktionsprüfungen durchführen!