トリプルブート環境(Windows 10 + Ubuntu 18.04 + Ubuntu 20.04)から20.04を削除してデュアルブートに戻す。

内蔵HDDをいつくかのバーティションに分けて、Windows 10 + Ubuntu 18.04 + Ubuntu 20.04 のトリプルブート環境を構築したのです。

今まではWin10とUbuntu 18.04のデュアルブートでメインの使用はUbuntu。

何故こんなことをしたかというと、Ubuntuを20.04にアップグレードする前に、うちのPC上で 20.04がちゃんと動作するかどうか確かめたかったから、18.04とは別の場所にお試しインストールしてみたのです。実際にインストールしてみないと分からないこともありますからね。

動作検証の結果、20.04は無難に動作はするものの、差し当たって急いでアップグレードする程でもない、という感じ。

で、試用も済んだので、要らない20.04を削除しよう(20.04をインストールしたパーティションを初期化してしまおう)…と思ったのだけど、システムのブート時に、後からインストールした20.04のgrub設定を読み込むようになってしまっているのだな。

このまま20.04を即刻削除してしまうと、何か良からぬことが起きるであろうと想像されます。18.04のほうの grub設定を読むように変更しておかなくては。作業の方針は…

  1. パーティションの状況を確認。
  2. ブートの設定を確認。
  3. ブート設定を書き換え。
  4. 起動することを確認。
  5. 要らない20.04を削除。

間違った操作をすると、システムが起動しなくなるなどの致命的な不具合が生じる可能性があります。

理屈を十分理解した上で、自己責任でお願いします。

まず、パーティション操作ツールのGPartedを起動して、HDDのパーティションを確認してみる。関係部分だけ書き出すと以下のような感じ。

  • /dev/sda1 : EFI system partition : ブートローダーをインストールした場所
  • /dev/sda3 : Windows 10
  • /dev/sda5 : Ubuntu 18.04
  • /dev/sda6 : Ubuntu 20.04
gparted_20200610.png

この他に、赤丸のところに /dev/sda1 は /boot/efi にマウントされている という情報も表示されています。/boot/efi 以下を覗いてみると、/boot/efi/EFI/ubuntu/grub.cfg というファイルが見つかるので、中身を見てみましょ。

ルート権限が必要なので、

$ sudo su

と、管理者権限をゲットしておいて、

$ less /boot/efi/EFI/ubuntu/grub.cfg

を実行。出力は…

search.fs_uuid xxxx-xxx-xxxxxxx root hd0,gpt6
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

となりました。xxxx-xxx-xxxxxxx は Ubuntu 20.04 をインストールしたパーティション(/dev/sda6)の UUID。

つまり、

20.04のパーティション(gpt6)の /boot/grub/grub.cfg を探して参照しなさいよ

という設定になっていることがわかります。これを18.04の当該ファイルを参照するように書き換えてやれば良いのではないかな。

というわけで、18.04 のパーティション(/dev/sda5)のUUIDを調べます。

$ ls -al /dev/disk/by-uuid/ | grep sda5

結果の出力は、

lrwxrwxrwx 1 root root 10 6月 9 23:43 zzz-zzz-zzz -> ../../sda5

zzz-zzz-zzzがsda5のUUIDであることがわかります。この情報を元にブートローダーのgrub.cfgを書き換え。

$ nano /boot/efi/EFI/ubuntu/grub.cfg
search.fs_uuid zzz-zzz-zzz root hd0,gpt5
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

ファイルを保存したらシステムを再起動してみます。どきどき。

問題がなければ、システムは無事に起動して、18.04上で設定したgrubメニューが表示される筈。

あとは不要になった20.04のパーティションを初期化したり削除したり、ご自由に。

もしGPartedがインストールされていなければ、

$ sudo apt install gparted

カテゴリ: