VirtualBoxはUEFI Interactiveシェルでのみ起動します


49

UEFIでVirtualBoxにUbuntu 14.10をインストールしました。しかし、このOSを再起動し、UEFI Interactive Shell v2.0で起動します。Grubを通常どおり再起動するにはどうすればよいですか?


VirtualBox 5.1を使用すると、回避策はもう必要ありません。新しいEFIエントリを追加するだけで(手動で使用するefibootmgrか、grubを再インストールすることで自動的に)、Ubuntuがすぐに起動します。
phk

2
5.1でも、efibootmgrシャットダウン後に必要なブート設定などのefi変数への変更は失われます(ただし、リブートは維持されます)。
chappjc 16

1
5.1.30まだ存在しています。修正は簡単ですが、debianとubuntuをインストールした後は毎回修正する必要があります。
CallMeLaNN

回答:


52

同じ問題が発生し、インタラクティブシェルで次のコマンドを発行すると、仮想マシンがUbuntuで起動することがわかりました。

fs0:\efi\ubuntu\grubx64.efi

(バックスラッシュを使用すると、スラッシュは機能しません。UEFIインタラクティブシェルのコマンドは大文字と小文字を区別しません。)

私のVirtualBoxバージョンは4.3.20 r96997、Ubuntuバージョンは14.10 AMD64です。これがなぜ起こるのか、どうやって解決するのかはわかりません。これはエレガントではなく、まだ少し面倒な回避策であることがわかりました。

更新1:

これを読んで、バグレポートまで追跡して、より良い回避策を見つけまし

アップデート2:

Update 1の回避策は失敗しました。仮想マシンをオフにして起動しました。そして、再びUEFI Interactiveシェルを起動しました。よると、この問題はおそらく、VirtualBoxのバグによって原因でした。私はまだこれに対するさらなる解決策を探しています。

アップデート3:

最終的に解決策を見つけました。よると、この、手動でstartup.nshとスクリプトを作成する必要があります。上記の投稿のメソッドを除いて、これを行うこともできます:

$ sudo mount /dev/sda1 /mnt
$ cd /mnt
$ sudo sh -c "echo '\EFI\ubuntu\grubx64.efi' > startup.nsh"

3
「現在、実行中のゲスト内からEFI変数を操作することはできません。」 ESPで使用するブートローダーを、\EFI\boot\bootx64.efiスタートアップのために5つのsocondsを無駄にするよりも良いソリューションのように移動する2回目のアップデートのソリューション。注:ブート中にF12を押すかexit、EFIシェルで入力してファームウェア設定にアクセスし、端末解像度を含むすべての種類を変更できますが、これらの変更は永続的に保存されません。
-LiveWireBT

対話型シェルでコマンドを発行した後、refindEFIを修正するためにインストールできます
エドゥアルド

1
バグであることを知っておくと良いでしょう。単にedit startup.nsh。+1 \EFI\boot\bootx64.efi5秒のスキップを探しています。
CallMeLaNN

1
コピーして名前\EFI\ubuntu\shimx64.efiを変更するの\EFI\boot\bootx64.efiが最適です。クレジット
CallMeLaNN

アップデート3は....私のためにそれをやった
cljk

32

私は同じ問題を抱えていました(そうでなければEFIを実行できなかったため、EFIを有効にした)。奇妙な; Ubuntu 14.04.2のインストールはエラーになりませんでしたが、Kubuntu 15.04のインストールは完了しませんでした。DVDを削除するように求められたときに、最後にフリーズしました。リセット後は正常に起動しましたが、電源を切るとシェルが起動しました。

したがって、シェルタイプを回避するには:

fs0:
startup.nshを編集します

そして、開いたウィンドウに次の2行を追加します。

FS0:
\ EFI \ ubuntu \ grubx64.efi

プレスCtrl+はsしてEnter保存し、Ctrl+ q終了します。次に、VMを再起動します。

または、これらの2行を使用してシェルを終了し、OSを起動することもできます。しかし、2回目に再起動すると、再びシェルになり、編集を回避しますstartup.nsh


コマンドを入力しても機能しますが、問題は、次回の再起動時にそのシェルに再び移動し、ファイルstartup.nshが保存されないように見えることです。
イゴールチョルダシュ16

startup.nshファイルを保存するには、Ctrl + Sを使用して保存し、Enterキーを押してファイルに書き込む必要があります。
-Willoczy

2
Ubuntuを使用していない場合lsは、UEFIシェルで使用しているマシンの正しいパスを把握できます。たとえばls FS0:\EFIls FS0:\EFI\redhatパスを学習するにはFS0:\EFI\redhat\grub.efi、CentOSを使用します。
ntc2

1
@ ntc2ありがとう、まさにそれが私が探していたものでした!私のSlackwareのインストールではそれがでしたFS0:\EFI\Slackware\elilo.efi
ファビオマイア

