“Windows10とUbuntu16.04のデュアルブート環境構築”の手順通りにデュアルブート環境を構築し、日々運用していたのですが、Windows Updateを実行したタイミングでブートローダであるGRUBが起動しなくなってしまいました。
解決方法としては、UEFI環境で動作している場合、FATでフォーマットされているEFIシステムパーティションへのGRUBの再インストールが一般的なようです。
手元にUbuntuのisoイメージをLive CD化したデータの入ったUSBメモリが残っていたので、これを利用してGRUBの再インストールを行うことが出来ました。
以下が大まかな復旧手順になります。
- UbuntuのisoイメージをLive CD化したデータの入ったUSBメモリを用意
- BIOSを起動し、USBメモリから起動するようにブートシーケンスを変更
- Live CDで起動するGRUBを利用して、既存のUbuntuのrootfsをブート
- GRUBの再インストール
1. UbuntuのisoイメージをLive CD化したデータの入ったUSBメモリを用意
“Windows10とUbuntu16.04のデュアルブート環境構築”の“1. USBメモリの用意”を参考にして用意してください。
2. BIOSを起動し、USBメモリから起動するようにブートシーケンスを変更
項目1で作成したUSBメモリを接続した状態でBIOSを起動し、ブートシーケンスの設定をUSBメモリから起動するように変更してください。
3. Live CDで起動するGRUBを利用して、既存のUbuntuのrootfsをブート
項目2でブートシーケンスを適切に設定していればPCの起動時にGRUBが起動します。ここで“c”を押下することで、GRUBのコンソールを開く事が出来ます。このコンソールからディスクにインストール済みのUbuntuを起動します。
grub> ls
grub> set root=<対象のパーティション名>
grub> linux <カーネルの実行バイナリのパス> root=<対象のパーティションを指すデバイスファイルのパス>
grub> initrd <初期RAMディスクのパス>
grub> boot
1行目のlsコマンドでパーティションの一覧を表示することが出来ます。ここで表示されるパーティション名の内、既存のUbuntuのrootfsを表すものを2行目で指定します。3行目と4行目では、既存のUbuntuのrootfs下に存在するそれぞれのファイルのパスを指定します。5行目のbootコマンドを実行すると、既存のUbuntuがブートします。
私の場合は以下のようになりました。
grub> ls
grub> set root=(hd1,gpt6)
grub> linux /boot/vmlinuz-4.15.0-45-generic root=/dev/nvme0n1p6
grub> initrd /boot/initrd.img-4.15.0-45-generic
grub> boot
既存のUbuntuのrootfs下に存在するファイルに関しては、GRUBコンソール上でもtabによる補完が動作するので、問題なく見つけられるかと思います(例えば、“<対象のパーティション名>/boot/”まで入力してtabを押下することで/boot/以下のファイルが表示されます)。
4. GRUBの再インストール
FATでフォーマットされているEFIシステムパーティションへのGRUBの再インストールを行います。
$sudo update-grub
$sudo grub-install /dev/sda
$sudo grub-install --recheck /dev/sda
以上でPCの起動時にGRUBが正常に起動するようになりました。
「Windows10+Ubuntu16.04LTSのデュアルブート環境でGRUBが起動しなくなった」への1件のフィードバック