Early_commandを使用して、2つのディスクに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
2つのディスクにgrubをインストールする方法がまだ見つかりませんearly_command
ありがとう
答え2
これで唯一の解決策は、次の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