Как заставить Debian RAID 1 preseed заполнить разделы EFI на обоих дисках?

Как заставить Debian RAID 1 preseed заполнить разделы EFI на обоих дисках?

Самый похожий вопрос, который я нашел:Программный рейд Ubuntu на efi, как загрузиться со второго диска?

Моя ситуация такова: у меня есть рабочий preseed-файл для установки Debian, который настроит мои диски NVMe на программный RAID 1. Оба диска даже получат раздел efi (/dev/nvme0n1p1 и /dev/nvme1n1p1). Однако раздел второго диска не будет заполнен, поэтому он фактически не будет загрузочным, если первый диск выйдет из строя.

Цель RAID 1 — сценарии отказа диска. Если я не могу загрузиться со второго диска, то это для меня бесполезно.

Я нашел обходной путь, с помощью которого в скрипте завершения установки я могу запустить:

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

Это работает; однако, возможно, я упустил лучший/более простой способ, поскольку это кажется базовой базовой функциональностью, которая должна быть частью установщика.

Есть ли способ сделать это непосредственно во время установки, например, с помощью другой команды preseed или опции partman, которую я пропустил?

Соответствующие части 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

решение1

Во-первых, позвольте мне поблагодарить вас за ваш Preseed. Это спасло мою задницу! Действительно трудно найти работающий пример для Raid + LVM.

Итак, отвечая на ваш вопрос: стандарт EFI не включает в себя raid. Ваш способ копирования этого материала на второй раздел EFI — единственный способ, который я знаю и также использую.

Однако вы можете автоматизировать это, возможно, с помощью скрипта в grub, так что всякий раз, когда grub обновляется в конце, вы можете скопировать его. Например: /etc/grub.d/99_copy_efi Мне все еще нужно это протестировать, так как у меня сейчас есть другие неотложные дела.

Связанный контент