VirtualBox wird nur in der UEFI Interactive-Shell gestartet

49

Ich habe Ubuntu 14.10 in VirtualBox mit UEFI installiert. Aber jetzt habe ich dieses Betriebssystem neu gestartet und jetzt wird eine UEFI Interactive Shell v2.0 gestartet. Wie kann ich Grub wieder normal booten?

Benjamin Stütz
quelle
Gute Nachrichten an alle, mit VirtualBox 5.1 werden die Problemumgehungen nicht mehr benötigt. Möglicherweise müssen Sie nur einen neuen EFI-Eintrag hinzufügen (manuell efibootmgroder automatisch durch Neuinstallation von grub), damit Ubuntu sofort wieder gestartet wird.
Phk
2
Auch mit 5.1 gehen Änderungen an efi-Variablen, wie die erforderliche Starteinstellung mit, efibootmgrnach dem Herunterfahren verloren (sie bleiben jedoch beim Neustart erhalten).
chappjc
1
5.1.30 gibt es noch. Obwohl das Update einfach ist, muss ich es jedes Mal nach der Installation von debian & ubuntu reparieren.
CallMeLaNN

Antworten:

52

Ich bin auf dasselbe Problem gestoßen und habe festgestellt, dass die virtuelle Maschine Ubuntu booten würde, wenn ich den folgenden Befehl in der interaktiven Shell ausführen würde:

fs0:\efi\ubuntu\grubx64.efi

(Verwenden Sie Backslash, Forward Slash funktioniert nicht. Bei Befehlen in der interaktiven UEFI-Shell wird die Groß- / Kleinschreibung nicht berücksichtigt.)

Meine VirtualBox-Version ist 4.3.20 r96997, Ubuntu-Version ist 14.10 AMD64. Ich weiß nicht, warum das passiert und wie ich es lösen soll. Habe gerade festgestellt, dass dies nicht elegant und dennoch ein wenig umständlich ist.

Update 1:

Ich habe dies gelesen , einen Fehlerbericht gefunden und eine bessere Lösung gefunden .

Update 2:

Problemumgehung in Update 1 fehlgeschlagen. Ich habe die virtuelle Maschine ausgeschaltet und gestartet. Und es wurde wieder die UEFI Interactive-Shell gestartet. Nach diesem war das Problem wahrscheinlich Ursache von einem VirtualBox Fehler. Ich bin noch auf der Suche nach einer weiteren Lösung.

Update 3:

Endlich eine Lösung gefunden. Nach dieser , müssen Sie manuell eine startup.nsh Skript erstellen. Abgesehen von der Methode in dem erwähnten Beitrag können Sie dies auch tun:

$ sudo mount /dev/sda1 /mnt
$ cd /mnt
$ sudo sh -c "echo '\EFI\ubuntu\grubx64.efi' > startup.nsh"
Nairen Zheng
quelle
3
"Es ist derzeit nicht möglich, EFI-Variablen von einem laufenden Gast aus zu manipulieren." Die Lösung in Ihrem zweiten Update, den Bootloader, den Sie auf dem ESP verwenden möchten, zu verschieben,\EFI\boot\bootx64.efiklingt für michnachder besseren Lösung, als 5 Sekunden für startup.nsh zu verschwenden . Hinweis: Sie können während des Startvorgangs F12 drücken oderexitdie EFI-Shell aufrufen, um auf die Firmware-Einstellungen zuzugreifen und alle möglichen Dinge zu ändern, einschließlich der Terminalauflösung. Diese Änderungen werden jedoch nicht dauerhaft gespeichert.
LiveWireBT
Nachdem Sie den Befehl in der interaktiven Shell eingegeben haben, können Sie refindEFI
Eduardo
1
Gut zu wissen, dass es sich um einen Bug handelt. Einfach edit startup.nsh. +1 Es wird gesucht \EFI\boot\bootx64.efi, um die 5 Sekunden zu überspringen.
CallMeLaNN
1
Kopieren und Umbenennen \EFI\ubuntu\shimx64.efiin \EFI\boot\bootx64.efiist das Beste. Guthaben
CallMeLaNN
Update 3 hat es für mich getan ...
cljk
32

