動かざることバグの如し

近づきたいよ 君の理想に

Ubuntu 16.04を2TB以上のディスクにインストールする際の注意点

環境

  • Ubuntu 16.04
  • 2TB以上のHDD

結論

  • バグ?というか2TB以上のHDDにUbuntu 16.04をカスタマイズしたパーティション構成でインストールしようとするとコケる
  • が、後述するコマンドで対策可能

経緯

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