GRUB2が起動しなくなった場合の復旧方法を記載します。
Table of Contents
1 LiveDVDの起動
Ubuntu 16.04のLiveDVD(ubuntu-16.04.1-desktop-amd64.iso等)で起動し、Try UbuntuでLiveDVDを起動します。
2 ストレージのマウント
HDDやSSDのUbuntuをインストールしたストレージをマウントします。この記事では仮想環境のVirtIOストレージを用いており、ストレージは/dev/vdaとして見えます。実機環境の場合は/dev/sdaになると思います。
LVMを使っている場合は/dev/vda1に/boot、/dev/vda5にLVMボリューム、/dev/ubuntu-vg/rootにルートファイルシステムがインストールされてます。LVMを使っていない場合は/dev/vda1に/boot、/dev/vda5にルートファイルシステムがインストールされています。
$ sudo mount -o rw /dev/ubuntu-vg/root /mnt # In case non-lvm is /dev/vda5 $ sudo mount -o rw /dev/vda1 /mnt/boot $ for fs in proc sys dev; do sudo mount -o bind /$fs /mnt/$fs; done
3 /etc/default/grubの復旧
/etc/default/grubはgrub-mkconfigで使用するgrub.cfgの変数を定義しています。/etc/default/grubの編集でGRUB2が立ち上がらなくなった場合は、LiveDVDのものをコピーしてください。Ubuntu 16.04をインストールした直後はLiveDVDの/etc/default/grubがそのままコピーされています。
$ sudo cp /etc/default/grub /mnt/etc/default/
4 chrootの実行
ルートファイルシステムにchrootします。
$ sudo chroot /mnt
5 lvm2-lvmetadの起動
LVMの場合はgrub-mkconfigで/etc/init.d/lvm2-lvmetadが動いている必要があります。
# /etc/init.d/lvm2-lvmetad start
6 GRUB2の復旧
GRUB2を再インストールします。
# sudo apt install -y grub2 --reinstall
grub-installでMBRと/bootににGRUB2のファイルを書き込みます。
# grub-install /dev/vda Installing for i386-pc platform. Installation finished. No error reported.
grub-mkconfigでGRUB2のメニューを更新します。
# grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-4.4.0-42-generic Found initrd image: /boot/initrd.img-4.4.0-42-generic Found linux image: /boot/vmlinuz-4.4.0-38-generic Found initrd image: /boot/initrd.img-4.4.0-38-generic Found linux image: /boot/vmlinuz-4.4.0-31-generic Found initrd image: /boot/initrd.img-4.4.0-31-generic Found memtest86+ image: /memtest86+.elf Found memtest86+ image: /memtest86+.bin done