VirtualBox arranca solo en el shell interactivo UEFI

49

Instalé Ubuntu 14.10 en VirtualBox con UEFI. Pero ahora he reiniciado este sistema operativo y ahora se inicia en un UEFI Interactive Shell v2.0. ¿Cómo puedo iniciar normalmente en Grub nuevamente?

Benjamin Stütz
fuente
Buenas noticias para todos, con VirtualBox 5.1 ya no se necesitan soluciones alternativas. Es posible que solo tenga que agregar una nueva entrada EFI (usando manualmente efibootmgro automáticamente reinstalando grub) para que arranque Ubuntu de inmediato.
phk
2
Incluso con 5.1, los cambios en las variables efi, como la configuración de arranque requerida, efibootmgrse pierden después del apagado (aunque permanecen en el reinicio).
chappjc
1
5.1.30 todavía existe. Aunque la solución es fácil, tengo que arreglarla cada vez que instalo Debian y Ubuntu.
CallMeLaNN

Respuestas:

52

Encontré el mismo problema y descubrí que si emitía el siguiente comando en el shell interactivo, la máquina virtual se iniciaría en Ubuntu:

fs0:\efi\ubuntu\grubx64.efi

(Utilice la barra diagonal inversa, la barra diagonal inversa no funciona. Los comandos en el shell interactivo UEFI no distinguen entre mayúsculas y minúsculas).

Mi versión de VirtualBox es 4.3.20 r96997, la versión de Ubuntu es 14.10 AMD64. No sé por qué sucede esto y cómo resolverlo. Acabo de encontrar esta solución no elegante y todavía un poco problemática.

Actualización 1:

Leí esto , rastreé hasta un informe de error y encontré una mejor solución .

Actualización 2:

La solución en la Actualización 1 falló. Apagué la máquina virtual y la lancé. Y se reinició en UEFI Interactive shell nuevamente. De acuerdo con esto , el problema probablemente fue causado por un error de VirtualBox. Todavía estoy buscando otra solución para esto.

Actualización 3:

Finalmente encontré una solución. De acuerdo con esto , debe crear un script startup.nsh manualmente. Excepto por el método en la publicación mencionada, también puede hacer esto:

$ sudo mount /dev/sda1 /mnt
$ cd /mnt
$ sudo sh -c "echo '\EFI\ubuntu\grubx64.efi' > startup.nsh"
Nairen Zheng
fuente
3
"Actualmente no es posible manipular las variables EFI desde un invitado en ejecución" La solución en su segunda actualización para mover cualquier gestor de arranque que quiera usar en el ESP me\EFI\boot\bootx64.efiparece la mejor solución que desperdiciar 5 segundos esperando por startup.nsh . Nota: Puede presionar F12 durante el arranque o ingresarexiten el shell EFI para acceder a la configuración del firmware y modificar todo tipo de cosas, incluida la resolución del terminal, pero estas modificaciones no se almacenan permanentemente.
LiveWireBT
Después de emitir el comando en el shell interactivo, puede instalarlo refindpara arreglar EFI
Eduardo
1
Es bueno saber que es un error. En pocas edit startup.nsh. +1 Se busca \EFI\boot\bootx64.efiomitir los 5 segundos.
CallMeLaNN
1
Copiar y renombrar \EFI\ubuntu\shimx64.efia \EFI\boot\bootx64.efies la mejor. crédito
CallMeLaNN
La actualización 3 lo hizo por mí ...
cljk
32

Tuve el mismo problema (con el EFI habilitado porque de lo contrario no podría ejecutarlo). Extraño; aunque la instalación de Ubuntu 14.04.2 no obtuvo ningún error, la instalación de Kubuntu 15.04 no pudo finalizar. Se congeló al final cuando se le pidió que retirara el DVD. Después de reiniciar, arrancó bien, pero después de apagarlo, apareció el shell.

Entonces, para evitar el tipo de shell:

fs0:
editar startup.nsh

y en la ventana abierta agregue estas 2 líneas:

FS0:
\ EFI \ ubuntu \ grubx64.efi

presione Ctrl+ sy Enterpara guardar y Ctrl+ qpara salir. Luego reinicie VM.

Alternativamente, siempre puede usar estas 2 líneas para salir del shell y arrancar el sistema operativo. Pero la segunda vez que reinicie, volverá a estar en un shell y para evitar que se edite startup.nsh.

VRR
fuente
Escribir el comando funciona, pero el problema es que en el próximo reinicio vuelve a ir a ese shell y el archivo startup.nsh no parece estar guardado.
Igor Čordaš
Para guardar el archivo startup.nsh, debe usar Ctrl + S para guardar y presionar Entrar para escribir en el archivo.
Willoczy
2
En caso de que no esté usando Ubuntu, puede encontrar la ruta correcta para su máquina usando lsel shell UEFI. Por ejemplo ls FS0:\EFI, ls FS0:\EFI\redhataprender el camino está FS0:\EFI\redhat\grub.efien CentOS.
ntc2
1
@ ntc2 ¡Gracias, eso era exactamente lo que estaba buscando! Para mi instalación de Slackware lo fue FS0:\EFI\Slackware\elilo.efi.
fabiomaia
11

