バーチャルボックスでEFIシェルから抜け出す方法

Mac OSX用の仮想マシンを実行しているのですが、常にEFIシェルで起動してしまいます。

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

VirtualBoxのセッションでOSをインストールした場合、ブートローダーを[EFI System Partition (ESP)]にインストールしている可能性があります(http://en.wikipedia.org/wiki/EFI_System_partition)。ほとんどのOSはこれらのブートローダーをファームウェアに登録し、ファームウェアがそれらを記憶して自動的に起動します。VirtualBoxの特徴として、これらのブートマネージャのエントリを忘れてしまうことがあります。その結果、VMはデフォルトでEFIシェルで起動することになります。この問題に対処するには、以下のようないくつかの方法があります

  • EFI シェルを使ってブートローダを手動で起動することができます。 1.1. fs0: と入力して、最初のファイルシステム(通常はESP)にアクセスします。 2.2. cd EFI\{osname} と入力します。ここで {osname} は OS がブートローダをインストールしたディレクトリの名前です。(ここで{osname}とは、お使いのOSがブートローダーをインストールしたディレクトリの名前です(インストールしたOSをおっしゃっていないので、それが何かはわかりません)。ls EFIと入力すると、そこに何があるかわかります) 3.ブートローダーの名前を入力してブートローダーを起動します。繰り返しますが、それが何であるかはわかりません。Linuxの場合、通常はgrubx64.efiです。Windowsの場合は、bootmgfw.efi`となります。
  • EFIシェルのスタートアップスクリプト(ESPのルートディレクトリにあるstartup.nsh)を使って、上記の手順を自動化します。
  • ブートローダのファイル名をフォールバックファイル名である EFI\BOOT\bootx64.efi に変更する。 1.1. fs0: と入力して、最初のファイルシステム(通常は ESP)にアクセスします。 2.2. mv EFI\{osname} EFI\BOOT と入力して,ブートローダがあるディレクトリの名前を変更します。上記のように、{osname}が何であるかを自分で判断しなければなりません。 3.3. 「mv EFI\BOOT{loadername.efi}」と入力します。3. mv EFIBOOT\{loadername.efi} と入力します。ここで、{loadername.efi} はブートローダの名前です。
  • シェルのツールを使ってブートローダをVirtualBoxのファームウェアに登録します。この方法についての簡潔な説明はウェブ上では見当たりませんし、ここに書いている時間もありません。避けなければならない落とし穴がたくさんあるので、正確な説明がないとイライラしてしまうかもしれません。

個人的によく使う解決策は、ブートローダーの名前をOSのデフォルトから「EFI\BOOT\bootx64.efi」に変更することです。これは最も簡単な方法であり、十分に機能します。この方法の欠点は、OSがブートローダをアップデートした場合、そのアップデートはおそらく元の場所に行われるので、アップデートされたブートローダを使いたい場合は、このプロセスを繰り返さなければならないことです。

解説 (1)