マルチブート Windows 10 の起動順序を変更する - Ubuntu 15.10 - Fedora 23

マルチブート Windows 10 の起動順序を変更する - Ubuntu 15.10 - Fedora 23

Windows 10、Ubuntu 15.10、Fedora 23 を搭載したマルチブート コンピューターで、希望どおりのブート順序を設定する際に問題が発生しています。

私がやったことは次のとおりです: 以前は、Windows 10 と Ubuntu 15.10 のデュアルブートのみを使用していましたが、期待どおりに動作していました:

  • 設定して、たとえばテーマを設定することもできます。
  • USBLiveで簡単に起動できました。

他の Linux ディストリビューションを試してみたかったので、Fedora 23 をインストールしました。

起動時にFedoraが電源を奪ってしまうことが起こりました。Ubuntuで起動するには、まずFedoraの起動設定を変更し、linuxとinitrdをlinuxefiとinitrdefiに置き換える必要がありました。ここ

そうすると、コンピューターにインストールされているすべての OS にアクセスできるようになります。ただし、起動権限は Ubuntu に戻したいです。

そこで、まずUbuntuから起動したブート修復を試してみましたが、効率的ではありませんでした。

次に、efibootmgr の使用を試みました。

$ sudo efibootmgr 
Mot de passe [sudo] pour xavier : 
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0004,0006,0000,0007,0001,0002,0003
Boot0000* Windows Boot Manager
Boot0001* ubuntu
Boot0002  UEFI: IP4 Qualcomm Atheros PCIe Network Controller
Boot0003  UEFI: IP6 Qualcomm Atheros PCIe Network Controller
Boot0004* Fedora
Boot0006* grub
Boot0007* ubuntu

次に、Ubuntu と Fedora の両方で順序を変更してみました。

$ sudo efibootmgr --bootorder 0006,0004,0000,0001,0007,0002,0003
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0006,0004,0000,0001,0007,0002,0003
Boot0000* Windows Boot Manager
Boot0001* ubuntu
Boot0002  UEFI: IP4 Qualcomm Atheros PCIe Network Controller
Boot0003  UEFI: IP6 Qualcomm Atheros PCIe Network Controller
Boot0004* Fedora
Boot0006* grub
Boot0007* ubuntu

しかし、再起動すると、efibootmgr で行った変更は適用されず、efibootmgr に再度ブート順序を要求すると、Fedora のブート順序が返されます...

この問題は、次のような、私がよく理解していないさまざまなパラメータから発生しているのではないかと思います。

  • efiブート、grub、grub2の違いは何ですか
  • セキュアブートの影響は何ですか?
  • レガシーブートとは何ですか?

クリーンなセットアップを実現するために協力していただける方はどなたでも歓迎いたします。

編集: Rod Smith の回答により、-v 引数を使用してさらに情報を取得できることに気付きました。

$ sudo efibootmgr -v
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0004,0006,0000,0007,0001,0002,0003
Boot0000* Windows Boot Manager  HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...3................
Boot0001* ubuntu    HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\UBUNTU\SHIMX64.EFI)
Boot0002  UEFI: IP4 Qualcomm Atheros PCIe Network Controller    PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(448a5b4783b6,0)/IPv4(0.0.0.0:0<->0.0.0.0:0,0,0)..BO
Boot0003  UEFI: IP6 Qualcomm Atheros PCIe Network Controller    PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(448a5b4783b6,0)/IPv6([::]:<->[::]:,0,0)..BO
Boot0004* Fedora    HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\FEDORA\SHIM.EFI)
Boot0006* grub  HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\GRUB\SHIMX64.EFI)
Boot0007* ubuntu    HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\UBUNTU\GRUBX64.EFI)

このおかげで役職Rod Smith さんから、両方の Ubuntu エントリの役割を理解しました。ただし、grub のエントリは、ファイルが存在しないため、不要であるようです。

$ ls -a
.  ..  Boot  fedora  Microsoft  MSI  ubuntu

消したほうがいいでしょうか?

