
내가 찾은 가장 비슷한 질문은 다음과 같습니다.efi에 대한 Ubuntu 소프트웨어 공격, 두 번째 드라이브를 부팅하는 방법은 무엇입니까?
제 상황은 NVMe 드라이브를 소프트웨어 RAID 1로 구성하는 Debian 설치용 사전 설정 파일이 있다는 것입니다. 두 디스크 모두 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
이것은 작동합니다. 그러나 이것이 설치 프로그램의 일부여야 하는 기본 핵심 기능처럼 보이기 때문에 더 좋고/쉬운 방법을 놓쳤을 수도 있습니다.
설치 중에 이를 직접 수행할 수 있는 방법이 있습니까? 예를 들어 제가 놓친 다른 미리 설정 명령이나 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 지금은 다른 긴급한 문제가 있어서 아직 테스트가 필요합니다.