GRUB2 のブートメニューに Ubuntu が表示されなくなった時のアレ
ある朝目覚めると GRUB2 のブートメニューに Ubuntu が表示されなくなっていました.
あれ?と思ったのですが,そういえば夢でカーネルのアップグレードをしたような…
※詳しくないので,やったことのメモだけです.
一応大まかに環境とか
マシン : Lenovo ThinkPad X260
OS1 : Windows 10 Pro 64bit
OS2 : Ubuntu 16.10 64bit
GRUB2 : 2.02 ~beta2
とりあえず GUI ツールで修復してみる
というわけでおなじみ?の boot-repair 君の出番です.
以前 Windows 側がブートされなくなった時にコイツで簡単に修復できました.
今回は Ubuntu のインストール時に使用したライブメディア(USB メモリ)がそのままだったので,利用しました.
USB からブートしたら,
$ sudo add-apt-repository ppa:yannubuntu/boot-repair $ sudo apt-get update $ sudo apt-get install boot-repair $ boot-repair
すると起動するので,「おすすめの修復」を実行 → リブートします.
…が,残念,状況は変わりませんでした.
手動でブートしてみる
grub> プロンプトからブートしてみます.
GRUB2 のブートメニューが表示されたら "C" をタイプすると,プロンプトが起動します.
おなじみのコマンドもけっこう使えるようです.
Ubuntu は sda5 にあったはずなので,見てみます.
grub> ls (hd0) (hd0, gpt7) (hd0,gpt6) (hd0,gpt5) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)
この (hd0, gpt5) が sda5 に対応します.
grub> cat (hd0,5)/etc/issue Ubuntu 16.10 \n \l
ありました.
/boot を覗いてみます.
grub> ls (hd0,5)/boot/
するものの…空です.
そういえば boot-repair が sda4 以下に /boot を構成とか言ってたような…
grub> ls (hd0,4)/boot/ grub/ System.map-4.8.0-27-generic abi-4.8.0-27-generic config-4.8.0-27-generic initrd.img-4.8.0-27-generic grub.bak/ memtest86+.bin memtest86+.elf memtest86+_multiboot.bin vmlinuz-4.8.0-27-generic vmlinuz-4.8.0-27-generic.efi.signed efi/
いました. ブートしてみます.
grub> linux /boot/vmlinuz-4.8.0-27-generic root=/dev/sda4 grub> initrd /boot/initrd.img-4.8.0-27-generic grub> boot
………コケました.
同じパーティションじゃなきゃダメなのかな?
/boot 以下を sda4 から sda5 へ移して,
grub> ls (hd0,5)/boot/ grub/ System.map-4.8.0-27-generic abi-4.8.0-27-generic config-4.8.0-27-generic initrd.img-4.8.0-27-generic grub.bak/ memtest86+.bin memtest86+.elf memtest86+_multiboot.bin vmlinuz-4.8.0-27-generic vmlinuz-4.8.0-27-generic.efi.signed efi/
ここから,
grub> linux /boot/vmlinuz-4.8.0-27-generic root=/dev/sda5 grub> initrd /boot/initrd.img-4.8.0-27-generic grub> boot
で,一応ブートされました.
GRUB2 ブートメニューに Ubuntu を表示させる
ブートできるのは分かったので,応急処置的にメニューへ表示させます.
/etc/grub.d/40_custom に
menuentry "Ubuntu" { set root=(hd0,5) linux /boot/vmlinuz-4.8.0-27-generic root=/dev/sda5 initrd /boot/initrd.img-4.8.0-27-generic }
とか書いてカーネルのバージョンを指定してやって, /etc/default/grub の
GRUB_DEFAULT=n
でデフォルトのハイライトをお好みで設定して,
$ sudo update-grub
したら,一応表示されたので,さしあたりおkということで.
すぐまた困りそうだけど,その時のことはその時考えます.