web-dev-qa-db-ja.com

grubブートローダーを複数のディスクに動的にインストールする

Early_commandを使用して、2つのディスクにgrubを動的にインストールするようにpreseedしようとしています。 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ダイアログは、以下に示すように正しいディスクで表示されたままなので、確認して続行する必要があります。これを自動的にプレシードできますか?

Install GRUB to disk

2
Max

今までのところ、唯一の回避策はearly_commandに次の2行を追加することです。

. /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

これがすぐに修正されることを願っています。

1
Max

このバグは2013年にすでに報告されています。LVMやRAIDを使用している場合、ダイアログは常に表示されるようです。

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

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

1
Max

とった。行から二重引用符を削除する必要があります。

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;

[〜#〜]編集[〜#〜]

再起動後、grubは/dev/sdaに次のコマンドdd bs=512 count=1 if=/dev/sda 2>/dev/null | stringsを使用してのみインストールされていることがわかりました。

ZRr=
`|f 
\|f1
GRUB 
Geom
Hard Disk
Read
 Error

/dev/sdbで同じコマンドを実行しても何も返されません。つまり、ディスクの最初の512Bが空であるため、次のようにgrubを/dev/sdbに手動でインストールする必要がありました。

# 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

early_commandを使用して2つのディスクにgrubをインストールする方法がまだ見つかりません。

ありがとう

1
Max