2013/08/29
Ubuntuのbootメニューが行方不明になった件 (X1 Carbon)
UbuntuとWin8のデュアルブートで使ってるX1 Carbon、仕事の合間に OSのアップデートなど色々入れていたら、いつの間にかブート時にUbuntuが 選択できなくなっていた。
以前の状況
- BIOS: Secure Bootはoff
- BIOS: UEFI/Legacy Bootの選択肢は"Both"
- Ubuntu自身はEFIでは入ってない様子。/boot/efi/ubuntuはあるんだけど、 Secure Bootをonにすると起動しようとしても「認証できない」というようなエラーになる。
- 黙って起動させるとそのままWindowsが立ち上がってしまうので、 ブート時にF12でBoot Menuを出していた。Menuには次の項目があり、 最初と2番目を選ぶとWindowsが、Grubを選べばGrubメニューが立ち上がってた。
- Windows Boot Manager
- ATA HDD0: SanDisk SD5SG2128G1052E
- Grub
症状
F12からのBoot MenuでGrubの選択肢が表示されなくなった。 残りの選択肢はどちらを選んでもWindowsが立ち上がる。
対応
どうせブートローダが上書きされたんだろう、と踏んで、 USBからUbuntuインストーラを起動。 Ubuntuインストール済みのパーティションを/mntにマウントして
$ sudo grub-install --bot-directory=/mnt/boot /dev/sda
としてみるが、
grub-install /dev/sda /usr/sbin/grub-setup: warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
とか言われて失敗する。自分のブートシーケンスの知識はMBRと レガシーパーティションテーブルの時代で止まっているので よく分からない。
ざくっとブート時のトラブルで検索してみると、boot-repairというツールが お手軽らしい。
https://help.ubuntu.com/community/Boot-Repair
指示にしたがいインストールしてひとまずデフォルト設定でrepairしてみる。
「EFIが有効になってないよ。有効にしてやり直すかい?」とか聞かれるんだけど、 EFI有効にするとそもそもusbからブートできない→boot-repairも使えないんで、 どうしようもない。efi対応の起動usb作るのも面倒だしそのままやってみる。
何やらgrub installしている模様だが。再起動してみても変わらず。
今度はboot-repairのadvanced settingsを眺めてみる。 EFI対応でインストールしようとしてるみたいなんだが、レガシーではできないんかな。 MBR optionsってタブがあるんだけどそこには何も表示されていないのだ。
BIOSの設定とか行ったり来たりしばらく試行錯誤して、boot-repairを諦め。
もう一度基本から考え直す。EFI bootでなくてもいいんだから、MBRにgrubを 入れられればいいはず。ならばgrub-installを成功させるのがやっぱり王道だ。
というわけで上のgrub-installのエラーメッセージでぐぐる。(これを最初にやっておけば良かった)。
どうやら、レガシーパーティションテーブルの時はgrubを格納するスペースがあったんだけど GPTになってからその場所が無くなっちゃったので、MBRからブートしたければ grubを入れるパーティション (BIOS Boot Partition) を用意してくれ、ってことらしい。
幸い、ディスクに使ってない隙間があったので新たに小さなパーティションを切る。 BIOS Boot Partitionにするにはgpartedでそのパーティションにbios_grubフラグを 立てるだけで良いようだ。
改めてgrub-install。無事成功。
現状
結局どうなったかというと、F12のBoot Menuではやっぱりこの二つしか出てこないんだけど:
- Windows Boot Manager
- ATA HDD0: SanDisk SD5SG2128G1052E
ATA HDD0の方を選ぶとGrubメニューになる。 というわけで以前とは違う形になってるんだがとりあえずUbuntuの起動はできるようになった。
(追記2013/08/30 16:17:17 UTC): 以前はHDD0を選んでもWindowsが立ち上がってた、ということは、 grubはMBRに入って無かったということだよなあ。では以前はどこに入っていたのか、 EFI経由のbootではなかったのだから、そこが謎。 Ubuntuを入れたパーティションのブートセクタを見ていたんだとすると、 消えて復活しない説明がつかない (パーティションのbootフラグは立っている)。
Tag: PC
Post a comment