Ich hatte das gleiche Problem (mit aktiviertem EFI, da ich es sonst nicht zum Laufen bringen konnte). Seltsam; Obwohl die Installation von Ubuntu 14.04.2 keinen Fehler aufwies, konnte die Installation von Kubuntu 15.04 nicht abgeschlossen werden. Es fror ganz am Ende ein, als man aufgefordert wurde, die DVD zu entfernen. Nach dem Zurücksetzen bootete es einwandfrei, aber nach dem Ausschalten wurde die Shell hochgefahren.

So vermeiden Sie Shell-Typ:

fs0:
edit startup.nsh

und füge im geöffneten Fenster diese 2 Zeilen hinzu:

FS0:
\ EFI \ ubuntu \ grubx64.efi

Drücken Sie Ctrl+ sund Enterzum Speichern und Ctrl+ qzum Beenden. Starten Sie anschließend die VM neu.

Alternativ können Sie diese 2 Zeilen immer zum Beenden des Shell- und Boot-Betriebssystems verwenden. Aber beim zweiten Neustart befinden Sie sich wieder in einer Shell und müssen diese nicht bearbeiten startup.nsh.

VRR
quelle
Die Eingabe des Befehls funktioniert, aber das Problem ist, dass beim nächsten Neustart die Shell erneut aufgerufen wird und die Datei startup.nsh nicht gespeichert zu sein scheint.
Igor Čordaš
Um die Datei startup.nsh zu speichern, müssen Sie Strg + S zum Speichern verwenden und die Eingabetaste drücken, um in die Datei zu schreiben.
Willoczy
2
Wenn Sie Ubuntu nicht verwenden, können Sie den richtigen Pfad für Ihren Computer lsin der UEFI-Shell ermitteln. Zum Beispiel ls FS0:\EFI, dann ls FS0:\EFI\redhatist der Weg zu lernen , ist FS0:\EFI\redhat\grub.efiauf CentOS.
NTC2
1
@ ntc2 Danke, genau das habe ich gesucht! Für meine Slackware-Installation war es FS0:\EFI\Slackware\elilo.efi.
Fabiomaia
11

Eine andere Option besteht darin, die Option Erweiterte Funktionen mit dem Namen "EFI aktivieren" unter "Motherboard" für Ihre VM zu deaktivieren.

Wäre dieses Problem bei der Installation von Gnome Ubuntu 12.04.2 amd64bit aufgetreten.

Dies wurde festgestellt, nachdem die Einstellungen für die Hardwarebeschleunigung geändert werden mussten. Ich hatte VT-x / AMD-V, Nested Paging aktiviert. Meine VM hat 2 CPUs, 8 GB RAM als Referenz.

Nach dem Deaktivieren des Problems wird Gnome Ubuntu vollständig umgangen und bootet ohne Probleme. Ausführen von Virtual Box 4.3.18 r96516 auf einem Windows 7 64-Bit-Host.

robocop
quelle
1
Dies funktioniert nur, weil Grub auch Legacy Support (MBR) hatte.
Paul Stelian
4

Kopieren Sie grubx64.efiauf /EFI/boot/bootx64.EFI
VirtualBox verwenden , die bootx64.efizu booten.
Ref .: Archlinux Virtualbox Wiki

cylgalad
quelle
ta. Dies funktioniert, aber wenn grubx64.efi aktualisiert wird, wird bootx64.efi datiert. Link zu einer Version des Quellcodes: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn
Diese Methode ist nahtloser als die Bearbeitung der Methode startup.nsh , wird jedoch nicht automatisch aktualisiert und Sie können symlink auch nicht verwenden, da es sich um eine FAT32-Partition handelt.
Giorgi Gzirishvili
1

Ich könnte dieses Problem lösen, indem ich das CD-ROM-Gerät in der VirtualBox von IDE auf SATA ändere. Ich habe die Standardzuordnung des virtuellen CD-ROM-Laufwerks in der Gerätekonfiguration entfernt.

