Island Life

< ひとむかし | ピアノレッスン105回目 >

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

Name: