Ubuntu16.04をVirtualBoxへインストールしたら起動しなかった時の対応方法

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」に見つけました… やり方が若干ちがいますが、どちらでも動作するということで。

次の書籍も参考になります。

同じタグの記事: EFI
同じタグの記事: Ubuntu
同じタグの記事: UEFI
同じタグの記事: UEFI Shell
同じタグの記事: VirtualBox
同じカテゴリの記事: Linux
関連書籍: VirtualBox