存在しないUUIDを書き込むgrub-mkconfig

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-mkconfiginstall-grubをかけても,grub.cfgには,多分昔設定されていたであろう現存しないUUIDが頑なに書き込まれてしまいます.やむを得ないので,grub-mkconfig (あるいはupdate-grub)のあと,grub.cfgを編集して,UUIDを現在のものにすることで,第2OSもブートできています

第2OSの側で,

find -type f -exec grep -H 古いUUID {} \;

をかけても見つかりませんでした.今度第1OSで同じことをして探してみます.

Notes:
1. Linux distributionの略.英語のドキュメント類を読んでいないことがバレるので “ディストリ” と略さないようにしましょう.
2. Debianの32bit版,64bit版,Slackware 32bit版,64bit版,Manjaro 64bit版の5種類試しました.
3. もちろんsedでもできますが,全体を見渡しながら修正するほうが好きなのでエディターでやってます.
4. というか,それがわかってそのようにしているのはきょうになってから😅
Linux distributionの略.英語のドキュメント類を読んでいないことがバレるので “ディストリ” と略さないようにしましょう.
Debianの32bit版,64bit版,Slackware 32bit版,64bit版,Manjaro 64bit版の5種類試しました.
もちろんsedでもできますが,全体を見渡しながら修正するほうが好きなのでエディターでやってます.
というか,それがわかってそのようにしているのはきょうになってから😅