VirtualBox uruchamia się tylko w powłoce interaktywnej UEFI

49

Zainstalowałem Ubuntu 14.10 w VirtualBox z UEFI. Ale teraz zrestartowałem ten system operacyjny i teraz uruchamia się w UEFI Interactive Shell v2.0. Jak mogę normalnie uruchomić ponownie Gruba?

Benjamin Stütz
źródło
Dobra wiadomość dla wszystkich, dzięki VirtualBox 5.1 obejścia nie są już potrzebne. Konieczne może być dodanie nowego wpisu EFI (ręcznie efibootmgrlub automatycznie przez ponowną instalację gruba), aby od razu uruchomił Ubuntu.
phk
2
Nawet w wersji 5.1 zmiany zmiennych efi, takie jak wymagane ustawienie rozruchu za pomocą, efibootmgrsą tracone po wyłączeniu (jednak pozostają one w trakcie ponownego uruchamiania).
chappjc
1
5.1.30 nadal istnieje. Chociaż poprawka jest łatwa, ale muszę ją naprawić za każdym razem po instalacji debian & ubuntu.
CallMeLaNN

Odpowiedzi:

52

Napotkałem ten sam problem i stwierdziłem, że jeśli wydam następujące polecenie w interaktywnej powłoce, maszyna wirtualna uruchomi się w Ubuntu:

fs0:\efi\ubuntu\grubx64.efi

(Użyj ukośnika odwrotnego, ukośnik nie działa. Polecenia w interaktywnej powłoce UEFI nie uwzględniają wielkości liter.)

Moja wersja VirtualBox to 4.3.20 r96997, wersja Ubuntu to 14.10 AMD64. Nie wiem, dlaczego tak się dzieje i jak to rozwiązać. Właśnie znalazłem to nie eleganckie i nadal trochę kłopotliwe obejście.

Aktualizacja 1:

Przeczytałem to , wyśledziłem raport o błędzie i znalazłem lepsze obejście .

Aktualizacja 2:

Obejście w aktualizacji 1 nie powiodło się. Wyłączyłem maszynę wirtualną, uruchomiłem ją. I ponownie uruchomił się w powłoce interaktywnej UEFI. Zgodnie z tym przyczyną problemu był prawdopodobnie błąd VirtualBox. Wciąż szukam dalszego rozwiązania tego problemu.

Aktualizacja 3:

W końcu znalazłem rozwiązanie. Zgodnie z tym musisz ręcznie utworzyć skrypt startup.nsh. Z wyjątkiem metody wymienionej we wpisie, możesz również to zrobić:

$ sudo mount /dev/sda1 /mnt
$ cd /mnt
$ sudo sh -c "echo '\EFI\ubuntu\grubx64.efi' > startup.nsh"
Nairen Zheng
źródło
3
„Obecnie nie jest możliwe manipulowanie zmiennymi EFI z poziomu działającego gościa” Rozwiązanie w drugiej aktualizacji\EFI\boot\bootx64.efipolegającena przeniesieniu dowolnego programu ładującego, którego chcesz użyć na ESP,brzmi dla mnie jak lepsze rozwiązanie niż marnowanie 5 soconds na start.nsh . Uwaga: Możesz nacisnąć klawisz F12 podczas rozruchu lub wejśćexitw powłokę EFI, aby uzyskać dostęp do ustawień oprogramowania układowego i modyfikować różne rzeczy, w tym rozdzielczość terminala, ale modyfikacje te nie są przechowywane na stałe.
LiveWireBT,
Po wydaniu polecenia w interaktywnej powłoce można zainstalować, refindaby naprawić EFI
Eduardo
1
Dobrze wiedzieć, że to błąd. Po prostu edit startup.nsh. +1 Szuka \EFI\boot\bootx64.efipominięcia 5 sekund.
CallMeLaNN
1
Kopiowanie i zmiana nazwy \EFI\ubuntu\shimx64.efina \EFI\boot\bootx64.efito najlepszy. kredyt
CallMeLaNN
Aktualizacja 3 zrobiła to dla mnie ....
cljk
32

