Ubuntu16.04とWindows7のデュアルブートを、rEFIndで管理しています。
起動優先順位の第1位に、rEFInd Boot Managerを指定しているにもかかわらず、実際には、それが反映されませんでした。Grub2が起動します。
そこで、rEFInd Boot Managerの起動優先順位を1位(Ubuntuより先に起動)にするのに、少しトリックを使ったので、忘れないうちにメモしました。
【前提条件】
- OSは、Ubutu16.04。
- UEFIモードで管理。
- 各OSのブートローダは正常に動作する。
- refind.confは適切に設定されている。
<手順>
- ブートオーダーの第一位にrEFInd Boot Managerが位置していることを確認する。
- Ubuntuを無効化する。
- 動作確認。
1.ブートオーダーの第一位にrEFInd Boot Managerが位置していることを確認する。
efibootmgrコマンドで現在のエントリーを簡易表示します。(詳細モードでの表示には、sudo efibootmgr -vを利用します。)端末で実行します。
sudo efibootmgr
Timeout: 15 seconds
BootOrder: 0007,0000,0001,0002,0003,0004,0005
Boot0000* CD/DVD Drive
Boot0001* Removable Drive
Boot0002* Hard Drive
Boot0003* Network Card
Boot0004* INTERNAL EFI SHELL: HDT722520DLA380
Boot0005* ubuntu
Boot0006* Removable Drive
Boot0007* rEFInd Boot Manager
Boot000B* Network Card
Boot000C* Hard Driveaaaaa
上記のように、0007(rEFInd Boot Manager)がBootOderの左端(先頭)に位置していれば、手順2へ進みます。そうでない場合は、オプションを付けて、efibootmgrを実行し、0007を先頭に移動させます。コマンドは、次のとおりです。各エントリー番号は、みなさんの環境に合わせてください。
sudo efibootmgr -o 0007,0000,0001,0002,0003,0004,0005
これで、エントリーが変更されました。(しかし、実際には、uefiモードのブートメニューでは、反映されていませんでした。図1)
2.Ubuntuを無効化する。
ubuntuのエントリー番号を無効化します。
sudo efibootmgr --inactive --bootnum 0005
Timeout: 15 seconds
BootOrder: 0007,0000,0001,0002,0003,0004,0005
Boot0000* CD/DVD Drive
Boot0001* Removable Drive
Boot0002* Hard Drive
Boot0003* Network Card
Boot0004* INTERNAL EFI SHELL: HDT722520DLA380
Boot0005 ubuntu <<--無効化。「*」が外れた。
Boot0006* Removable Drive
Boot0007* rEFInd Boot Manager
Boot000B* Network Card
Boot000C* Hard Drive
再起動します。
3.動作確認。
F10(コンピュータ(マザーボード)の仕様でF12など異なるものもある)で、ブートメニュウを表示させて、確認する。
ubuntuのエントリーを無効化しても、uefiモードのブートメニューには表示され、さらにubuntuを選択するとGrub2が起動しました。単純に、順位が降格されただけのようです。(ubuntuのエントリーの削除はしないほうが安全だと思います。もし、refindのブートに失敗した場合は、ubuntuの起動をgrubに頼るしかないので。)
Ubuntuの場合は、boot-repairを利用したほうが、スッキリ解決できます。
そのために、リポジトリを追加して、boot-repairをインストールします。
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair
boot-repairを起動して、デフォルトの設定のまま実行するするだけです。