如何讓 Debian RAID 1 預置以填入兩個磁碟上的 EFI 分割區?

如何讓 Debian RAID 1 預置以填入兩個磁碟上的 EFI 分割區?

我發現的最相似的問題:Ubuntu 軟體對 efi 進行突襲,如何啟動第二個磁碟機?

我的情況是,我有一個用於Debian 安裝的工作預置文件,它將把我的NVMe 驅動器配置為軟體RAID 1。 )。但是,第二個磁碟的分割區不會被填充,因此如果第一個磁碟發生故障,則實際上無法啟動。

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 選項?

預種子的相關部分:

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 我仍然需要測試這個,因為我目前有其他緊迫的事情。

相關內容