fygar256’s blog

fygar256のブログ・備忘録

マルチブート:grub2のos-proberが機能しないので

grub2のos-proberが機能しないので、grubのエントリを新しく作った。
grub-mkconfigで、os-proberが他のパーティションのOSを検出しないのである。

普通、grub-mkconfig -o /boot/grub/grub.cfgとすると、自動的にパーティションをスキャンしてブート可能なOSをgrubのエントリに登録してくれる。

 ダメ

/etc/default/grubを弄ってみた。

GRUB_DISABLE_OS_PROBER=false
にしてもダメ。

pacman -S os-prober
でos-proberをインストールしてもダメ。

UbuntuでもArch linuxでも同じことが起こる。
archlinuxインストール時に、間違ってUEFIブート関係を弄ってしまったのが原因かな?

os-prober
として実行しても、何も出力されない。os-proberのバグかな。

 対策

とにかく対策をと思ってgrubにカスタムのエントリが出てくるように、
次のファイルを作った。

/boot/grub/custom.cfg
 

menuentry "ubuntu Linux" {
        set root='hd0,msdos1'
        linux /boot/vmlinuz root=UUID=4eac0df4-ab0c-4055-969f-ab73ea55ef4d quiet
        initrd /boot/initrd.img
}

やっぱり手動が一番だね。

 解説

 
menuentry "ubuntu Linux" {   #  grubの選択画面で出てくるタイトル

        set root='hd0,msdos1'  #  0 : ディスクの1番目

             #  msdos1 : パーティション1番目

        linux /boot/vmlinuz root=UUID=4eac0df4-ab0c-4055-969f-ab73ea55ef4d quiet     # linux カーネルのロード

             # /boot/vmlinuz : デフォルトのカーネル指定

             # root=UUID=<hoge>: ブートパーティションのUUID

             # quiet : 起動時にずらずらメッセージを出さない


        initrd /boot/initrd.img  # initrd : 初期ramdiskのロード

             # /boot/initrd.img : デフォルトのinitrd.img 指定
}

 

原因

他のシステムの入ってるパーティションをマウントしてないのが原因。

マウントポイントはどこでもいいが、os-proberはマウントされたディスクからOSを検知する。