Miałem ten sam problem (z włączonym EFI, ponieważ nie mogłem go uruchomić inaczej). Dziwne; mimo że instalacja Ubuntu 14.04.2 nie spowodowała błędu, instalacja Kubuntu 15.04 nie zakończyła się. Zatrzymał się na samym końcu, gdy został poproszony o usunięcie DVD. Po zresetowaniu uruchomił się dobrze, ale po wyłączeniu zasilania przywołał powłokę.

Aby uniknąć typu powłoki:

fs0:
edytuj startup.nsh

i w otwartym oknie dodaj te 2 linie:

FS0:
\ EFI \ ubuntu \ grubx64.efi

naciśnij Ctrl+ si, Enteraby zapisać i Ctrl+, qaby wyjść. Następnie uruchom ponownie maszynę wirtualną.

Alternatywnie, zawsze możesz użyć tych 2 linii, aby wyjść z powłoki i uruchomić system operacyjny. Ale po drugim uruchomieniu ponownie będziesz w powłoce i unikniesz jej edycji startup.nsh.

VRR
źródło
Wpisanie polecenia działa, ale problem polega na tym, że przy następnym uruchomieniu ponownie przechodzi do powłoki i pliku startup.nsh nie wydaje się zapisany.
Igor Čordaš
Aby zapisać plik startup.nsh, musisz użyć Ctrl + S, aby zapisać i nacisnąć Enter, aby zapisać do pliku.
Willoczy
2
Jeśli nie korzystasz z Ubuntu, możesz znaleźć właściwą ścieżkę dla swojego komputera, używając lspowłoki UEFI. Na przykład ls FS0:\EFI, a następnie ls FS0:\EFI\redhat, aby dowiedzieć się ścieżka jest FS0:\EFI\redhat\grub.efina CentOS.
ntc2
1
@ ntc2 Dzięki, właśnie tego szukałem! Tak było w przypadku mojej instalacji Slackware FS0:\EFI\Slackware\elilo.efi.
fabiomaia
11

Inną opcją jest odznaczenie opcji Rozszerzone funkcje o nazwie „Włącz EFI” w sekcji „Płyta główna” dla maszyny wirtualnej.

Czy ten problem pojawił się w przypadku instalacji Gnome Ubuntu 12.04.2 amd64bit.

Odkrył to po zmianie ustawień przyspieszenia sprzętowego. Pozostało mi włączenie VT-x / AMD-V z włączonym zagnieżdżaniem. Moja maszyna wirtualna ma 2 procesory, 8 GB pamięci RAM w celach informacyjnych.

Po usunięciu zaznaczenia problem został całkowicie pominięty. Gnome Ubuntu nie uruchamia się. Uruchamianie Virtual Box 4.3.18 r96516 na 64-bitowym hoście Windows 7.

robocop
źródło
1
Działa to tylko dlatego, że Grub miał również starszą obsługę (MBR).
Paul Stelian,
4

Skopiuj grubx64.efido /EFI/boot/bootx64.EFI
VirtualBox, użyj go bootx64.efido uruchomienia.
Ref .: Archlinux Virtualbox wiki

cylgalad
źródło
ta. Działa to, ale jeśli plik grubx64.efi zostanie zaktualizowany, plik bootx64.efi zostanie opatrzony datą. link do wersji kodu źródłowego: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn
Ten jest bardziej płynny niż edytowanie metody startup.nsh , ale w rzeczywistości nie zostanie automatycznie zaktualizowany i nie można również użyć dowiązania symbolicznego, ponieważ jest to partycja FAT32.
Giorgi Gzirishvili
1

Mógłbym rozwiązać ten problem, zmieniając urządzenie cdrom w virtualbox z IDE na SATA. Usunąłem standardowe mapowanie wirtualnego napędu cdrom w konfiguracji urządzenia.

