いまメーンのディスク(efi-hdd)では、
grub2で、システム起動をコントロールしています。
起動に関して整備していて、ただ、ひとつの
ディストロから、ほかのディストロすべてを
起動できるようにしたい、ってことで、
やってみました。
efiのbios風画面で立ち上がるディストロを
切り替えるのが、いやでなければ、
必要のないことです。
ディスクに入っているのは、
sparky-6.0、debian10、ubuntu18.04.5lts
archbang、fedora34の5つです。
デフォルトの状態では、archbangとfedora34は、
ほかからは、起動できません。os-proberを
grub-mkconfigで効かせても、です。
fedora34の場合、BLSCFGのブート方法を
取っています。os-proberは未対応。
archbangの場合は、initrd amd-ucode.imgの
後ろに入っているinitramfs-linux.imgを
os-proberが見逃すためです。
debian、ubuntu系のgrubからは、
デフォルトの状態では、
foedoraやarchを起動できません。
厳密に言えば、40_customなどに記述すれば、
起動できますが、いちいちそんなことを
やっていられません。
ディストロがどれでもあっても、自分自身は
起動することから、archbangか、fodoraから
起動するれば、問題はあとひとつになります。
fedoraのBLSCFGの設定は簡単に外すことができます。
/etc/default/grubにある行、
GRUB_ENABLE_BLSCFG="true"
のtrueをfalseにして、
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
をすれば、ほかからのupdate-grub(os-prober)で
読み取れて、起動可能なgrub.cfgの記述になります。
結果、archbangですべてを
起動できるようにしようと思いました。
ところが、archbangの/etc/default/grubは、
気が利かない状態で、
fedoraの修正後に、archbangで、
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
をしましても、
Fedora (Workstation Edition)(on /dev/sda6)
のようなそっけないまったく同じ名前がずらっと並ぶだけで、
システム起動もしないんですね。エイントリーすべてで
リンクファイルの/boot/vmlinuzを指していました。
この点、debianは、お人好しでありまして、
カーネルの区別がわかるように、
update-grubが働きます。
archとdebianで、/etc/default/grubを見比べると、
archが
GRUB_DISTRIBUTOR="Arch"
であるのに対し、debianは、
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
となっていました。debianのほうの一行の
意味は、いまいち解らないのですが、
そのまんま、archにもってきて、
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
をしました。そうしたら!
os-proberの働きがおかしくなって、
本体の起動を記したあと、
update-grub rmdir: '/var/lib/os-prober/mount' を削除できません: デバイスもしくはリソースがビジー状態です
の記述が、残りのディストロの数、
つまり4行分出るようになりました。
何をやっても、しばらくこうでした。
これを修復するのがたいへんで、どうやって
なおったか、わかりません。最終的には、
思惑通りの起動選択画面になりました。
GRUB_DISTRIBUTOR=の記述は、上の通り、そのまま。
fedoraは、カーネルの区別が付くようになり、システム起動も
問題なし。archbangもgrub本体による情報収集記述なので、
/boot/initramfs-linux.imgの読み取り記述忘れはなし。
システムの起動に問題ありません。残りのdebian、ubuntu系は、
推して知るべし、問題はなく起動できるでしょう。
正常化させるのに、grubやos-proberの再インストール、
os-proberのコマンド実行も行いました。
でも、何が正常化させたのか、確たるところは判りません。
最後の2モーションは、
$ os-prober
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
だったような気がします。
おやりになる場合は、自己責任でお願いします。
本体が起動しなくなる恐れは少ないですが、
os-proberが正常に働かなくなる恐れがあります。
そして、archlinxu本家系が混ざるマルチブートなら、
archのgrubを使ってシステム起動の管理をするのが、
合理的かな、と思います。
虎穴に入らずんば、虎子を得ず、というか、
それ自身は、どれであっても起動できるので。
困難の数は少ないほうがいいでしょう。
manjaroは、この点を
工夫していて、子ディストロになったときでも、
manjaroが拾われるようにできている、と思います。
いま手元にmanjaroがなかったような。
仕組みは、まだ調べていません。