web-dev-qa-db-ja.com

仮想ボックスでEFI Shellを終了する方法

私はMac OSX用の仮想マシンを実行しており、常にEFI Shellで起動します。これが何であるか、そして可能であればどのように終了するかについての簡単な説明が欲しいのです。

11
Dan

EFIシェルは、Linux/Unix/OS XのbashやWindowsのコマンドプロンプトウィンドウと概念が似ているコマンドラインツールです。ファイルを表示、削除、編集、名前変更したり、EFIブートマネージャエントリを更新したりすることができます。 exitと入力してシェルを終了できます。しかしながら、VirtualBoxの場合、これはおそらくあなたをEFIメニューに連れて行くでしょう。

VirtualBoxセッションにOSをインストールしたことがある場合、それは EFIシステムパーティション(ESP)にブートローダをインストールしている可能性があります。 ほとんどのOSはこれらを登録しますファームウェアを使ってブートローダを起動すると、それらを記憶して自動的に起動します。 VirtualBoxの奇妙な点の1つは、通常これらのブートマネージャエントリを忘れてしまうことです。その結果、VMがデフォルトでEFIシェルを起動します。この問題に対処する方法はいくつかあります。

  • EFIシェルを使用してブートローダを手動で起動できます。
    1. 最初のファイルシステム(通常はESP)にアクセスするには、fs0:と入力します。
    2. cd EFI\{osname}と入力します。ここで{osname}は、OSがブートローダーをインストールしたディレクトリの名前です。 (あなたがどのOSをインストールしたかについては言っていないので、それが何であるのか私にはわかりません。ls EFIをタイプするとそこにあるものが表示されます)
    3. 名前を入力してブートローダを起動します。繰り返しますが、それが何であるかわかりません。 Linuxの場合、通常はgrubx64.efiです。 Windowsの場合はbootmgfw.efiです。
  • EFIシェル起動スクリプト(ESPのルートディレクトリにあるstartup.nsh)を使用して上記の手順を自動化します。
  • ブートローダの名前をフォールバックファイル名のEFI\BOOT\bootx64.efiに変更します。
    1. 最初のファイルシステム(通常はESP)にアクセスするには、fs0:と入力します。
    2. ブートローダが存在するディレクトリの名前を変更するには、mv EFI\{osname} EFI\BOOTと入力します。上記のように、あなたは{osname}があなた自身であるものを決定しなければなりません。
    3. mv EFI\BOOT\{loadername.efi} EFI\BOOT\bootx64.efiと入力します。ここで、{loadername.efi}はブートローダーの名前です。たとえば、ほとんどのLinuxインストールではgrubx64.efiです。
  • シェルのツールを使用して、ブートローダーをVirtualBoxファームウェアに登録します。私はこれをウェブ上でどうやって行うのかについての簡潔な説明が分からないので、ここでそれを書く時間がありません。あなたが避けなければならない明白でない落とし穴がたくさんあるのでそれは正確な指示なしではイライラすることでしょう。

個人的には、私が最もよく使う解決策はブートローダの名前をOSのデフォルトからEFI\BOOT\bootx64.efiに変更することです。これは実装が最も簡単で、十分に機能します。このアプローチの1つの欠点は、OSがブートローダを更新した場合、その更新はおそらく元の場所に移動するため、更新されたブートローダを使用する場合はプロセスを繰り返す必要があることです。

14
Rod Smith