VirtualBoxへUbuntu16.04をインストールするときは、VirtualBoxのゲストマシンの設定でシステムEFIを有効化してからインストールしてます。そうすると、Ubuntu16.04をインストールした直後にはUEFI Shellが起動して、直接Ubuntuが起動しなくなります。UEFI Shellから起動できますが、自動で起動させたいので設定をします。14.10の頃から遭遇してたので、以前、説明を書いたような気がするのですが、見つからないので、備忘録として記事にしておきます。
最初だけは、UEFI Shellから起動します。
> fs0: > cd EFI > cd ubuntu > grubx64
で起動します。「fs0」はデバイス指定。GRUBは「fs0:\EFI\ubuntu\grubx64.efi」から起動できるので、上記のコマンドを実行ということになります。このファイルはUbuntu では /boot/efi/EFI/ubuntu/grubx64.efiになります。
注意点としてシェルを使う時は、キーボードレイアウトは101ベースとなるようなので、109ベースの日本語キーボードを使っているなら「:」はShift+「;」、「\」は「]」で入力すること。
Ubuntuを起動したら、すぐに、デフォルトの「fs0:\EFI\boot\bootx64.efi」を用意しよう。/boot/efi/EFI/ubuntu/grubx64.efiを/boot/efi/EFI/boot/bootx64.efiへコピーするだけ。
$ sudo mkdir /boot/efi/EFI/boot $ sudo cp /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/boot/bootx64.efi
「/boot/efi/EFI/boot/startup.nsh」というスクリプトファイルを用意しておく方法もあるそうですが、そちらは未確認です。次の例では「fs0:\EFI\ubuntu\grubx64」だけの1行スクリプトをcat、ヒアドキュメント、リダイレクトを使って記述しています。普通にviなどで編集して用意してもいいです。
$ sudo mkdir /boot/efi/EFI/boot $ sudo sh -c 'cat << EOF > /etc/a.txt > fs0:\EFI\ubuntu\grubx64 > EOF' $ cat /boot/efi/EFI/boot/startup.nsh fs0:\EFI\ubuntu\grubx64
と、ここまで記述して「Ubuntu15.10をVirtualBoxの仮想マシンへインストールしたときにBootできないときは | hiro345」に見つけました… やり方が若干ちがいますが、どちらでも動作するということで。
次の書籍も参考になります。