次に別の順序を試しました:

$ sudo efibootmgr --bootorder 0001,0004,0000,0006,0007,0002,0003

しかし残念なことに、変更は機能しません。

では、Rod Smith の回答をよく理解していれば、唯一の解決策は fedora エントリを消去することですか? いつか fedora だけを保持したい場合、それはおそらくいくつかの問題を引き起こすでしょうが、そのときまでは USBLive で起動できるでしょうか?

改めて感謝します!

答え1

まず、投稿の最後にある質問に答えます。

  • EFIモードのブートではファームウェアのネイティブブートモードが使用されますが、BIOS/CSM/レガシーモードのブートでは互換性サポートモジュールが使用されます。これにより、古いBIOSモードのブートローダーのブートが可能になります。この質問と私の回答は superuser.com に掲載されていますこの件についての詳細はこちらをご覧ください。
  • GRUBはLinux 用のいくつかの EFI モード ブート ローダー。(BIOS やその他のファームウェア タイプ用の GRUB バージョンもあります。) GRUB Legacy (別名 GRUB 1) は EFI では公式にサポートされていませんでしたが、Fedora にはパッチを大量に適用したバージョンがありましたが、現在は廃止されています。したがって、EFI コンテキストでの GRUB に関するほとんどの言及は GRUB 2 を指します。
  • セキュアブートは、信頼できる機関によって暗号的に署名されていないバイナリをEFIが起動するのをブロックすることで、システムのセキュリティを向上させることを目的としたオプションのEFI機能です。原則として、この機関はあなたでも、他の誰かでもかまいません。実際には、Microsoftがセキュアブートの唯一の一般的なキーを保有しており、そのためプロセスを制御しています。幸いなことに、Microsoftはサードパーティのバイナリに署名しており、Ubuntuはこれを利用してMicrosoftに次のバイナリに署名してもらいました。シムこれには、Ubuntu の GRUB と Linux カーネルの署名に使用される Canonical のキーが含まれています。2 つの Linux ディストリビューションをデュアルブートする場合、どちらのディストリビューションの Shim にももう一方のディストリビューションのキーは含まれません。したがって、もう一方のディストリビューションのキーを Machine Owner Key (MOK) リストに登録する必要があります。これは、MokManager.efiEFI のユーティリティを使用して行うことができます。このユーティリティは Linux でも実行できると思いますsb-updatevarが、あまり経験がありません。ここ複数のキーを1か所にまとめるには、.cerまたは.derキーが必要です。セキュアブートに関する私のページこの件についての詳細はこちらをご覧ください。

あなたの主な問題であるefibootmgr -o(またはefibootmgr --bootorder)コマンドすべきBoot0001は、指定したブート プログラムに制御を渡します。ただし、おそらく ではなくまたはに制御を渡そうとしていることに注意してください。Ubuntu は、独自のブート エントリを記述するために、ではなく というBoot0007名前Boot0006を使用します。 と入力すると、これらをより適切に識別できます。これにより、ブート エントリへの完全なパスが生成されます (EFI パス識別子を使用して識別されます。EFI パス識別子は長くて複雑で、とりわけパーティションの GUID 番号を参照します。パーティションの GUID 番号は、または の一部のバージョンで取得できます)。したがって、他の操作を行う前に、ブート順序を ではなく、正しい値に変更してみることをお勧めします。ubuntugrubsudo efibootmgr -vgdiskblkidBoot0004

