web-dev-qa-db-ja.com

VirtualBoxはロードする.efiファイルを見つけることができません

最近、VirtualBoxにさらに別のLinuxシステムをインストールしました。しかし、EFIでは。 今回はManjaro Linuxでしたが、これは特に問題ではありません。

問題

VirtualBox EFIブートローダーは、OSのロードを続行するために.efiファイルを認識しません。

EFI Shell and so what?

私の回避策は、CD/DVDから起動し、Detect EFI bootloadersを選択することでした

しかし、そのような回避策を常に使用することは良い方法ではありません。

質問

このような不便な動作を修正する方法-VirtualBoxEFIに.efiファイルの場所を指示する方法-ブートローダー。

2
kyb

このシーケンスを試してください:

Shell> fs0:
edit startup.nsh
\EFI\Manjaro\grubx64.efi
ctrl-s <cr>
<enter>
ctrl-q <cr>
reset

\EFI\Manjaro\grubx64.efiは、具体的なシステムによって異なる場合があります。例えば。 \EFI\ubuntu\grubx64.efi

トラブルシューティング

edit: Access Deniedを受け取った場合-すべてのCDとDVDをアンマウントします。それが動作するはずより。
コマンドlsは、何がfs0としてマウントされているかを理解するのに役立ちます。また、他のfsX:を試すこともできます。

リンク集

EFIブート構成を永続的にすることはできません forums.virtualbox.org
buntu/LinuxOS用のEFIVboxホストを起動する方法 YouTube
君たちありがとう。

2
kyb

通常の構成では、EFIファームウェアはNVRAM内のEFIブートローダーを追跡します。 OSをインストールすると、そのブートローダーがファームウェアに登録されることになっています。その結果、ブートローダーを指すNVRAMエントリが作成され、ファームウェアはブートローダーを起動できます。これは通常は問題なく機能しますが、「実際の」ハードウェアでもNVRAMエントリが消去されたり破損したりする問題があります。残念ながら、VirtualBoxは、使用の合間に「NVRAM」データを保存するという不十分な仕事をします。起動するたびに、新しいデフォルトのデータセットから開始する傾向があります。これは、ほとんどすべてを起動する機能で大混乱をもたらします。

IMHO、最も簡単な回避策は、仮想化ディスクの EFIシステムパーティション(ESP)EFI/BOOT/bootx64.efi(大文字と小文字を区別しない)のフォールバックファイル名を使用してブートローダーを保存することです。 EFIが他に何も起動できない場合、EFIはこのブートローダーを起動しようとします。大まかに言えば、Linuxディストリビューションをインストールする場合、これを行うには2つの方法があります。

  • 通常のブートローダーのコピーをそこに保存できます。 Manjaroがデフォルトで何を使用するか、どこに格納するかはわかりませんが、EFI/manjaro/grubx64.efiを使用しているとすると、EFI/manjaroEFI/BOOTにコピーまたは名前変更してから、そのディレクトリのgrubx64.efibootx64.efiに名前変更します。必要に応じて、Manjaroのデフォルトのブートローダー以外のものを使用できます。利用可能なものについては、 主題に関する私のページ を参照してください。
  • fallback.efiまたはfbx64.efi(同じプログラム、異なる名前)を使用できます。このEFIプログラムはおそらくESPのどこかにすでにインストールされているか、少なくともディストリビューションのパッケージ(おそらくGRUBまたはShim)で利用可能です。このファイルをEFI/BOOT/bootx64.efiにコピーしてから、実際のブートローダーが存在するディレクトリにBOOT.CSVファイルを作成します。このファイルは、実際のブートローダーの名前に関するデータと、grubx64.efi,Manjaro,,This is the boot entry for Manjaroなどの関連データを保持します。重要なことに、このファイルは、プレーンASCIIではなく、UCS-2またはUTF-16である必要があります。 fallback.efi/fbx64.efiが(bootx64.efiとして)起動すると、ESPのEFIのサブディレクトリで.CSVファイルを検索します。見つかった場合は、それらを使用して新しいNVRAMエントリを生成します。これは、失われたNVRAMエントリの回復に役立つことを目的としているため、VirtualBoxの「NVRAM amnesia」問題を回避する1つの方法です。

最初のアプローチはセットアップが簡単である可能性がありますが、GRUB構成は扱いにくい場合があることに注意してください。 ESPでgrub.cfgを探す場合は、GRUBが期待する場所に残っていることを確認する必要があるため、移動する必要がある場合とない場合があります。また、パッケージシステムが更新されたGRUBを提供する場合、新しいパッケージの利点を得るには、それを再度コピーする必要があります。 2番目のアプローチは説明が難しく、セットアップが少し面倒ですが、ブートローダーの更新をインストールしやすくするため、私はそれを好み始めています。

Kybが示唆しているように、EFIシェル起動スクリプトを使用するなど、問題を回避する他のアプローチもあります(ただし、これにより、上記のソリューションよりも起動時間が長くなります)。また、以前は、VirtualBoxファームウェアインターフェイス自体を使用して新しいNVRAMエントリを作成することが可能でしたが、これは永続的でした。しかし、これはある時点で機能しなくなったようです。少なくとも、最後に試したときは機能しませんでした。

2
Rod Smith