Early_command를 사용하여 두 개의 디스크에 grub 설치를 동적으로 프로비저닝하려고 합니다. IPXE를 사용하고 있습니다. 관련 부분은 다음과 같습니다.
d-i partman/early_command string \
DISKA=$(realpath /dev/disk/by-id/ata-SuperMicro_SSD_* /dev/disk/by-id/ata-SATA_SSD_*|grep -o '/dev/sd[a-z]'|uniq|sort|head -n1); \
DISKB=$(realpath /dev/disk/by-id/ata-SuperMicro_SSD_* /dev/disk/by-id/ata-SATA_SSD_*|grep -o '/dev/sd[a-z]'|uniq|sort|head -n2|tail -1); \
if [ "${DISKA}" == "" ]; then DISKA="/dev/sda"; fi; \
if [ "${DISKB}" == "" ]; then DISKB="/dev/sdb"; fi; \
debconf-set partman-auto/disk "$DISKA $DISKB"; \
debconf-set partman-auto-raid/recipe "1 2 0 ext4 / ${DISKA}2#${DISKB}2 . 1 2 0 lvm - ${DISKA}4#${DISKB}4 ."; \
debconf-set grub-installer/bootdev "$DISKA $DISKB";
나는 위와 같은 방법을 사용하거나 사용하지 않고 다음 방법의 여러 변형(true, false)을 시도했습니다.
d-i grub-installer/only_debian boolean false
d-i grub-installer/with_other_os boolean false
Early_command에서도 이것을 시도했습니다.
debconf-set grub-installer/only_debian false; \
debconf-set grub-installer/with_other_os false;
안타깝게도 Install the GRUB boot loader on a hard disk
대화 상자에는 아래와 같이 여전히 올바른 디스크가 표시되므로 확인하고 계속해야 합니다. 자동으로 사전 설정할 수 있나요?
답변1
알고 있었다. 줄에서 큰따옴표를 제거해야 합니다.
debconf-set partman-auto/disk "$DISKA $DISKB"; \
debconf-set grub-installer/bootdev "$DISKA $DISKB";
이 되다:
debconf-set partman-auto/disk "$DISKA $DISKB"; \
debconf-set grub-installer/bootdev $DISKA $DISKB;
편집하다
/dev/sda
재부팅 후 다음 명령을 통해서만 grub이 설치되었음을 발견했습니다 dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings
.
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
Error
동일한 명령을 실행하면 /dev/sdb
아무것도 반환되지 않습니다. 이는 디스크의 첫 번째 512B가 비어 있음을 의미하므로 /dev/sdb
다음과 같이 grub을 수동으로 설치해야 합니다.
# grub-install /dev/sdb
# dd bs=512 count=1 if=/dev/sdb 2>/dev/null | strings
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
Error
두 개의 디스크에 grub을 설치하는 방법을 여전히 찾을 수 없습니다early_command
감사해요
답변2
이제 유일한 해결책은 다음 두 줄을 추가하는 것입니다 early_command
.
. /usr/share/debconf/confmodule;\
db_fset grub-installer/bootdev seen true
그래서 그것은 다음과 같습니다:
.....
debconf-set grub-installer/bootdev "$DISKA $DISKB";\
. /usr/share/debconf/confmodule;\
db_fset grub-installer/bootdev seen true
이 문제가 곧 해결되기를 바랍니다.
답변3
이 버그는 2013년에 보고되었습니다. 이 대화 상자는 LVM 및/또는 RAID를 사용할 때 항상 나타나는 것 같습니다.
답변4
나는 또 다른 (덜 추악한) 해결 방법을 찾았습니다. 이는 프리팹에 다음 줄을 추가하는 것입니다.
d-i grub-installer/bootdev string /dev/sda
그런 다음 debconf-set를 사용하여 질문에 설명된 대로 해당 구성을 재정의하십시오. grub 설치 프로그램은 debconf-set에 설정한 모든 내용을 존중합니다.
이것이 왜 작동하는지 잘 모르겠지만 사전 설정에 해당 줄을 포함하면 나중에 재정의하더라도 문제가 이미 확인되었음을 의미하므로 다음을 수행할 필요가 없습니다.
db_fset grub-installer/bootdev seen true