VirtualBox kann die zu ladende .efi-Datei nicht finden

1

Ich habe vor kurzem noch ein anderes Linux-System in VirtualBox installiert. Aber mit EFI. Diesmal war es Manjaro Linux, aber das ist eigentlich egal.

Das Problem

Der VirtualBox EFI-Bootloader sieht keine .efiDateien, um das Betriebssystem weiter zu laden.

EFI-Shell und so was?

Mein Workaround bestand darin, von CD / DVD zu booten und dann EFI-Bootloader erkennen auszuwählen

Eine solche Problemumgehung ständig zu verwenden, ist jedoch kein guter Weg.

Die Frage

So beheben Sie ein solches unangenehmes Verhalten: So teilen Sie VirtualBox EFI mit, wo sich .efiDateien und Bootloader befinden.

kyb
quelle

Antworten:

2

Versuchen Sie diese Sequenz:

Shell> fs0:
edit startup.nsh
\EFI\Manjaro\grubx64.efi
ctrl-s <cr>
<enter>
ctrl-q <cr>
reset

Hinweis \EFI\Manjaro\grubx64.efikann je nach konkreter Anlage abweichen. Z.B\EFI\ubuntu\grubx64.efi

Fehlerbehebung

Wenn Sie empfangen edit: Access Denied- Hängen Sie alle CDs und DVDs aus. Dann sollte es funktionieren.
Der Befehl lskann dazu beitragen, zu verstehen, als was gemountet ist fs0, und möglicherweise möchten Sie andere ausprobieren fsX:.

Links

Die EFI-Startkonfiguration kann in forums.virtualbox.org nicht persistent sein.
So starten Sie den EFI Vbox-Host für Ubuntu / Linux OS auf youtube
Vielen Dank, Leute.

kyb
quelle
2

In einer normalen Konfiguration verfolgt die EFI-Firmware die EFI-Bootloader im NVRAM. Wenn Sie ein Betriebssystem installieren, muss es seinen Bootloader bei der Firmware registrieren. Das Ergebnis ist ein NVRAM-Eintrag, der auf den Bootloader verweist, und die Firmware kann den Bootloader starten. Dies funktioniert normalerweise in Ordnung, obwohl es Probleme mit dem Löschen oder Beschädigen von NVRAM-Einträgen gibt, selbst auf "echter" Hardware. Leider kann VirtualBox seine "NVRAM" -Daten zwischen den Nutzungen nur unzureichend speichern. Es beginnt bei jedem Start mit einem neuen Satz von Standarddaten. Dies führt zu Chaos mit der Fähigkeit, so gut wie alles zu starten.

Meiner Meinung nach besteht die einfachste Lösung darin, einen Bootloader mit dem Fallback-Dateinamen EFI/BOOT/bootx64.efi(ohne Berücksichtigung der Groß- und Kleinschreibung) auf der EFI-Systempartition (ESP) der virtualisierten Festplatte zu speichern. Wenn ein EFI nichts anderes booten kann, wird versucht, diesen Bootloader zu booten. Allgemein gesagt, wenn Sie eine Linux-Distribution installieren, gibt es zwei Möglichkeiten, dies zu tun:

  • Dort können Sie eine Kopie Ihres regulären Bootloaders speichern. Ich weiß nicht , was Manjaro standardmäßig verwendet oder wo sie gespeichert werden , aber angenommen , es verwendet EFI/manjaro/grubx64.efi, dann würden Sie kopieren oder umbenennen EFI/manjarozu EFI/BOOTund benennen Sie grubx64.efiin diesem Verzeichnis bootx64.efi. Sie können auch einen anderen als den Standard-Bootloader von Manjaro verwenden. Siehe meine Seite zu diesem Thema Informationen über , was verfügbar ist .
  • Sie können fallback.efioder fbx64.efi(das gleiche Programm, verschiedene Namen) verwenden. Dieses EFI-Programm ist wahrscheinlich entweder bereits irgendwo auf Ihrem ESP installiert oder zumindest in einem Paket in Ihrer Distribution verfügbar (möglicherweise GRUB oder Shim). Sie kopieren diese Datei in das Verzeichnis, in dem sich der eigentliche Bootloader befindet , EFI/BOOT/bootx64.efiund erstellen dann eine BOOT.CSVDatei. Diese Datei enthält Daten zum Namen des tatsächlichen Bootloaders und zugehörige Daten, z grubx64.efi,Manjaro,,This is the boot entry for Manjaro. Wichtig ist, dass diese Datei UCS-2 oder UTF-16 ist , nicht reines ASCII. Wenn fallback.efi/ fbx64.efi(as bootx64.efi) startet , sucht es nach .CSVDateien in den Unterverzeichnissen vonEFIauf dem ESP. Wenn es irgendwelche findet, verwendet es sie, um neue NVRAM-Einträge zu generieren. Dies soll bei der Wiederherstellung verlorener NVRAM-Einträge helfen. Auf diese Weise können Sie das Problem der VirtualBox-NVRAM-Amnesie umgehen.

Der erste Ansatz dürfte einfacher einzurichten sein, da die GRUB-Konfigurationen unter Umständen schwierig sind. Wenn Sie grub.cfgnach dem ESP suchen, müssen Sie sicher sein, dass es dort bleibt, wo GRUB es erwartet, sodass Sie es möglicherweise verschieben müssen oder nicht. Wenn Ihr Paketsystem einen aktualisierten GRUB enthält, müssen Sie ihn erneut kopieren, um die Vorteile des neuen Pakets zu nutzen. Der zweite Ansatz ist schwerer zu erklären und etwas mühsamer einzurichten, aber ich bevorzuge ihn, weil dadurch Updates für den Bootloader einfacher zu installieren sind.

Es gibt auch andere Ansätze, um das Problem zu umgehen, z. B. die Verwendung eines EFI-Shell-Startskripts, wie von kyb vorgeschlagen (dies führt jedoch zu längeren Startzeiten als bei meiner obigen Lösung). In der Vergangenheit war es auch möglich, einen neuen NVRAM-Eintrag über die VirtualBox-Firmware-Schnittstelle selbst zu erstellen. aber das scheint irgendwann nicht mehr zu funktionieren - oder zumindest, als ich es das letzte Mal ausprobiert habe, hat es nicht funktioniert.

Rod Smith
quelle