Secure Boot nachträglich auf einem bestehenden Proxmox-Knoten mit ZFS aktivieren

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!