すっげぇ多くのディスク付けたマシン(JBODでね)にdebian-installer(d-i)でインストールしようとすると失敗する、という話を昔聞いた。要は/dev/sdaから始まってディスク1個毎にアルファベットが変わるのだけど、/dev/sdzの次は/dev/sdaaってなって、このディスクへインストールしようとするとバグ踏んでgrubのインストールがコケる(/dev/sdaa以降のディスクにgrubをインストールしなければ、関係ない)。
d-iでgrubのインストール作業はgrubパッケージじゃなくてgrub-installerパッケージが担当してた。読む。直した。
--- grub-installer.orig 2017-02-03 22:51:57.598613756 +0900
+++ grub-installer 2017-02-04 00:19:37.085153540 +0900
@@ -254,7 +254,7 @@
/dev/mapper)
disc_offered_devfs="$bootfs"
;;
- /dev/[hsv]d[a-z0-9]|/dev/xvd[a-z]|/dev/cciss/c[0-9]d[0-9]*|/dev/ida/c[0-9]d[0-9]*|/dev/rs/c[0-9]d[0-9]*|/dev/mmcblk[0-9]|/dev/nvme[0-9]*n[0-9]*|/dev/ad[0-9]*|/dev/da[0-9]*)
+ /dev/[hsv]d[a-z0-9]*|/dev/xvd[a-z]|/dev/cciss/c[0-9]d[0-9]*|/dev/ida/c[0-9]d[0-9]*|/dev/rs/c[0-9]d[0-9]*|/dev/mmcblk[0-9]|/dev/nvme[0-9]*n[0-9]*|/dev/ad[0-9]*|/dev/da[0-9]*)
disc_offered_devfs="$prefix"
;;
*)
/dev/[hsv]d[a-z0-9] ではなく /dev/[hsv]d[a-z0-9]* としただけ。
検証は
- VirtualBoxに大量の仮想ディスクを追加して環境を作成
- d-i RC2で再現させて、シェルに落ちる
- /usr/bin/grub-installer を編集…するのだけど、自分がヘタレなのでvimを使うことに。chroot した/target 以下にあるので/lib/x86_64-linux-gnu/以下を/libにコピーして、/target/usr/bin/vim.tiny を立ち上げて編集
- シェルをexitしてgrubをインストールして再起動
- 無事起動した。/dev/sdab を使っているのが確認できる
多分過去にバグレポートされたのがあるだろうと思って検索、見つけたのでパッチを添付してgrub-installerにreassignしてtag付けといた。
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839894
まぁ、この程度の技術レベルでも作業できる訳ですのでレッツトライ。