여러 디스크에 grub 부트로더를 동적으로 설치

여러 디스크에 grub 부트로더를 동적으로 설치

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대화 상자에는 아래와 같이 여전히 올바른 디스크가 표시되므로 확인하고 계속해야 합니다. 자동으로 사전 설정할 수 있나요?

디스크에 GRUB 설치

답변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를 사용할 때 항상 나타나는 것 같습니다.

https://wiki.debian.org/DebianInstaller/Bugs/GrubInstaller

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=712907

답변4

나는 또 다른 (덜 추악한) 해결 방법을 찾았습니다. 이는 프리팹에 다음 줄을 추가하는 것입니다.

d-i grub-installer/bootdev string /dev/sda

그런 다음 debconf-set를 사용하여 질문에 설명된 대로 해당 구성을 재정의하십시오. grub 설치 프로그램은 debconf-set에 설정한 모든 내용을 존중합니다.

이것이 왜 작동하는지 잘 모르겠지만 사전 설정에 해당 줄을 포함하면 나중에 재정의하더라도 문제가 이미 확인되었음을 의미하므로 다음을 수행할 필요가 없습니다.

db_fset grub-installer/bootdev seen true

관련 정보