Wie migriere ich eine Proxmox Debian VM von BIOS zu UEFI mit systemd-?

In diesem Blogeintrag wird dokumentiert wie man eine Debian 12 Bookworm Virtuelle Maschine die auf einem Proxmox Virtual Environment 7.3 Cluster von BIOS mit Grub auf UEFI mit systemd-boot umstellt. Da es sich um eine Virtuelle Maschine handelt wird eine zusätzliche „Festplatte“ eingehängt. Damit erspart man sich das um partitionieren der root „Festplatte“. Die VM selbst muss nicht vorbereiten werden, es wird direkt die Installations-DVD im Rescue-Mode gestartet.

Das Tutorial basiert folgenden Grundlagen

  • Dem Hypervisor Proxmox Virtual Enviroment in der Version 7.3
  • Der VM Debian 12 Bookworm
  • Zusätzliche Disk für EFI

Folgende Vorbereitungen müssen getroffen werden

  1. 200 MB zusätzlicher Speicherplatz muss verfügbar sein (Eigene Disk).
  2. Aktuelle Debian Installations-DVD muss vorhanden sein.
  3. Backup der VM muss erstellt werden.
  4. IP der VM+Netzmaske+Gateway+DNS Server

Schritte in Proxmox

  1. Hinzufügen einer EFI Disk
  2. Umstellen BIOS von Default (SeaBIOS) auf OVMF (UEFI)
  3. Entfernen (Detach) der root Hard Disk (scsi0)
  4. Hinzufügen einer neuen Hard Disk mit 0,2 GB (unsere EFI Disk) (scsi0)
  5. Wiederhinzufügen (Attach) der root Hard Disk (scsi1)
  6. Hinzufügen eines CD/DVD Drive mit der Debian Installations-DVD
  7. Umstellen der Boot Order (DVD an erste Stelle) (unter Options -> Boot Order)

Einschalten der VM

  1. Im Grub der Installations-DVD „Advanced options …“ -> „Rescue mode“ auswählen.
  2. Sprache auswählen (Einfach 2x Eingabetaste für English / USA reicht für den „Rescue mode“)
  3. Keymap to use: German ist schon etwas wichtiger
  4. Entweder wird das Netzwerk manuell konfiguriert oder über DHCP konfigurieren.
  5. Zeitzone kann auch belassen
  6. Auswahl der root file system (bestehendes System) ist /dev/sdb1
  7. Als erstes wird die Shell im „installer environment“ gestartet
  8. Jetzt wird das efivarfs kernel module geladen
    modprobe efivarfs
  9. Mittels strg+d ausloggen
  10. Als nächstes wird die Shell in „/dev/sdb1“ gestartet
  11. mounten des EFI variablen Dateisystems mittels:
    mount -t efivarfs efivarfs /sys/firmware/efi/efivars

Zu diesem Zeitpunkt läuft die VM mittels UEFI gestartet und direkt im Dateisystem der Installation. Jetzt wird grub deinstalliert und systemd-boot installiert und alle weiteren Änderungen die notwendig sind durchgeführt.

Vorbereiten der EFI Partition

  1. apt install gdisk dosfstools
  2. gdisk /dev/sda
    1. o – Erstellen der GUID Partitions-Tabelle
    2. n – Neue partion erstellen
      1. Partition number: default (1)
      2. First sector: default (2048)
      3. Last sector: default (417791)
      4. Hex code: EF00
    3. w – Schreiben der Partitions-Tabelle
  3. mkfs.vfat -F 32 -n „BOOT DISK“ /dev/sda1
  4. mkdir -p /boot/efi
  5. mount /dev/sda1 /boot/efi
  6. mkdir -p /boot/efi/loader/entries
  7. nano /boot/efi/loader/loader.conf
    1. default systemd
    2. timeout 1
    3. editor 1

Deinstallation und Installation des Bootloaders

  1. apt autoremove grub-common
  2. apt install systemd-boot
  3. bootctl install
  4. ls /boot – anzeigen der vorhanden kernel. Beispiel 6.1.0-3-cloud-amd64
  5. kernel-install add 6.1.0-3-cloud-amd64 /boot/vmlinuz-6.1.0-3-cloud-amd64
  6. Sicherstellen das die richtigen boot optionen für den Eintrag gesetzt sind
    1. cat /etc/efi/loader/entries/<machine_id>
    2. Diese Datei sollte mindestens die folgende Einträge enthalten
      1. options root=UUID=<PARTUUID> ro quiet systemd.machine_id=<machine_id>
      2. linux /<machine_id>/<kernel_version>/linux
      3. initrd /<machine_id>/<kernel_version>/initrd.img-<kernel_version>

Neustarten der VM und booten mittels UEFI nach Debian

  1. strg+d
  2. Reboot the system
  3. Wenn der Kernel nicht gesigned ist muss secure boot deaktiviert werden
    1. Den UEFI-Konfigurationsscreen mittels ESC öffnen
    2. Device Manager
    3. Secure Boot Configuration
    4. X bei „Attempt Secure Boot“ entfernen
    5. ESC -> ESC -> Reset
  4. VM in Proxmox stoppen
  5. CD Laufwerk aus der Hardware Konfiguration entfernen
  6. VM in Proxmox starten

Anpassungen im System

  1. EFI Partition automatisch einhängen
  2. UUID=<BOOTUUID> /efi vfat noatime,noexec,nosuid,nodev,noauto,umask=0022,gid=0,uid=0,x-systemd.automount,x-systemd.idle-timeout=60 0 1
  3. Übertragen der Kernel Optionen nach /etc/kernel/cmdline
    1. root=UUID=<partuuid> nicht vergessen

Aufräumen

  1. apt autoremove gdisk dosfstools
  2. löschen übergebliebener Grub Konfigurationensdateien
    1. /boot/grub
    2. /etc/grub.d
    3. /etc/default/grub.d
    4. /etc/default/grub*
    5. /var/lib/grub

Optimierungen

  1. Timeout entfernen
    1. Proxmox UEFI Timeout entfernen
      (leider funktioniert Einstellung in der Konfiguration nicht)
      Deswegen kann mittels Qemu Option das Bootmenü deaktiviert werden.
      Am Proxmox host die datei /etc/pve/qemu-server/<vmid>.conf editieren und folgende Zeile hinzufügen:
      args: -boot menu=off
      Das gedrückt halten der <ESC>-Taste erlaubt das öffnen des Konfigurationsscreen auch ohne Timeout
    2. Timeout von systemd-boot entfernen
      diese Eintrag befindet sich in /boot/efi/loader.conf und hat den namen „timeout“ diesen auf 0 setzen reicht um das Menü zu deaktivieren. 
      Das gedrückt halten der <Pfeil-Unten>-Taste erlaubt das ändern der Bootoption auch ohne Timeout
Notice: This work is licensed under a BY-NC-SA. Permalink: Wie migriere ich eine Proxmox Debian VM von BIOS zu UEFI mit systemd-?

Comments are closed.

Mastodon