VirtualBox si avvia solo nella shell UEFI Interactive


49

Ho installato Ubuntu 14.10 in VirtualBox con UEFI. Ma ora ho riavviato questo sistema operativo e ora si avvia in UEFI Interactive Shell v2.0. Come posso riavviare normalmente in Grub?


Buone notizie a tutti, con VirtualBox 5.1 le soluzioni alternative non sono più necessarie. Potrebbe essere sufficiente aggiungere una nuova voce EFI (manuale usando efibootmgro automaticamente reinstallando grub) in modo da riavviare Ubuntu immediatamente.
phk,

2
Anche con 5.1, le modifiche alle variabili efi, come l'impostazione di avvio richiesta efibootmgrvengono perse dopo l'arresto (rimangono comunque al riavvio).
Chappjc,

1
5.1.30 esiste ancora. Anche se la correzione è semplice, ma devo ripararla ogni volta dopo aver installato debian & ubuntu.
CallMeLaNN,

Risposte:


52

Ho riscontrato lo stesso problema e ho scoperto che se emettevo il seguente comando nella shell interattiva, la macchina virtuale si avviava in Ubuntu:

fs0:\efi\ubuntu\grubx64.efi

(Utilizzare la barra rovesciata, la barra in avanti non funziona. I comandi nella shell interattiva UEFI non fanno distinzione tra maiuscole e minuscole.)

La mia versione di VirtualBox è 4.3.20 r96997, la versione Ubuntu è 14.10 AMD64. Non so perché questo accada e come risolverlo. Ho appena trovato questa soluzione alternativa non elegante e ancora un po 'problematica.

Aggiornamento 1:

Ho letto questo , rintracciato in una segnalazione di bug e ho trovato una soluzione alternativa migliore .

Aggiornamento 2:

Soluzione alternativa nell'aggiornamento 1 non riuscita. Ho spento la macchina virtuale, l'ho avviata. E si è avviato nuovamente nella shell UEFI Interactive. In base a ciò , il problema era probabilmente causato da un bug di VirtualBox. Sto ancora cercando un'ulteriore soluzione a questo.

Aggiornamento 3:

Finalmente ho trovato una soluzione. Secondo questo , è necessario creare uno script startup.nsh manualmente. Fatta eccezione per il metodo nel post citato, puoi anche fare questo:

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

3
"Al momento non è possibile manipolare le variabili EFI dall'interno di un guest in esecuzione" La soluzione del secondo aggiornamento per spostare qualsiasi bootloader che si desidera utilizzare su ESP\EFI\boot\bootx64.efisuona come la soluzione migliore per me rispetto allo spreco di 5 soci che si avvia all'avvio.nsh . Nota: è possibile premere F12 durante l'avvio o accedereexitalla shell EFI per accedere alle impostazioni del firmware e modificare tutti i tipi di cose, inclusa la risoluzione del terminale, ma queste modifiche non vengono memorizzate in modo permanente.
LiveWireBT

Dopo aver emesso il comando nella shell interattiva, è possibile installare refindper correggere EFI
Eduardo,

1
Buono a sapersi che è un bug. Semplicemente edit startup.nsh. +1 Sta cercando \EFI\boot\bootx64.efidi saltare il 5sec.
CallMeLaNN,

1
Copia e rinomina \EFI\ubuntu\shimx64.efiin \EFI\boot\bootx64.efiè il migliore. credito
CallMeLaNN

L'aggiornamento 3 l'ha fatto per me ....
cljk,

32

Ho avuto lo stesso problema (con EFI abilitato perché non riuscivo a farlo funzionare diversamente). Strano; sebbene l'installazione di Ubuntu 14.04.2 non abbia avuto errori, l'installazione di Kubuntu 15.04 non è stata completata. Alla fine si è bloccato quando è stato chiesto di rimuovere il DVD. Dopo il ripristino, si è avviato correttamente ma dopo lo spegnimento ha portato alla shell.

Quindi, per evitare il tipo di shell:

fs0:
modifica startup.nsh

e nella finestra aperta aggiungi queste 2 righe:

FS0:
\ EFI \ ubuntu \ grubx64.efi

premi Ctrl+ se Enterper salvare e Ctrl+ qper uscire. Quindi riavviare la VM.

In alternativa, puoi sempre usare queste 2 linee per uscire dalla shell e avviare il sistema operativo. Ma la seconda volta che riavvierai sarai di nuovo in una shell e per evitarlo modifica startup.nsh.


Digitando il comando funziona, ma il problema è che al prossimo riavvio si passa nuovamente a quella shell e il file startup.nsh non sembra essere salvato.
Igor Čordaš,

Per salvare il file startup.nsh devi usare Ctrl + S per salvare e premere Invio per scrivere sul file.
Willoczy,

2
Nel caso in cui non si utilizzi Ubuntu, è possibile capire il percorso corretto per il proprio computer utilizzando lsnella shell UEFI. Ad esempio ls FS0:\EFI, quindi ls FS0:\EFI\redhat, per imparare il percorso è FS0:\EFI\redhat\grub.efisu CentOS.
ntc2,

1
@ ntc2 Grazie, era esattamente quello che stavo cercando! Per la mia installazione di Slackware lo era FS0:\EFI\Slackware\elilo.efi.
fabiomaia,

