Wie kann ich Debian RAID 1 so einrichten, dass EFI-Partitionen auf beiden Festplatten vorinstalliert sind?

Wie kann ich Debian RAID 1 so einrichten, dass EFI-Partitionen auf beiden Festplatten vorinstalliert sind?

Die ähnlichste Frage, die ich gefunden habe:Ubuntu-Software-Raid auf EFI, wie bootet man vom zweiten Laufwerk?

Meine Situation ist, dass ich eine funktionierende Preseed-Datei für die Debian-Installation habe, die meine NVMe-Laufwerke auf Software-RAID 1 konfiguriert. Beide Festplatten erhalten sogar eine EFI-Partition (/dev/nvme0n1p1 und /dev/nvme1n1p1). Die Partition der zweiten Festplatte wird jedoch nicht ausgefüllt und ist daher nicht wirklich bootfähig, wenn die erste Festplatte ausfällt.

RAID 1 ist für Festplattenausfälle gedacht. Wenn ich nicht von der zweiten Festplatte booten kann, ist das für mich ziemlich nutzlos.

Ich habe einen Workaround gefunden, bei dem ich im Skript zum Beenden der Installation Folgendes ausführen kann:

if [ -d /sys/firmware/efi ] && [ -d /boot/efi/EFI ] && [ -e /dev/nvme1n1p1 ]; then
    mkdir /mnt/efi-disk2
    mount /dev/nvme1n1p1 /mnt/efi-disk2 && cp -narv /boot/efi/EFI /mnt/efi-disk2/
    umount /mnt/efi-disk2
    rmdir /mnt/efi-disk2
fi

Das funktioniert. Möglicherweise habe ich jedoch eine bessere/einfachere Möglichkeit übersehen, da es sich hierbei um eine grundlegende Kernfunktionalität zu handeln scheint, die Teil des Installationsprogramms sein sollte.

Gibt es eine Möglichkeit, dies direkt während der Installation zu erreichen, z. B. mithilfe eines anderen Preseed-Befehls oder einer Partman-Option, die ich übersehen habe?

Relevante Teile des Preseed:

d-i mdadm/boot_degraded boolean false

d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-md/confirm boolean true
d-i partman-md/confirm_nooverwrite  boolean true

d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/confirm boolean true

d-i partman-auto/disk string /dev/nvme0n1 /dev/nvme1n1
d-i partman-auto/method string raid
d-i partman-auto/choose_recipe select myrecipe

d-i partman-auto-lvm/guided_size string 100%
d-i partman-auto-lvm/new_vg_name string vg00

d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

d-i partman/choose_partition select Finish partitioning and write changes to disk

d-i partman-partitioning/confirm_write_new_label boolean true

d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt

d-i partman-auto/expert_recipe string \
myrecipe :: \
    1024 1 1024 free \
            $iflabel{ gpt } \
            method{ efi } \
            format{ } \
        . \
    1024 0 -1 raid \
            $lvmignore{ } \
            $primary{ } \
            method{ raid } \
            format{ } \
        . \
    20480 0 20480 ext4 \
            $defaultignore{ } \
            $lvmok{ } \
            lv_name{ lv_root } \
            method{ format } \
            format{ } \
            use_filesystem{ } \
            filesystem{ ext4 } \
            mountpoint{ / } \
        . \
    20480 0 20480 ext4 \
            $defaultignore{ } \
            $lvmok{ } \
            lv_name{ lv_var } \
            method{ format } \
            format{ } \
            use_filesystem{ } \
            filesystem{ ext4 } \
            mountpoint{ /var } \
        . \
    1024 0 1024 swap \
            $defaultignore{ } \
            $lvmok{ } \
            lv_name{ lv_swap } \
            method{ swap } \
            format{ } \
        . \
    1024 0 1024 ext4 \
            $defaultignore{ } \
            $lvmok{ } \
            lv_name{ lv_tmp } \
            method{ format } \
            format{ } \
            use_filesystem{ } \
            filesystem{ ext4 } \
            mountpoint{ /tmp } \
        .

d-i partman-auto-raid/recipe string \
    1 2 0 lvm - /dev/nvme0n1p2#/dev/nvme1n1p2 \
        .

d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i finish-install/reboot_in_progress note

Antwort1

Zunächst möchte ich Ihnen für Ihr Preseed danken. Das hat mir den Arsch gerettet! Es ist wirklich schwer, ein funktionierendes Beispiel für Raid + LVM zu finden.

Um also Ihre Frage zu beantworten: Der EFI-Standard beinhaltet kein RAID. Ihre Art, dieses Zeug auf die zweite EFI-Partition zu kopieren, ist die einzige, die ich kenne und auch verwende.

Sie können dies jedoch möglicherweise mit einem Skript in Grub automatisieren, sodass Sie es bei jeder Aktualisierung von Grub am Ende kopieren können. Beispiel: /etc/grub.d/99_copy_efi. Ich muss dies jedoch noch testen, da ich im Moment andere dringende Angelegenheiten habe.

verwandte Informationen