Po prostu dodaj urządzenie cdrom do istniejącego kontrolera SATA, który będzie używany jako nośnik instalacyjny.

Et voila, żadnych dalszych problemów z EFI.

Laurent
źródło
1

Ostatnio napotkałem ten problem. Sprawdź ustawienia swojego wirtualnego systemu operacyjnego. Kliknij prawym przyciskiem myszy wirtualny os-> system-> Funkcje rozszerzone-> Włącz EFI (odznacz to).wprowadź opis zdjęcia tutaj

Sudip7
źródło
8
Jak to jest rozwiązanie, jeśli chce się korzystać z UEFI?
zygimantus,
+1: To rozwiązało mój problem. Sprawdziłem eksperymentalnie opcję Włącz EFI i zapomniałem o tym.
wallyk
1

w tym celu należy napisać w następujący sposób:

fs0:
cd EFI
cd ubuntu
grubx64

tak mam to do pracy, jeśli napiszesz to w inny sposób, to nie zadziała.

Dan Duncker
źródło
1

Kolejne obejście:

W powłoce uefi uruchom tymczasowo system Ubuntu, używając:

fs0:
cd EFI
cd ubuntu
grubx64

Następnie w Ubuntu edytuj plik startup.nsh jak poniżej:

Otwórz terminal Ctrl+ Alt+ T.

Rodzaj:

sudo nano /boot/efi/startup.nsh

Wprowadź hasło.

Teraz usuń wszystko, co tam jest, używając klawisza Del lub Backspace.

Następnie wpisz dokładnie: ( FS0- to cyfra 0, a nie alfabet O)

FS0:
\EFI\ubuntu\grubx64.efi

Teraz naciśnij Ctrl+ O(To jest alfabet O).

Następnie Alt+ D(aby zmienić tekst na format msdos).

Następnie naciśnij Enter.

Następnie Ctrl+ X.

Teraz uruchom ponownie.

sudo reboot

Teraz wszystko powinno być w porządku.

Ddm
źródło
1

Używając Ubuntu 16.04.4 z włączonym EFI i podczas uruchamiania maszyny wirtualnej stwierdziłem, że nie uruchomi się ona i pozostanie w interaktywnej powłoce EFI.

Oto jak naprawiłem boot:

Najpierw odkryłem, że grubx64.efi znajduje się w BLK2, więc dla jednorazowego rozruchu po prostu wpisałem następujące w interaktywnej powłoce:

BLK2:/EFI/ubuntu/grubx64.efi

I viola, Ubuntu jest gotowe do pracy.

Rozkazuję na stałe naprawić ten problem. Po uruchomieniu systemu powtórzyłem następujący wiersz w pliku /boot/efi/startup.nsh.

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

To wszystko, system uruchomi się poprawnie.

Yaron Morad
źródło
0

Po zainstalowaniu Kubuntu15.10 w VirtualBox5 z UEFI ponowne uruchomienie maszyny wirtualnej kończy się niepowodzeniem.

Dodanie linii

FS0: \ EFI \ ubuntu \ grubx64.efi
w UEFI-Shell nie pomaga.

I rozwiązanie z utworzeniem nowego pliku startup.nsh w Kubuntu15.10 w środowisku chroot z

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
nie daje też żadnej poprawy.

Znalazłem rozwiązanie:

Problem polegał na tym, że katalog / boot / efi / EFI / ubuntu z plikiem grubx64.efi nie istnieje.

Po uruchomieniu Live-CD i przejściu do środowiska chroot zainstalowałem brakujące pakiety i utworzyłem potrzebny wpis NVRAM za pomocą:

sudo apt-get install grub-efi-amd64-podpisany shim-podpisany
aktualizacja sudo-grub
sun312
źródło
0

W celu zdefiniowania lub zmiany katalogu rozruchowego efi należy najpierw uruchomić tę komendę. To rozwiązało mój problem.

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

UWAGA: /dev/sdasystemowy dysk twardy.

użytkownik945376
źródło