11

Un'altra opzione è deselezionare l'opzione Funzioni estese denominata "Abilita EFI" in "Scheda madre" per la VM.

Se questo problema si presentasse per l'installazione di Gnome Ubuntu 12.04.2 amd64bit.

L'ho scoperto dopo aver dovuto modificare le impostazioni per l'accelerazione hardware. Mi è rimasto con VT-x / AMD-V abilitato per il paging nidificato. La mia VM ha 2 CPU, 8 GB di RAM per riferimento.

Dopo aver annullato il controllo, il problema viene completamente ignorato. Gnome Ubuntu si avvia senza problemi. Esecuzione di Virtual Box 4.3.18 r96516 su host Windows 7 a 64 bit.


1
Questo funziona solo perché Grub aveva anche il supporto legacy (MBR).
Paul Stelian,

4

Copia grubx64.efisu /EFI/boot/bootx64.EFI
VirtualBox usalo bootx64.efiper l'avvio.
Rif .: Archlinux Virtualbox wiki


ta. Funziona ma se grubx64.efi viene aggiornato, bootx64.efi sarà datato. collegamento a una versione del codice sorgente: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn

Questo è più semplice della modifica del metodo startup.nsh , ma in realtà non verrà aggiornato automaticamente e non è possibile utilizzare il collegamento simbolico perché è una partizione FAT32.
Giorgi Gzirishvili,

1

Ho potuto risolvere questo problema cambiando il dispositivo cdrom all'interno di virtualbox da IDE a SATA. Ho rimosso la mappatura standard dell'unità cdrom virtuale all'interno della configurazione del dispositivo.

È sufficiente aggiungere un dispositivo cdrom al controller SATA esistente che deve essere utilizzato per il supporto di installazione.

Et voilà, nessun ulteriore problema con EFI.


1

Di recente ho riscontrato questo problema. Controlla le impostazioni del tuo sistema operativo virtuale. Fare clic con il tasto destro su sistema operativo virtuale-> sistema-> Funzionalità estese-> Abilita EFI (deselezionare questa opzione).inserisci qui la descrizione dell'immagine


8
In che modo questa è una soluzione se si desidera utilizzare UEFI?
zygimantus,

+1: Questo ha risolto il mio problema. Avevo verificato sperimentalmente Abilita EFI e me ne ero dimenticato.
Wallyk,

1

per questo è necessario scriverlo come segue:

fs0:
cd EFI
cd ubuntu
grubx64

è così che ho funzionato se lo scrivevi in ​​un altro modo non funzionerà.


1

Un'altra soluzione:

Nella shell uefi, avvia temporaneamente Ubuntu usando:

fs0:
cd EFI
cd ubuntu
grubx64

Quindi, all'interno di Ubuntu, modifica il file startup.nsh come di seguito:

Apri terminale Ctrl+ Alt+ T.

Genere:

sudo nano /boot/efi/startup.nsh

Inserisci la tua password.

Ora elimina tutto quello che c'è dentro usando il tasto del o backspace.

Quindi digitare esattamente questo: ( FS0- questo è il numero 0, non l'alfabeto O)

FS0:
\EFI\ubuntu\grubx64.efi

Ora premi Ctrl+ O(ovvero l'alfabeto O).

Quindi, Alt+ D(per modificare il testo in formato msdos).

Quindi premere Enter.

Quindi Ctrl+ X.

Ora riavvia.

sudo reboot

Ora dovrebbe andare tutto bene.


1

Usando Ubuntu 16.04.4 con EFI abilitato e durante l'avvio della macchina virtuale ho scoperto che non si avvia e rimane nella shell interattiva EFI.

Ecco come ho riparato l'avvio:

Innanzitutto, ho scoperto che grubx64.efi si trova in BLK2, quindi per un avvio una volta ho appena digitato quanto segue nella shell interattiva:

BLK2:/EFI/ubuntu/grubx64.efi

E viola, Ubuntu è attivo e funzionante.

Ordino di risolvere permanentemente questo problema, una volta avviato il sistema ho fatto eco alla riga seguente in /boot/efi/startup.nsh.

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

Ecco fatto, il sistema si avvierà correttamente.


0

Dopo aver installato Kubuntu15.10 in VirtualBox5 con UEFI, il riavvio della VM non riesce.

Aggiungere la linea

FS0: \ EFI \ ubuntu \ grubx64.efi
nella UEFI-Shell non aiuta.

E la soluzione con la creazione di un nuovo file startup.nsh in Kubuntu15.10 nell'ambiente chroot con

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
non dà alcun miglioramento.

Ho trovato la soluzione:

Il problema era che la directory / boot / efi / EFI / ubuntu con il file grubx64.efi non esiste.

Dopo aver avviato un Live-CD e cambiato l'ambiente chroot, ho installato i pacchetti mancanti e ho creato la voce NVRAM necessaria con:

sudo apt-get install grub-efi-amd64-firmato shim-firmato
sudo update-grub

0

Per definire o modificare la directory di avvio di efi è necessario prima eseguire questo comando. Questo ha risolto il mio problema.

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

NOTA: /dev/sdaè il disco rigido del sistema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.