1

Я недавно установил еще одну систему Linux в VirtualBox. Но с EFI. На этот раз это был Manjaro Linux, но это не имеет большого значения.

Эта проблема

Загрузчик VirtualBox EFI не видит файлы .efi для продолжения загрузки ОС.

EFI оболочка и что с того?

Мой обходной путь состоял в том, чтобы загрузиться с CD/DVD и затем выбрать Определить загрузчики EFI

Но использование такого обходного пути постоянно не является хорошим способом.

Вопрос

Как исправить такое неудобное поведение - как сообщить VirtualBox EFI, где искать .efi файлы-загрузчики.

2 ответа2

2

Попробуйте эту последовательность:

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

Примечание \EFI\Manjaro\grubx64.efi может отличаться в зависимости от конкретной системы. Например, \EFI\ubuntu\grubx64.efi

Поиск проблемы

Если вы получили edit: Access Denied - размонтировать все CD и DVD. Чем это должно работать.
Команда ls может помочь понять, что монтируется как fs0 , и, возможно, вы захотите попробовать другой fsX:

связи

Конфигурация загрузки EFI не может быть постоянной на forums.virtualbox.org
Как запустить хост EFI Vbox для ОС Ubuntu/ Linux на YouTube
Спасибо вам, ребята.

2

В обычной конфигурации прошивка EFI отслеживает загрузчики EFI в NVRAM. Когда вы устанавливаете ОС, она должна зарегистрировать свой загрузчик в прошивке, и в результате получается запись NVRAM, которая указывает на загрузчик, и прошивка может запустить загрузчик. Обычно это работает нормально, хотя есть проблемы с удалением или повреждением записей NVRAM даже на "реальном" оборудовании. VirtualBox, к сожалению, плохо справляется с хранением своих данных "NVRAM" между использованиями; он имеет тенденцию начинаться со свежего набора данных по умолчанию при каждом его запуске. Это приводит к хаосу с возможностью запуска практически всего.

ИМХО, самый простой обходной путь - сохранить загрузчик с использованием резервного имени файла 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 amnesia".

Первый подход, вероятно, будет проще в настройке, так как предостережение в том, что конфигурации GRUB могут быть хитрыми. Если вы grub.cfg в ESP, вы должны быть уверены, что он останется там, где GRUB ожидает этого, поэтому вам может понадобиться или не нужно его перемещать. Кроме того, если ваша система пакетов предоставляет обновленный GRUB, вам нужно будет скопировать его еще раз, чтобы воспользоваться преимуществами нового пакета. Второй подход сложнее объяснить и немного сложнее в настройке, но я начинаю предпочитать его, потому что он упрощает установку обновлений для загрузчика.

Существуют и другие подходы к решению проблемы, такие как использование сценария запуска оболочки EFI, как предлагает kyb (но это приведет к более длительному времени запуска, чем мое решение выше). Кроме того, в прошлом было возможно создать новую запись NVRAM, используя сам интерфейс прошивки VirtualBox, и это было бы постоянным; но это, кажется, перестало работать в какой-то момент - или, по крайней мере, в последний раз, когда я попробовал это, это не сработало.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .