TL; DR、編集に追加されました:
質問は:
同じUEFIブートパーティション上のWindowsブートマネージャよりもBIOSにGRUBを優先させるにはどうすればよいですか?
問題はGrubにはありません。 BIOSが起動するとGrubは正しいことをします。 Windows UEFIブートストラップとGrub UEFIブートストラップの両方が起動可能であるため、問題は「ディスクが起動可能ではない」ということではありません。問題は、BIOSがどのUEFIブートストラップから起動するかを選択することです。
私は新しいコンピュータをセットアップして、それをデフォルトでUbuntuから起動させたいのですが、起動時にWindowsを選択するオプションがあります。これは、電源が切れて戻ってきた場合に特に重要です。私は家にいることすらありません。
私は、Ubuntu 17.04を内部のNVMeディスクにインストールすることから始めました。このディスクは、GPTでディスクの半分を使うようにパーティション分割し、別のUEFIブートパーティションを使います。 GRUBがうまく起動するので、起動時にGRUBブートメニューが表示されます。ここではGRUBが知っている項目を選択できます。
それから私は最近ダウンロードしたISOからWindows 10 Proをインストールしました。それは同じUEFIパーティションにWindowsブートマネージャをインストールし、Ubuntuをそのままにしておいた(素晴らしい!)そしてそれはWindows 10でうまく起動する。
しかし、UEFIファームウェアが電源投入時にGRUBではなくWindowsブートマネージャをすぐに選択するようにする「何か」をしました。今すぐLinuxを起動する唯一の方法は、BIOSブートマネージャ(私のBIOSではF11)を使用してGRUBブートローダを手動で選択することです。 UEFI BIOSは、UEFIパーティションに複数の起動可能なインストールがあることを認識しています。ブートマネージャでそれらを選択できるからです。ただし、UEFI BIOSのセットアップメニューに入っているときは、起動優先順位の選択で「UEFI起動用内蔵ドライブ」を選択することしかできません - 使用するパーティション上の特定のブートローダーを選択することはできません。 。そして、デフォルトでは、GRUBではなくWindowsを選択します。
インターネット(そしてこのサイト)はこれを修正する古い方法はupdate-grub
を実行すること(つまりGRUBはWindowsを認識します)そしてそれからgrub-install
(GRUBをデバイスに戻すことです)私はこれをしました、しかし残念なことに、それはまだBIOSがデフォルトでWindowsブートマネージャを選ぶところで、上で説明されたようなふるまいを持っています。 (update-grub
はWindowsブートマネージャのインストールを見つけてそれをメニューに追加します、そしてそのメニュー項目はUEFIブートマネージャでGRUBパーティションを手動で選択したときに機能します。)
UEFIブートパーティションでGRUBを "デフォルト"ブートにするにはどうすればいいですか?
MSI X399 Carbonマザーボードを使用。
2番目の編集:正しい答えは返答へのコメントの中で言及されることになるので、ここでそれを繰り返すつもりです:
"BCDEDIT" in an admin Shell on Windows is the working solution. The others don't work.
これを行うには、いくつかの方法があります。
ubuntu
と呼ばれます。)bcfg
コマンドを使用できます。 もしあなたのシステムがまだアクセスしやすいシェルで設定されていなければ、このアプローチは他のものより使いにくいと思われますが、それはOSにとらわれません。ubuntu
エントリーをクリックしてそれを一番上に移動することができます。bcdedit
- Windowsのbcdedit
コマンドはNVRAMベースの起動順序を変更できます。具体的には、Administratorコマンドプロンプトウィンドウを開いてbcdedit /set "{bootmgr}" path \EFI\ubuntu\shimx64.efi
(説明をわかりやすくするためにオプションでbcdedit /set "{bootmgr}" description "ubuntu"
を入力)を入力するとうまくいきます。efibootmgr
- このLinuxツールは起動順序を調整できます。オプションを表示するには、Sudo efibootmgr
を単独で入力することから始めます。 ubuntu
エントリーに関連付けられている番号(Boot####
)、および現在のブート順序(BootOrder
行)をメモします。その後、-o
オプションを使用して、先頭にubuntu
エントリを追加して新しい起動順序を入力できます。たとえば、現在の起動順序が0000,0003,0007,0004でubuntu
が0007の場合、起動順序を調整するにはSudo efibootmgr -o 0007,0000,0003,0004
と入力します。refind-mkdefault
- このスクリプトにはrEFIndが付属しています。これは、前述の手順を自動化するための方法です。 rEFIndを使用していない場合は、スクリプト here をダウンロードして実行可能にする必要があります(chmod a+x refind-mkdefault
)。その後、GRUBをデフォルトのブートエントリにするために、Sudo ./refind-mkdefault -L ubuntu
またはSudo ./refind-mkdefault -L shimx64
として実行します。これらのオプションのいずれにも潜在的な問題と複雑さがあります。最も厄介な要因は、古いまたは代替のubuntu
ブートエントリがあるかどうかです。起動順序の一番上に正しいものを移動することが重要です。間違ったものを移動すると、動作に変化がなくなったり、機能しない起動が発生したりするため、起動が困難になります。 efibootmgr
を使用する場合、BootCurrent
行はどのオプションをデフォルトとして設定すべきかを判断するのに役立ちます。
やり過ぎるやり方は他にもあります。たとえば、GRUBを( Boot Repair またはgrub-install
経由で)再インストールするとうまくいくはずです。ただし、これらの方法では、動作確認済みのGRUB設定が破損する危険性があります。
EFIの中にはバグがあるものもあり、GRUBを確実に起動させるのを困難にする可能性があるその他の問題もあります。あなたがそのような問題に出くわすなら、あなたはAskUbuntuでこれらの質問と答えをチェックすることを望むかもしれません:
私はこの数週間この問題を抱えています。私はこれらのオプションを使ってそれを考え出しました。これらのことをする前に、私はあなたのBIOS/UEFIに入って起動順序をチェックし、grubがインストールされている場所が最初に正しいことを確認することをお勧めします。
だから私はそれがどのように見えるかあなたは2つの選択肢があるということです。
私があなたにお勧めするのは、まずWindows 10をインストールすることですそれからubuntuをインストールします。しかし、「ソフトウェアを再インストールする」と言うのはちょっとしたタブーであることを私は知っているので、私も選択肢を提供します。
現在の設定では、Live UbuntuのCD /フラッシュドライブを起動し、boot-repair
をインストールして実行することをお勧めします。 「推奨修復」オプションをクリックして、表示される指示に従います。それを注意深く調べ、実行する前にすべてのコマンドを読んでください。これは現在のgrubのインストールを新しいもので上書きして、うまくいけばそれを修正するでしょう。
いくつか解決策があります。
efibootmgr
を使うことができます。 Windowsではよくわかりませんが、UEFIを設定できる回復オプションで起動できると思います。あるいは、rEFIndのようなものをインストールするのを好むかもしれません。boot
と呼ばれるフォルダーを好むか、それにフォールバックすると思います。私のラップトップでマザーボードを交換したところ、grubが完全に消えた。
これは修正済みとしてマークされていることを私は知っていますが、私はそれがあなたにとって役に立つかもしれないと思いました。
Grubを起動オプションとして表示させる。私はBIOSにEFIを追加する必要がありました。
私は私の経歴の中の「ブートリストオプション」に行きました。 [ブートオプションの追加]をクリックしました(これはBIOS固有のものです)。これは私にファイル名のオプションを与えました、私の場合は\EFI\ubuntu\grubx64.efi
で、それにgrub
という名前を付けました
それからgrub
エントリを起動シーケンスの先頭に移動すると、これがデフォルトエントリとして表示されます。
すなわち私が言っているのは、正しいEFIファイルを見つけてそれを起動順序/順序の先頭に移動する必要があるかもしれないということです。