実際には、efibootmgrEFI にバグがあったり、マシンの NVRAM (efibootmgr表示および調整するデータが保存される場所) 内のデータが破損していたり​​するため、変更が機能しないことがあります。このような問題には、次の 3 つの解決策が一般的に採用されています。

  • 不要なエントリを消去するsudo efibootmgr -b 0004 -B-- 不要なエントリや重複したエントリを削除すると、Boot0004問題が解決することがあります (ただし、このエントリを実際に削除する必要がない場合もあります)。システムを再び動作させるには、複数のブート エントリを削除する必要がある場合もあります。しないでくださいただし、起動に必要なエントリは削除してください。また、ほとんどのコンピュータには、出力の 2 つのエントリのように、ファームウェア自体が作成するエントリがありますNetwork Controller。これらのエントリを削除することは、一般的にはお勧めできません。
  • ファームウェアをデフォルトにリセットする-- ほとんどの EFI は、ファームウェア セットアップ ユーティリティですべての設定をデフォルトにリセットするオプションを提供しています。(一部の人はこれを「BIOS セットアップ画面」などと呼んでいますが、EFI は技術的には BIOS ではありません。ただし、多くの人やメーカーは、EFI を BIOS と呼ぶことがよくあります。) このアプローチの欠点は、全てEFI エントリが削除され、緊急ディスクを使用して少なくとも 1 つの有効なエントリを復元するまで、システムは起動できなくなります。
  • ブートローダーを別のエントリにピギーバックする-- この方法では、必要なブート ローダーをコピーまたは移動/名前変更して、EFI が起動を要求しているファイル名を使用します。これは通常、EFI が Windows ブート ローダー以外の起動を拒否する場合に使用されるため、この場合は必要ありません。

しかし、もう少し踏み込んで考えてみると、どの GRUB を使用するか (Fedora または Ubuntu) は実際には問題ではないと言えます。これらは基本的に同じソフトウェアです。Fedora の GRUB を希望どおりに構成できない場合は、いつでも設定を微調整できますが、一方で、GRUB 2 の構成は、非常に基本的なものを超えると非常に難しいことで有名です。このため、複数の Linux ディストリビューションをデュアルブートする多くの人は、ディストリビューションに依存しないブートローダー (独自の GRUB または他のもの) を好みます。私自身のrEFInd ブートマネージャーこのような構成には、カーネルの更新を検出するために構成ファイルに依存しないことや、特定の OS の構成スクリプトから独立していることなど、いくつかの利点があります。とはいえ、efibootmgrある GRUB から別の GRUB に切り替えるのに問題がある場合は、rEFInd (またはその他のブートローダー) を起動するのにも問題がある可能性があります。また、セキュアブートを使用している場合は、rEFInd を動作させるために、少なくとも 1 つのセキュアブートキーを MOK に登録する必要があります。ちなみに、Ubuntu の GRUB に切り替える理由が Fedora の GRUB が Ubuntu のカーネルを起動しないことである場合、問題はおそらくセキュアブートにあります。Canonical/Ubuntu のセキュアブートキーを追加すれば、その問題は克服できるはずです。


編集:

Boot0001は、必要な機能を果たす可能性が最も高いエントリなので、ブート リストの先頭に配置する必要がありますが、うまく機能していないようです。

Fedora にブート プロセスを任せても大丈夫なら、そうするのが最善でしょう。そうしないと、新しい問題が連鎖的に発生してしまいます。Fedora エントリを完全に削除するのは確かに危険です。他のものが機能しなくなると、何もブートできなくなる可能性があるからです。

試してみるといいかもしれないセキュアブートを無効にする特に複雑な設定では、この機能によって問題が発生する可能性があるため、現在有効になっていると想定します。

答え2

ついに、Rod Smith 氏の助けのおかげで、希望するブート順序を選択するための解決策を見つけました。

セキュア ブートを無効にするように言われたので、BIOS 設定にアクセスしたところ、予想どおりセキュア ブートはすでに無効になっていましたが、BIOS/UEFI 設定で efibootmgr を使用せずにブート順序を変更する機会を得ました。

次に、最初に USB デバイスで起動することを選択し、次にハードディスクで Ubuntu を最初に起動する順序を設定すると、正常に動作します。

したがって、efibootmgr が何らかの理由で順序を変更できない場合は、BIOS/UEFI 設定に直接アクセスするのが最善の選択肢であり、それほど難しいことではないと私は考えています。

これが他の人の役に立つことを願っています。

ご協力ありがとうございました。

ザビエル

関連情報