VirtualBox завантажується лише в оболонці UEFI Interactive


49

Я встановив Ubuntu 14.10 у VirtualBox з UEFI. Але тепер я перезавантажив цю ОС і тепер вона завантажується в UEFI Interactive Shell v2.0. Як я можу знову нормально завантажуватися в Grub?


Гарна новина всім, з VirtualBox 5.1 способи вирішення проблем більше не потрібні. Вам, можливо, доведеться просто додати новий запис EFI (вручну, використовуючи efibootmgrабо автоматично перевстановивши grub), щоб він завантажив Ubuntu відразу ж.
phk

2
Навіть із 5.1, зміни змінних efi, як-от необхідні настройки завантаження з efibootmgr, втрачаються після відключення (вони залишаються при перезавантаженні).
chappjc

1
5.1.30 вона все ще існує. Незважаючи на те, що виправити це легко, але мені доводиться виправляти кожен раз після встановлення debian & ubuntu.
CallMeLaNN

Відповіді:


52

Я зіткнувся з тією ж проблемою і виявив, що якщо я видаю наступну команду в інтерактивній оболонці, віртуальна машина завантажиться в Ubuntu:

fs0:\efi\ubuntu\grubx64.efi

(Використовуйте зворотний нахил, нахил косого кута не працює. Команди в інтерактивній оболонці UEFI нечутливі до регістру.)

Моя версія VirtualBox - 4.3.20 r96997, версія Ubuntu - 14.10 AMD64. Я не знаю, чому це відбувається і як це вирішити. Щойно знайшли цей не елегантний і все-таки трохи клопіткий спосіб вирішення.

Оновлення 1:

Я прочитав це , відслідковував до звіту про помилку і знайшов кращий спосіб вирішення .

Оновлення 2:

Помилка в оновленнях 1. Я вимкнув віртуальну машину, запустив її. І він знову завантажився в оболонку UEFI Interactive. Відповідно до цього проблема, ймовірно, була викликана помилкою VirtualBox. Я все ще шукаю подальшого вирішення цього питання.

Оновлення 3:

Нарешті знайшов рішення. Відповідно до цього , потрібно створити сценарій startup.nsh вручну. Крім методу в згаданому дописі, ви також можете це зробити:

$ sudo mount /dev/sda1 /mnt
$ cd /mnt
$ sudo sh -c "echo '\EFI\ubuntu\grubx64.efi' > startup.nsh"

3
"Наразі неможливо маніпулювати змінними EFI всередині працюючого гостя" Рішення у вашому другому оновлення перемістити будь-який завантажувач, який ви хочете використовувати на ESP,\EFI\boot\bootx64.efiзвучить як краще рішення для мене, ніж витрачати 5 секунд на розмитнення для запуску.nsh . Примітка: Ви можете натиснути F12 під час завантаження або ввестиexitв оболонку EFI, щоб отримати доступ до налаштувань програмного забезпечення та змінювати всі види речей, включаючи роздільну здатність терміналу, але ці зміни не зберігаються постійно.
LiveWireBT

Після видачі команди в інтерактивній оболонці ви можете встановити, refindщоб виправити EFI
Eduardo

1
Добре знати, що це помилка. Просто edit startup.nsh. +1 Він шукає \EFI\boot\bootx64.efiпропустити 5 сек.
CallMeLaNN

1
Копіювання і перейменування \EFI\ubuntu\shimx64.efiв \EFI\boot\bootx64.efiкраще. кредит
CallMeLaNN

Оновлення 3 зробив це для мене ....
cljk

32

У мене була така ж проблема (із включеним ІФІ, оскільки я не міг змусити її працювати інакше). Дивний; хоча установка Ubuntu 14.04.2 не отримала помилок, встановлення Kubuntu 15.04 не вдалося завершити. Він застиг у самому кінці, коли його попросили видалити DVD. Після скидання він завантажився чудово, але після відключення живлення він підняв оболонку.

Отже, щоб уникнути типу оболонки:

fs0:
редагувати startup.nsh

і у відкрите вікно додайте ці 2 рядки:

FS0:
\ EFI \ ubuntu \ grubx64.efi

натисніть Ctrl+ sі , Enterщоб зберегти і Ctrl+ , qщоб кинути палити. Потім перезапустіть VM.

Крім того, ви завжди можете використовувати ці 2 лінії для виходу з оболонки та завантаження ОС. Але при другому перезапуску ви знову опинитесь в оболонці і уникайте її редагування startup.nsh.


Введення команди працює, але проблема полягає в тому, що при наступному перезапуску вона знову переходить до цієї оболонки і файл startup.nsh, схоже, не зберігається.
Ігор Чордаш

Щоб зберегти файл startup.nsh, для збереження потрібно використовувати Ctrl + S та натиснути Enter, щоб записати у файл.
Віллоцці

2
Якщо ви не використовуєте Ubuntu, ви можете визначити правильний шлях для вашої машини, використовуючи lsоболонку UEFI. Наприклад ls FS0:\EFI, ls FS0:\EFI\redhatщоб дізнатися шлях FS0:\EFI\redhat\grub.efiна CentOS.
ntc2

