なんとかUbuntuとWindows10のデュアルブート構成をして、Ubuntuも16.04にアップデートをして組み込みのWifiチップにも対応してしばらく快適に運用していたのですが悲しい事件が起きました。
Windows10のWindowsUpdate( )にGRUB2を壊されてUbuntuが起動できなくなってしまったのです。(Windows10 Insider Previewにしたのでそのせいかもしれません)
XPS13はUEFIでSSDというところでなかなかうまい参考資料が見当たらず苦戦しました。
(先人たちの資料ではMBRのブートローダーを使う方法だったり、HDD前提だったりでうまくXPS13に合う情報がなかなかありませんでした)
こちらの資料が最も参考になりました。
手順
1. インストールディスクで起動
まず、Ubuntu16.04のインストールディスクが必要です。(15.10の起動ディスクではなぜかうまく起動せず…自分の起動ディスクが壊れているだけかも)
私の場合かれこれ2度食らったので、この先も食らう可能性を考慮して快適な速度で起動するUSBメモリで起動メディアを作成しました。(DVDだと起動するのに10分近くかかりました)
2. GRUB2の再構成
起動したらターミナルで以下を実行します。
$ sudo su
# mount /dev/nvme0n1p5 /mnt
# mount /dev/nvme0n1p1 /mnt/boot/efi
# mount --bind /dev /mnt/dev
# mount --bind /dev/pts /mnt/dev/pts
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
# modprobe efivars
# chroot /mnt
# grub-install /dev/nvme0n1
# update-grub
# exit
3. GRUB2のメニューにWindowsも追加
上記の手順でGrub2のメニューにUbuntuは出てくるが、Windowsが出ていない状態だと思います。
一旦Ubuntuにログインしてupdate-grubを実行することでGrub2のメニューにWindowsが追加されます。
$ sudo update-grub
若干解説
まず、XPS13のデバイス名は毎度おなじみのsda
とかsdb
とかではありません。nvme0n1
というデバイス名になっています。
自分の場合以下のようなパーティション状況になっています。
パーティション名 | 用途 |
---|---|
nvme0n1p1 | UEFIのBoot領域 |
nvme0n1p5 | Ubuntu |
nvme0n1p3 | Windows |
# mount /dev/nvme0n1p5 /mnt
# mount /dev/nvme0n1p1 /mnt/boot/efi
で、こうなるわけです。
そしてchroot /mnt
を使って /mnt
を /
として扱います。
なぜにchrootを使うのかというと、参考資料にもあるとおり
$ sudo grub-install /dev/nvme0n1
Installing for i386-pc platform.
grub-install: error: failed to get canonical path of `/cow'.
これが出てしまうためです。
あとは、
# grub-install /dev/nvme0n1
# update-grub
で、 /boot/efi/EFI/ubuntu/shimx.efi
を再度インストールし、設定ファイルを再構成します。