EFIのパーティションが破損して起動しなくなったUbuntuを直した
はじめに
長らくろくにメンテナンスをしないで使用していたパソコンが急に機能不全に陥り再起動できなくなりました。今回はEFIパーティションが破損し、BIOS(UEFI)のブートディスク一覧に出てこず、ブートできない問題を解決してみましたので、その方法をメモとして残しておきます。
というわけで
症状
などの症状から、
HDDが物理的に破損して認識されなくなったのではなく、 ファイルシステムなどソフト的な破損でブートディスクとして認識されなくなった
のではないか、と考えました。じゃあ再認識されるようにするにはどうすりゃいいんじゃ?!ってなったので 手順をメモしておきます。
EFIパーティションとは
EFI システムパーティション - ArchWiki では、
EFI System Partition (ESP や EFISYS とも呼ばれます) は FAT32 でフォーマットされた物理パーティションで ここから UEFI ファームウェアは UEFI ブートローダやアプリケーションを起動します。 OS とは独立したパーティションであり、UEFI ブートには必須のパーティションになります。
とされています。今回はこのEFI System Partition (ESP)が破損したのではないかという仮説を元に修復を試みました。
出ていたエラー
直接関係あるかはわかりませんが、fsck.vfat -V /dev/sda1
とESPのベリファイを行ってみたところ、
Filesystem has XXX clusters but only space for YYY FAT entries.
というエラーが出ていました。
修復手順
というわけで備忘録的に手順を書いていきます。なお、この手順は
Ubuntu 14.04のLiveUSBを使用してUEFI
で起動しています。
レガシーなBIOS起動ではないので注意(BIOS起動からではEFIをいじることはできません。)
EFIパーティションの作り直し
GParted (パーティショニングツール)を使って、元々あった場所にパーティションを作ります。
ファイルシステムはFAT32
、フラグはboot
を指定します。
以前の環境にchrootする
よくブート環境をぶち壊してしまう自分にとってはもう慣れっこなんですが、ブートローダーを再構築するために 以下の手順で以前の環境にchrootします。
$ sudo -s # mkdir /chroot # mount /dev/sda2 /chroot # mount --bind /dev /chroot/dev # mount --bind /dev/pts /chroot/dev/pts # mount --bind /proc /chroot/proc # mount --bind /sys /chroot/sys # mount --bind /run /chroot/run # chroot /chroot
で、chrootしたら先ほど作成したEFIパーティションをマウントします。
# mount /dev/sda1 /boot/efi
grubのインストール
空のEFIパーティションにブートプログラムであるところのgrubをインストール
# grub-install --efi-directory=/boot/efi # update-grub
このコマンドをすることで/boot/efi/EFI/ubuntu/shimx64.efi
などというファイルができていると思います。
fstabの更新
ここで気持ちを逸らせて再起動すると泣きをみます。(みました。しかもブートに1分近くかかるマシンなのですごくつらかった!)
今回はパーティションを新たに作っているので、/etc/fstab
に記述してある/boot/efi
にマウントされるパーティションのUUIDを更新してやる必要がありました。
# vim /etc/fstab
として、以前のUUIDが書き込まれている部分に
# blkid /dev/sda1
で得られるUUIDを書いておきましょう。
ちなみに
fstabを更新せずに再起動をかけてしまうと、grubで起動OS選択画面まで出て「おおっ?!」ってなるんですが以下のような表示で停止してしまいます。
Loading initial ramdisk
カーネルか?!もしかしてカーネルが壊れたのか?!?!なんて思ってしまいましたが、蓋を開ければなんてことないミスが原因でした。
終わりに
今までGPTってよくわからなくてMBRばっかり使用していたんですが、今回はGPTなEFIをいじってみました。efibootmgrなど触ってみると案外面白そうだなという感触を得ました。
今回はパーティションを再構成することで解決しましたが、ファイルシステムが自然に破損するなんてことはあり得ない気がしますので、本来であればとっとと新しいディスクに換装すべきですね。