1
@ ntc2 Дякую, саме це я шукав! Для моєї установки Slackware це було FS0:\EFI\Slackware\elilo.efi.
fabiomaia

11

Інший варіант - зняти галочку з пункту "Увімкнути EFI" у розділі "Материнська плата" для вашої VM.

Якби ця проблема виникла для встановлення amd64bit Gnome Ubuntu 12.04.2.

Виявили це після зміни параметрів апаратного прискорення. Мені залишилося увімкнути VT-x / AMD-V, введене введення сторінки. Мій VM має 2 процесора, 8 Гб оперативної пам’яті для довідки.

Після зняття перевірки проблема повністю пройдена, Gnome Ubuntu завантажується без проблем. Запуск віртуальної скриньки 4.3.18 r96516 на 64-розрядному хості Windows 7.


1
Це працює лише тому, що Grub також мав підтримку у спадщину (MBR).
Пол Стеліан

4

Копіюйте grubx64.efiу /EFI/boot/bootx64.EFI
VirtualBox, використовуйте це bootx64.efiдля завантаження.
Довідка: Вікі віртуальний каталог Archlinux


та. Це працює, але якщо grubx64.efi оновлено, bootx64.efi буде датовано. посилання на версію вихідного коду: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn

Цей спосіб більш легкий, ніж редагування методу startup.nsh , але він дійсно не оновлюватиметься автоматично, і ви також не можете використовувати symlink, оскільки це FAT32-розділ.
Джорджі Гзірішвілі

1

Я міг би вирішити цю проблему, змінивши пристрій cdrom у віртуальній скриньці з IDE на SATA. Я видалив стандартне відображення віртуального компакт-диска в конфігурації пристрою.

Просто додайте cdrom-пристрій до існуючого контролера SATA, який буде використовуватися для встановлення носія.

Et voila, ніяких подальших проблем із ІФІ.


1

Нещодавно я стикався з цією проблемою. Перевірте налаштування віртуальної ОС. Клацніть правою кнопкою миші віртуальний os-> system-> Розширені функції-> Увімкнути EFI (зніміть цей прапорець).введіть тут опис зображення


8
Як це рішення, якщо хочеться використовувати UEFI?
зигімантус

+1: Це вирішило мою проблему. Я експериментально перевірив Enable EFI і забув про нього.
wallyk

1

для цього вам потрібно написати це так:

fs0:
cd EFI
cd ubuntu
grubx64

ось як я змусив його працювати, якщо ви пишете це будь-яким іншим способом, як він не буде працювати.


1

Ще одна робота навколо:

У оболонці uefi тимчасово завантажтесь до ubuntu, використовуючи:

fs0:
cd EFI
cd ubuntu
grubx64

Потім всередині ubuntu відредагуйте файл startup.nsh, як показано нижче:

Відкрити термінал Ctrl+ Alt+ T.

Тип:

sudo nano /boot/efi/startup.nsh

Введіть ваш пароль.

Тепер видаліть усе, що там, за допомогою клавіші del або backspace.

Потім введіть саме це: ( FS0- це цифра 0, а не алфавіт O)

FS0:
\EFI\ubuntu\grubx64.efi

Тепер натисніть Ctrl+ O(це алфавіт O).

Потім Alt+ D(для зміни тексту у формат msdos).

Потім натисніть Enter.

Тоді Ctrl+ X.

Тепер перезавантажте.

sudo reboot

Зараз все повинно бути добре.


1

Використовуючи Ubuntu 16.04.4 з підтримкою EFI і під час запуску віртуальної машини я виявив, що він не завантажиться і просто залишиться у інтерактивній оболонці EFI.

Ось як я виправив завантаження:

По-перше, я виявив, що grubx64.efi розташований у BLK2, тому для одноразового завантаження я просто набрав у інтерактивну оболонку:

BLK2:/EFI/ubuntu/grubx64.efi

І віола, Ubuntu працює і працює.

Я маю намір назавжди виправити цю проблему, коли система була запущена, я повторив наступний рядок у /boot/efi/startup.nsh.

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

Ось так, система завантажиться правильно.


0

Після встановлення Kubuntu15.10 у VirtualBox5 з UEFI перезавантаження VM не вдалося.

Додавання рядка

FS0: \ EFI \ ubuntu \ grubx64.efi
в UEFI-Shell не допомагає.

І рішення зі створення нового файлу startup.nsh в Kubuntu15.10 в середовищі chroot з

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
також не дає поліпшення.

Я знайшов рішення:

Проблема полягала в тому, що каталог / boot / efi / EFI / ubuntu з файлом grubx64.efi не існує.

Після завантаження Live-CD та переходу до середовища chroot я встановив відсутні пакети та створив необхідний запис NVRAM за допомогою:

sudo apt-get install grub-efi-amd64 підписаний shim-підписаний
sudo update-grub

0

Для визначення або зміни каталогу завантаження efi потрібно спочатку запустити цю команду. Це вирішило мою проблему.

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

ПРИМІТКА: /dev/sdaце жорсткий диск системи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.