grub-mkconfig
というスクリプトが多くのdistroで採用されています.
今実行しているOSをgrubのブートメニューに加えるのはもちろんのこと,マウントしていない他のパーティションにあるOSも探し出してメニューに加えてくれます.
現在第2 workstation (以下 “第2WS”)では,第1OSであるManjaroが第1パーティションにEFI+GRUBのブートローダーをインストールして,第2OSもその御蔭でブートするようにしています.
ところがどっこい,第2OSの情報が正しくgrub.cfgに書き込まれておらず,ブートしてくれません.いろんなOSを仮想マシンから引っ張り出してコピーしてみましたが,だめでした.
いろいろその過程でわかってきたのは,どうもgrub.cfgに書き込まれている第2OSのパーティションのUUIDが間違っていることです.
パーティションのUUIDはフォーマット時に設定されますからいくらでも変わるわけですが,それじゃ面倒なのと,FEATURE_C12の呪いの問題があるので,第2OSのパーティションは1度SlackwareのインストールDVDイメージからフォーマットして以来フォーマットせず,OSの入れ替え時には,rsync
に--delete
オプションを付けてコピーするようにしています.
何度grub-mkconfig
やinstall-grub
をかけても,grub.cfg
には,多分昔設定されていたであろう現存しないUUIDが頑なに書き込まれてしまいます.やむを得ないので,grub-mkconfig
(あるいはupdate-grub
)のあと,grub.cfg
を編集して,UUIDを現在のものにすることで,第2OSもブートできています.
第2OSの側で,
find -type f -exec grep -H 古いUUID {} \;
をかけても見つかりませんでした.今度第1OSで同じことをして探してみます.
sed
でもできますが,全体を見渡しながら修正するほうが好きなのでエディターでやってます.