11

別のオプションは、VMの「マザーボード」の下にある「EFIを有効にする」という拡張機能オプションのチェックを外すことです。

この問題がGnome Ubuntu 12.04.2 amd64bitのインストールで発生した場合。

これは、ハードウェアアクセラレーションの設定を変更する必要がある後に発見されました。VT-x / AMD-V、ネストされたページングを有効にしておくことにしました。VMには2つのCPU、参照用に8GB RAMがあります。

チェックを外すと、問題は完全に回避され、Gnome Ubuntuは問題なく起動します。Windows 7 64ビットホストでVirtual Box 4.3.18 r96516を実行します。


1
これは、Grubにもレガシーサポート(MBR)があるためにのみ機能します。
ポールステリアン

4

VirtualBoxにコピーgrubx64.efi/EFI/boot/bootx64.EFI
bootx64.efi、起動に使用します。
参照:Archlinux Virtualbox wiki


ta。これは機能しますが、grubx64.efiが更新された場合、bootx64.efiの日付は更新されます。ソースコードのバージョンへのリンク:github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/...
philcolbourn

これは、startup.nshメソッドを編集するよりもシームレスですが、実際には自動的に更新されず、symlinkもFAT32パーティションであるため使用できません。
ジョルジグジリシビリ

1

virtualbox内のcdromデバイスをIDEからSATAに変更することで、この問題を解決できました。デバイス構成内の仮想CD-ROMドライブの標準マッピングを削除しました。

インストールメディアに使用する既存のSATAコントローラーにcdromデバイスを追加するだけです。

出来上がり、EFIにこれ以上問題はありません。


1

私は最近この問題に遭遇しました。仮想OSの設定を確認してください。仮想OS->システム->拡張機能-> EFIを有効化(これをチェック解除)を右クリックします。ここに画像の説明を入力してください


8
UEFIを使用したい場合、これはどのように解決できますか?
zygimantus

+1:これで問題が解決しました。私は実験的にEnable EFIをチェックし、それを忘れていました。
ウォリック

1

そのためには、次のように記述する必要があります。

fs0:
cd EFI
cd ubuntu
grubx64

これは、それが機能しない他の方法で書いた場合に機能する方法です。


1

別の回避策:

uefiシェルで、次を使用して一時的にubuntuを起動します。

fs0:
cd EFI
cd ubuntu
grubx64

次に、ubuntu内で、startup.nshファイルを次のように編集します。

ターミナルCtrl+ Alt+を開きTます。

タイプ:

sudo nano /boot/efi/startup.nsh

パスワードを入力してください。

delまたはbackspaceキーを使用して、そこにあるものをすべて削除します。

次に、これを正確に入力します:(FS0- 0アルファベットではなく数字ですO

FS0:
\EFI\ubuntu\grubx64.efi

次に、Ctrl+ O(アルファベットO)を押します。

次に、Alt+ D(テキストをmsdos形式に変更します)。

次にを押しEnterます。

次にCtrl+ X

次にリブートします。

sudo reboot

これですべてが正常になります。


1

EFIを有効にしてUbuntu 16.04.4を使用すると、仮想マシンの起動中に起動せず、EFIインタラクティブシェルに留まることがわかりました。

これは私がブートを修正した方法です:

最初に、grubx64.efiがBLK2にあることがわかったので、1回限りの起動のために、対話型シェルで次のように入力しました。

BLK2:/EFI/ubuntu/grubx64.efi

そして、ヴィオラ、Ubuntuは稼働しています。

この問題を永久に修正するために、システムが起動したら、次の行を/boot/efi/startup.nshにエコーしました。

sudo echo 'BLK2:/EFI/ubuntu/grubx64.efi' > /boot/efi/startup.nsh

それだけです、システムは正しく起動します。


0

UEFIでVirtualBox5にKubuntu15.10をインストールした後、VMの再起動が失敗します。

行を追加する

FS0:\ EFI \ ubuntu \ grubx64.efi
UEFIシェルでは役に立ちません。

そして、chroot環境でKubuntu15.10に新しいstartup.nshファイルを作成するソリューション

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
改善もありません。

私は解決策を見つけました:

問題は、ファイルgrubx64.efiを持つディレクトリ/ boot / efi / EFI / ubuntuが存在しないことでした。

Live-CDを起動してchroot環境に変更した後、不足しているパケットをインストールし、次のように必要なNVRAMエントリを作成しました。

sudo apt-get install grub-efi-amd64-signed shim-signed
sudo update-grub

0

efiブートディレクトリを定義または変更するには、最初にこのコマンドを実行する必要があります。これで私の問題が解決しました。

sudo grub-install /dev/sda --target=x86_64-efi --efi-directory=/boot/efi/

注:/dev/sdaはシステムのハードディスクです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.