uefi-d

Recuperar el arranque UEFI con UEFI Shell

Desde que UEFI llegó a nuestros ordenadores reconozco que no he tenido mucho tiempo para trastear con él. Debido a un problema que tuve con mi Slimbook Katana tuve que meterme en faena para recuperar el arranque UEFI. Vamos a ver en este artículo cómo recuperar el arranque de nuestro sistema con la UEFI Shell.

El caso es que quería arrancar un USB con una distro Live que tenía hecho de hacía algún tiempo y necesitaba configurar el arranque en modo Legacy. Cuál fue mi sorpresa cuando al volver a activar el arranque UEFI la entrada donde se especifica el archivo .efi para arrancar el sistema había desaparecido. Lo único que podía ver era una pantalla llamada UEFI Interactive Shell.
Aún no se si es algo que pasa sólo en mi Katana o es generalizado en todas las placas UEFI, pero es un fastidio que se borre este dato cada vez que cambiamos el boot entre UEFI y Legacy.

Nota: Las capturas son de una máquina virtual pero el proceso en una máquina real es el mismo aunque es posible que cambien algunos nombres.

 

¿Qué es la UEFI Interactive Shell?

Básicamente es una shell (véase una terminal donde podemos introducir comandos) con la que podemos interaccionar y hacer scripts para el sistema EFI (Extensible Firmware Interface) para cambiar las opciones de arranque, ejecutar código adicional y muchas otras cosas. Recordemos que UEFI es básicamente un EFI 2.x así que dependiendo de la versión de nuestra Shell UEFI tendremos más o menos opciones implementadas.

 

Recuperación del arranque con UEFI Shell

Cuando hemos perdido la entrada en el boot que apunta al archivo .efi de nuestro sistema, al encender el equipo lo único que vemos es la UEFI Shell que tiene una pinta similar a esta:

 

uefi-shell-1

 

Unidades mapeadas

Si nos fijamos en las primeras letras amarillas, Mapping table, son los dispositivos mapeados y sus respectivos nombres. Los que empiezan por FSx (File System) son los medios de almacenamiento, siendo el 0 el primero. Si sólo tenemos un disco, lo normal es que sólo esté fs0.
Esto puede cambiar, si por ejemplo instalamos nuestro sistema en un segundo disco podría llamarse fs1 y así sucesivamente.
Si perdemos estos datos de vista en la pantalla siempre podemos volver a verlos escribiendo en la shell la orden map.

 

Cómo movernos por los directorios

La shell es similar a la de MS-DOS o Unix. Si escribimos en ella fs0: accederemos a la unidad fs0 y dentro nos podemos mover con cd para cambiar de directorio y con dir o ls para listar el contenido de los directorios.

Otra cosa importante es que la shell está en inglés así que pongo un resumen de los símbolos que vamos a necesitar y donde están en el teclado cuando este está en inglés:

  • Los dos puntos : están en ñ
  • La barra invertida \ está en ç
  • El guión está en o ?
  • La barra / está en

 

Localizando el archivo .efi

Lo primero es entrar en fs0 escribiendo como mencioné antes fs0: y mediante dir o ls buscar el archivo .efi que en caso de GNU/Linux de 64bits se llamará grubx64.efi y en caso de Windows se llamará bootx64.efi.

Los pasos serían: escribimos fs0: y una vez dentro escribimos ls (también vale dir). Veremos casi seguro que hay una carpeta EFI. Si no la hay es porque fs0 no es el disco de arranque y quizá sea fs1 u otro nombre. Si sí que existe escribimos ahora cd EFI y entraremos dentro de EFI. Ahora volvemos a escribir ls y veremos otra carpeta con el nombre de nuestra distribución o en el caso de Windows veremos una llamada Boot. Escribimos otra vez cd [espacio] el nombre de la carpeta y otra vez ls para ver que dentro hay un archivo .efi. ¡Ya lo tenemos!, apuntamos la ruta completa incluyendo el nombre del archivo .efi.

En BunsenLabs que es la distro con la que he hecho las pruebas la ruta de este archivo es (Ojo que las barras son invertidas): fs0:\EFI\bunsenlabs\grubx64.efi

Para el caso de Debian por ejemplo es: fs0:\EFI\debian\grubx64.efi

En Windows por ejemplo es: fs0:\EFI\Boot\bootx64.efi

 

BCFG es lo que buscamos

La instrucción que nos permite modificar las entradas en el boot es bcfg (Boot Config). Para ver el estado actual del arranque escribimos:

bcfg boot dump

El resultado será similar al de la imagen

 

uefi-shell-2

 

Vemos la entrada 00 para el DVD, la 01 para el Hard Drive (pero no es la que nos interesa) y la 02 para la EFI Shell. Nosotros tenemos que añadir una nueva entrada que apunte al archivo .efi que arranca nuestro sistema.

 

Añadiendo la entrada en el boot

Una vez localizado el archivo .efi veremos que si lo ejecutamos arranca el sistema, pero al reiniciar volveremos a ver la UEFI Shell. Para guardar una entrada que apunte a este archivo en el boot de forma permanente escribiremos:

bcfg boot add 0 fs0:\EFI\DISTRO\grubx64.efi "ETIQUETA"

Lo que le estamos diciendo a bcfg es que añada una entrada en el boot en la posición 0 que apunte al archivo que arranca nuestro sistema con la etiqueta que queramos entre comillas, puede ser cualquiera. Por lo general bastará con sustituir DISTRO por la nuestra en caso de GNU/Linux aunque esta ruta puede variar.

En el caso de Debian por ejemplo sería:

bcfg boot add 0 fs0:\EFI\debian\grubx64.efi "Debian"

En el caso de Windows 10 sería:

bcfg boot add 0 fs0:\EFI\Boot\bootx64.efi "Windows"

El resultado de introducir esta orden será similar al de la siguiente imagen

 

uefi-shell-3

 

Tras realizar estos pasos, para salir de la shell escribimos simplemente exit y nuestro sistema arrancará de nuevo.

 

Otras opciones de la UEFI Shell

Para ver la ayuda de la shell escribimos help y para ver la ayuda de un comando específico escribimos help [comando].

Para ver las unidades mapeadas usamos map.

Podemos borrar una entrada, por ejemplo la 0:

bcfg boot rm 0

Podemos mover si es necesario el orden de las entradas, por ejemplo mover la 3 a la posición 0:

bcfg boot mv 3 0

También podemos editar archivos de texto con edit. Para más ayuda del editor Ctrl-E.

Más información sobre los comandos de la EFI Shell aquí.

 

Esto ha sido todo por hoy. Espero que os haya resultado útil la entrada.

Si te ha gustado este artículo te recomiendo la lectura de la mini review que hice Slimbook – Un ultraportátil con Linux.

También te puede interesar Reinstalando Grub de forma indolora.

 

Saludos linuxeros 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.