環境
- Ubuntu 16.04
- 2TB以上のHDD
結論
経緯
2TBのディスクにUbuntuをインストールしようとしたが、何回やってもうまくインストールできない。インストール自体はうまくいく(ようにみえる)のだが、再起動すると「No boot device found」で起動できない。どうも条件があるらしく
の条件のときにGRUB2がインストールされないという致命的なバグが有る。実際/boot/efiに本来ブートに必要なファイルが有るはずだが空になっている。
なんとも厄介なバグ(仕様?)だが、インストール後に自分でGRUB2をインストールするしかない
GRUB2の再インストール方法
まずUbuntuをLive CDモードで起動してインストール。インストール後は再起動せずにそのままターミナルを開く。ここではルートディレクトリの「/」を/dev/sda2、EFIパーティションの「/boot/efi」を/dev/sda1とする。
まずはマウント。最終的には/mnt下でchrootすることになる。
mount /dev/sda2 /mnt mount /dev/sda1 /mnt/boot/efi
これだけだとGRUB2のインストールはできないので特殊な場所もマウント
mount --bind /dev /mnt/dev mount --bind /dev/pts /mnt/dev/pts mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys
面倒な場合はforで回す手もある
for i in /dev /dev/pts /proc /sys; do sudo mount /mnt$i; done
ライブラリをロード
modprobe efivars
後述するchroot環境でネット通信が必要になるのでresolve.confをコピー
cp /etc/resolve.conf /mnt/etc/resolve.conf
chroot環境下に入る
chroot /mnt
以下はchroot上での作業
必要なパッケージをインストール(最初からインストールしてくれとマジギレ
apt install grub-efi-amd64
grub2のインストール
grub-install /dev/sda update-grub
chroot環境を抜ける
exit
これで/mnt/boot/efiにファイルが生成されていれば成功。空っぽなら再起動しても結局コケる
再起動前は忘れずにアンマウント -R
で再帰的にアンマウントしてくれる
umount -R /mnt