в обычной конфигурации прошивка EFI отслеживает загрузчики EFI в NVRAM. При установке ОС, она должна зарегистрировать свой загрузчик с прошивкой, и в результате записи NVRAM, указывающий на загрузчик и прошивку для запуска загрузчика. Это нормально работает, хотя есть проблемы с записями NVRAM стираются или повреждаются даже на "реальном" оборудовании. VirtualBox, к сожалению, плохо справляется с хранением своих данных "NVRAM" между использует; он имеет тенденцию начинаться с нового набора данных по умолчанию каждый раз, когда вы запускаете его. Это в конечном итоге сеет хаос с возможностью запуска почти ничего.
IMHO, самый простой способ-сохранить загрузчик, используя резервное имя файла EFI/BOOT/bootx64.efi
(без учета регистра) на системный раздел EFI (ESP) виртуального диска. Если EFI не может загрузить ничего другого, он попытается загрузить этот загрузчик. В широком смысле, если вы устанавливаете Linux распределение, есть два способа сделать это:
- вы можете хранить там копию вашего обычного загрузчика. Я не знаю, что Manjaro использует по умолчанию или где он его хранит, но предположим, что он использует
EFI/manjaro/grubx64.efi
, вы скопируете или переименуете EFI/manjaro
до EFI/BOOT
и переименуйте grubx64.efi
в каталог bootx64.efi
. Вы можете использовать что-то другое, кроме загрузчика по умолчанию Manjaro, если хотите. См.моя страница на эту тему для получения информации о том, что доступный.
- можно использовать
fallback.efi
или fbx64.efi
(та же программа, разные имена). Эта программа EFI, вероятно, либо уже установлена где-то на вашем ESP, либо, по крайней мере, доступна в каком-то пакете в вашем дистрибутиве (возможно, GRUB или Shim). Вы скопируете этот файл в EFI/BOOT/bootx64.efi
, а затем создать BOOT.CSV
файл в директории, в которой находится загрузчик. Этот файл содержит данные о реальном имени загрузчика и связанные с ним данные, такие как grubx64.efi,Manjaro,,This is the boot entry for Manjaro
. Главное, этот файл должны будь UCS-2 или UTF-16, не простой ASCII. Когда fallback.efi
/fbx64.efi
запускает (как bootx64.efi
), он ищет .CSV
файлы в поддиректории EFI
на ESP. Если он находит, он использует их для создания новых записей NVRAM. Это предназначено, чтобы помочь с восстановлением потерянных записей NVRAM, так что это один из способов обойти проблему VirtualBox "NVRAM амнезия".
первый подход, вероятно, будет легче настроить, с оговоркой конфигурации GRUB может быть привередливый. Если ваш ищет grub.cfg
на ESP, вы должны быть уверены, что он остается там, где GRUB ожидает его, так что вы могли бы или не должны переместить его. Кроме того, если ваша система пакетов предоставляет обновленный GRUB, вам нужно будет скопировать его снова, чтобы получить преимущества нового пакета. Второй подход сложнее объяснить и немного более утомителен в настройке, но я начинаю предпочитать его, потому что он упрощает установку обновлений для загрузчика.
есть и другие подходы к работе вокруг проблемы тоже, как использование сценария запуска оболочки EFI, как предлагает kyb (но это приведет к более длительному времени запуска, чем мое решение выше). Кроме того, в прошлом можно было создать новую запись NVRAM, используя сам интерфейс прошивки VirtualBox, и это было бы постоянным; но это, похоже, перестало работать в какой-то момент-или, по крайней мере, в последний раз, когда я пробовал, это не сработало.