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/manjaro
zu EFI/BOOT
und benennen Sie grubx64.efi
in 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.efi
oder 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.efi
und erstellen dann eine BOOT.CSV
Datei. 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 .CSV
Dateien in den Unterverzeichnissen vonEFI
auf 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.cfg
nach 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.