Fügen Sie dem vorhandenen SATA-Controller, der für Ihre Installationsmedien verwendet werden soll, einfach ein CD-ROM-Gerät hinzu.

Et voila, keine weiteren Probleme mit EFI.

Laurent
quelle
1

Ich bin vor kurzem auf dieses Problem gestoßen. Bitte überprüfen Sie Ihre Einstellungen für das virtuelle Betriebssystem. Klicken Sie mit der rechten Maustaste auf Virtual OS-> System-> Erweiterte Funktionen-> EFI aktivieren (deaktivieren Sie dieses Kontrollkästchen).Bildbeschreibung hier eingeben

Sudip7
quelle
8
Wie ist das eine Lösung, wenn man UEFI nutzen will?
Zygimantus
+1: Das hat mein Problem gelöst. Ich hatte Enable EFI experimentell überprüft und es vergessen.
Wallyk
1

Dazu müssen Sie es wie folgt schreiben:

fs0:
cd EFI
cd ubuntu
grubx64

So habe ich es zum Laufen gebracht, wenn du es anders schreibst, als es funktioniert.

Dan Duncker
quelle
1

Eine andere Arbeit um:

Booten Sie in der UFI-Shell vorübergehend in Ubuntu mit:

fs0:
cd EFI
cd ubuntu
grubx64

Bearbeiten Sie dann in Ubuntu die Datei startup.nsh wie folgt:

Öffnen Sie das Terminal Ctrl+ Alt+ T.

Art:

sudo nano /boot/efi/startup.nsh

Geben Sie Ihr Passwort ein.

Löschen Sie nun alles, was sich darin befindet, mit der Entf- oder der Rücktaste.

Dann tippe dies genau ein: ( FS0- das ist die Ziffer 0, nicht das Alphabet O)

FS0:
\EFI\ubuntu\grubx64.efi

Drücken Sie jetzt Ctrl+ O(das ist Alphabet O).

Dann Alt+ D(Um den Text in das MSDOS-Format zu ändern).

Dann drücken Sie Enter.

Dann Ctrl+ X.

Jetzt neu starten.

sudo reboot

Jetzt sollte alles in Ordnung sein.

Ddm
quelle
1

Unter Ubuntu 16.04.4 mit aktiviertem EFI und beim Starten der virtuellen Maschine stellte ich fest, dass sie nicht startet und nur in der interaktiven EFI-Shell verbleibt.

So habe ich den Boot repariert:

Zuerst stellte ich fest, dass sich die Datei grubx64.efi in BLK2 befindet. Für einen einmaligen Start habe ich in der interaktiven Shell Folgendes eingegeben:

BLK2:/EFI/ubuntu/grubx64.efi

Und Viola, Ubuntu läuft.

Um dieses Problem dauerhaft zu beheben, habe ich nach dem Hochfahren des Systems die folgende Zeile in der Datei /boot/efi/startup.nsh wiedergegeben.

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

Das System wird nun korrekt gestartet.

Yaron Morad
quelle
0

Nach der Installation von Kubuntu15.10 in VirtualBox5 mit UEFI schlägt der Neustart der VM fehl.

Zeile hinzufügen

FS0: \ EFI \ ubuntu \ grubx64.efi
in der UEFI-Shell hilft nicht.

Und die Lösung mit dem Erstellen einer neuen startup.nsh-Datei in Kubuntu15.10 in der chroot-Umgebung mit

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
gibt auch keine besserung.

Ich habe die Lösung gefunden:

Das Problem war, dass das Verzeichnis / boot / efi / EFI / ubuntu mit der Datei grubx64.efi nicht existiert.

Nachdem ich eine Live-CD gebootet und in die Chroot-Umgebung gewechselt hatte, installierte ich die fehlenden Pakete und erstellte den benötigten NVRAM-Eintrag mit:

sudo apt-get install grub-efi-amd64-signiert shim-signiert
sudo update-grub
sun312
quelle
0

Zum Definieren oder Ändern des efi-Startverzeichnisses muss zuerst dieser Befehl ausgeführt werden. Das hat mein Problem gelöst.

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

ANMERKUNG: Ist /dev/sdadie Systemfestplatte.

user945376
quelle