Otra opción es desmarcar la opción Funciones ampliadas llamada 'Habilitar EFI' en 'Placa base' para su VM.

Este problema surgió para la instalación de Gnome Ubuntu 12.04.2 amd64bit.

Descubrí esto después de tener que cambiar la configuración para la aceleración de hardware. Me quedé con VT-x / AMD-V, paginación anidada habilitada. Mi VM tiene 2 CPU, 8 GB de RAM como referencia.

Después de desmarcar el problema, se pasa por alto por completo Gnome Ubuntu arranca sin problemas. Ejecutando Virtual Box 4.3.18 r96516 en Windows 7 Host de 64 bits.

robocop
fuente
1
Esto solo funciona porque Grub también tenía soporte heredado (MBR).
Paul Stelian
4

Copiar grubx64.efia /EFI/boot/bootx64.EFI
VirtualBox usar eso bootx64.efipara arrancar.
Ref .: Wiki Archlinux Virtualbox

cylgalad
fuente
ejército de reserva. Esto funciona, pero si grubx64.efi se actualiza, bootx64.efi tendrá fecha. enlace a una versión del código fuente: github.com/mdaniel/virtualbox-org-svn-vbox-trunk/blob/…
philcolbourn
Este es más sencillo que editar el método startup.nsh , pero de hecho no se actualizará automáticamente y tampoco puede usar el enlace simbólico porque es una partición FAT32.
Giorgi Gzirishvili
1

Podría resolver este problema cambiando el dispositivo cdrom dentro de virtualbox de IDE a SATA. Eliminé la asignación estándar de la unidad virtual cdrom dentro de la configuración del dispositivo.

Simplemente agregue un dispositivo cdrom al controlador SATA existente que se utilizará para sus medios de instalación.

Et voila, no hay más problemas con EFI.

Laurent
fuente
1

Recientemente me encontré con este problema. Verifique la configuración de su sistema operativo virtual. Haga clic derecho en el sistema operativo virtual-> sistema-> Funciones ampliadas-> Habilitar EFI (desmarque esto).ingrese la descripción de la imagen aquí

Sudip7
fuente
8
¿Cómo es esta una solución si uno quiere usar UEFI?
zygimantus
+1: Esto resolvió mi problema. Había comprobado experimentalmente Habilitar EFI y lo olvidé.
wallyk
1

para esto necesitas escribirlo de la siguiente manera:

fs0:
cd EFI
cd ubuntu
grubx64

así es como lo hice funcionar si lo escribes de otra manera no funcionará.

Dan Duncker
fuente
1

Otro trabajo alrededor:

En el shell uefi, inicie temporalmente en ubuntu usando:

fs0:
cd EFI
cd ubuntu
grubx64

Luego, dentro de ubuntu, edite el archivo startup.nsh como se muestra a continuación:

Abrir terminal Ctrl+ Alt+ T.

Tipo:

sudo nano /boot/efi/startup.nsh

Ingresa tu contraseña.

Ahora elimine todo lo que está allí usando del o la tecla de retroceso.

Luego escriba esto exactamente: ( FS0- ese es el número 0, no el alfabeto O)

FS0:
\EFI\ubuntu\grubx64.efi

Ahora presione Ctrl+ O(Eso es alfabeto O).

Luego, Alt+ D(para cambiar el texto al formato msdos).

Luego presione Enter.

Entonces Ctrl+ X.

Ahora reiniciar.

sudo reboot

Todo debería estar bien ahora.

Ddm
fuente
1

Usando Ubuntu 16.04.4 con EFI habilitado y al iniciar la máquina virtual descubrí que no arrancará y solo permanecerá en el shell interactivo EFI.

Así es como arreglé el arranque:

Primero, descubrí que grubx64.efi se encuentra en BLK2, por lo que durante un arranque único escribí lo siguiente en el shell interactivo:

BLK2:/EFI/ubuntu/grubx64.efi

Y viola, Ubuntu está en funcionamiento.

Ordeno solucionar permanentemente este problema, una vez que el sistema estuvo activo, hice eco de la siguiente línea en /boot/efi/startup.nsh.

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

Eso es todo, el sistema se iniciará correctamente.

Yaron Morad
fuente
0

Después de instalar Kubuntu15.10 en VirtualBox5 con UEFI, el reinicio de la VM falla.

Agregar la línea

FS0: \ EFI \ ubuntu \ grubx64.efi
en el UEFI-Shell no ayuda.

Y la solución con la creación de un nuevo archivo startup.nsh en Kubuntu15.10 en el entorno chroot con

sudo echo '\ EFI \ ubuntu \ grubx64.efi'> startup.nsh 
tampoco da ninguna mejora.

Encontré la solución:

El problema era que el directorio / boot / efi / EFI / ubuntu con el archivo grubx64.efi no existe.

Después de iniciar un Live-CD y cambiar al entorno chroot, instalé los paquetes faltantes y creé la entrada necesaria de NVRAM con:

sudo apt-get install grub-efi-amd64 -igned shim -igned
sudo update-grub
sun312
fuente
0

Para definir o cambiar el directorio de arranque de efi, primero debe ejecutar este comando. Esto resolvió mi problema.

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

NOTA: /dev/sdaes el disco duro del sistema.

usuario945376
fuente