Ubuntu16.04とWindows7のデュアルブートを、rEFIndで管理しています。

起動優先順位の第1位に、rEFInd Boot Managerを指定しているにもかかわらず、実際には、それが反映されませんでした。Grub2が起動します。

そこで、rEFInd Boot Managerの起動優先順位を1位(Ubuntuより先に起動)にするのに、少しトリックを使ったので、忘れないうちにメモしました。

【前提条件】

  1. OSは、Ubutu16.04。
  2. UEFIモードで管理。
  3. 各OSのブートローダは正常に動作する。
  4. refind.confは適切に設定されている。

<手順>

  1. ブートオーダーの第一位にrEFInd Boot Managerが位置していることを確認する。
  2. Ubuntuを無効化する。
  3. 動作確認。

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に頼るしかないので。)