UEFIバイオスでWindowsではなくGRUBを起動させるには?

編集で追加されたTL;DR。

質問です。

同じUEFIブートパーティション上で、BIOSがWindows Boot ManagerよりもGRUBを優先するようにするにはどうしたらよいでしょうか?

GRUBはBIOSが起動したときに適切な動作をします。Windows UEFIブートストラップもGrub UEFIブートストラップも起動可能なので、「ディスクが起動できない」という問題ではありません。問題は、BIOSがどのUEFIブートストラップから起動するかを選択することです。

私は新しいコンピュータをセットアップしていますが、デフォルトではUbuntuで起動し、起動時にはWindowsを選択できるようにしたいと思っています。これは、停電して戻ってきたときに特に重要で、私は家の中にいないかもしれません。

私はまず、Ubuntu 17.04を内蔵のNVMeディスクにインストールしました。ディスクの半分を使うようにGPTでパーティションし、UEFIブートパーティションも別に用意しました。GRUBは問題なく起動し、起動時にはGRUBのブートメニューが表示され、GRUBが知っている項目を何でも選択できるようになっています。

その後、最近ダウンロードしたISOからWindows 10 Proをインストールしました。 同じUEFIパーティションにWindows Boot Managerがインストールされ、Ubuntuはそのままで(素晴らしい!)、Windows 10が正常に起動しました。

しかし、UEFIファームウェアが電源投入時にGRUBではなくWindows Boot Managerをすぐに選択してしまうという、"something"を行いました。現在、Linuxを起動する唯一の方法は、BIOSのブートマネージャー(私のBIOSではF11)を使い、手動でGRUBブートローダを選択することです。 UEFI BIOS は UEFI パーティションに複数のブート可能なインストールがあることを認識していて、ブートマネージャでそれらを選択できるからです。 しかし、UEFI BIOSのセットアップメニューでは、起動優先順位の選択で「UEFI boot my internal drive"」を選択するだけで、そのパーティションにある特定のブートローダを選択することはできません。また、デフォルトではGRUBではなくWindowsが選択されます。

インターネット(とこのサイト)によると、この問題を解決する古い方法は、update-grubを実行して(GRUBがWindowsを認識するようにして)から、grub-installを実行して(GRUBをデバイスに戻すようにして)ということです。 私はこれを実行しましたが、残念ながら、BIOSがデフォルトでWindows Boot Managerを選択するという、上記のような動作が残っています。(update-grub は Windows Boot Manager のインストールを見つけて、それをメニューに追加し、そのメニュー項目は UEFI ブートマネージャで GRUB パーティションを手動で選択したときに動作します)。

UEFIブートパーティションでGRUBを"default"ブートにするにはどうしたらいいですか?

MSI X399 Carbonマザーボードを使用しています。

2回目の編集:正解は回答に対するコメントで言及されてしまうため、ここで繰り返します'。

"BCDEDIT" in an admin shell on Windows is the working solution. The others don't work.

ここ数週間、まさにこの問題に悩まされていました。これらのオプションを使って解決しました。これらのオプションを実行する前に、BIOS/UEFIに入って起動順序をチェックし、grubがインストールされている場所が最初になっているかどうかを確認することをお勧めします。

私が思うに、あなたには2つの選択肢があります。

オプション1

私がお勧めするのは、まずWindows 10をインストールして、次にubuntuをインストールすることです。しかし、「ソフトウェアを再インストールしてください」と言うのはタブーだと思うので、別の方法も提案します。

オプション2

現在の設定では、Live UbuntuのCD/フラッシュドライブで起動し、boot-repairをインストールして実行することをお勧めします。推奨される修復オプションをクリックし、表示される指示に従ってください。実行する前にすべてのコマンドを読んで、慎重に確認してください。これで、現在インストールされているgrubが新しいものに上書きされ、うまくいけば直るはずです。

解説 (3)

私はいくつかの解決策を考えています。

1.UEFIを編集してデフォルトを調整する。Linuxでは、efibootmgrが使えます。Windowsでは、よくわからないのですが、UEFIを設定できるリカバリーオプションで起動できると思います。あるいは、rEFIndのようなものをインストールするのもいいかもしれません。 2.EFIパーティションのフォルダ名を変更する。EFIパーティション上のフォルダ名を変更してください、bootという名前のフォルダを好むか、または戻ると思います。 3.3. Windows ブートローダを使うだけで、他の OS を起動するように設定できると思います。

解説 (3)

解決策としては、/etc/default/grubファイルを手動で編集することが考えられます。

sudo vim /etc/default/grub を実行します。

デフォルトのエントリは、/etc/default/grub の GRUB_DEFAULT= の設定によって決まります。最初の "menu entry"には "0"の値が入ります。Ubuntuがブート画面の2番目のエントリである場合は、GRUB_DEFAULT=1を設定してください。

その後、grubの設定を更新するために、コマンドを実行する必要があります。 アップデイト・グラブ

また、grub-customizerをインストールして、そのGUIを使ってブートプライオリティを設定する方法もあります。

解説 (3)