[Tip] Crear una entrada en el GRUB manualmente

Hace poco compré un disco SSD para el portátil, con un puerto msata que es muy cómodo si la placa base del ordenador lo soporta, ya que añades capacidad de almacenamiento y no tienes que sacrificar el lector de CDs.

Bueno, el caso es que quería empezar de cero y alojar en ese disco las particiones del sistema EFI (ESP), la partición /boot para el grub, y demás. Esta vez opté por descargar Manjaro en vez de Antergos por cambiar un poco, que ya llevaba casi tres años con él instalado. El instalador Calamares está bastante guiado, y todo parecía ir bien, pero al iniciar… ¡sorpresa!, la partición EFI que había creado no era reconocida y la BIOS no encontraba con qué arrancar (salvo el USB con el que lo instalé).

Tras probar varias veces la misma rutina de instalación, empecé a buscar y finalmente opté por tocar a mano las entradas EFI del sistema y añadir una para iniciar el grub que instalaba Manjaro. El caso es que en la partición EFI sí que estaban los archivos necesarios para iniciar, pero no servía de mucho si el sistema no encontraba el fichero al que apuntar.

En estos casos, la mejor herramienta que te puedas encontrar es efibootmgr (algo así como gestor de arranque EFI). Tiene varias opciones, entre las cuales tenemos el crear una nueva entrada. El comando es el siguiente:

efibootmgr –create –disk /dev/sdb –part 1 –loader /EFI/Manjaro/grubx64.efi –label “Grub Manjaro”

NOTA: Es importante reemplazar en este comando los guiones por guiones dobles: -- y las comillas de la etiqueta, por comillas rectas: " debido a un problema de WordPress
En mi caso, el disco SSD está en la dirección /dev/sdb (importante, es el disco, no la partición EFI) y la partición EFI es la primera de ese disco. La otra parte importante es la ruta donde se encuentra el loader, que en el caso de Manjaro, se instala en /EFI/Manjaro/grubx64.efi.

El manual de efibootmgr, man efibootmgr arroja más riqueza de opciones, como por ejemplo, la de configurar el timeout, o el orden de arranque, sin necesidad de tener que entrar a configurarlo directamente en la BIOS.

Comandos para recuperar: grub rescue

Pues el otro día estuve enredando con las particiones, incluso con la partición que se encargaba de iniciar el sistema. No había tocado nada sensible, simplemente creo que cambió la denominación de cada una de las particiones.

El caso es que al reiniciar me salía un “bonito” prompt que decía algo así como

Welcome to GRUB!
Error: /dev/sda4 not found
grub-rescue>

Bueno, lo intento con help… nada: command not found. No funcionaba ni halt, ni restart… Busco en Google (con el móvil esta vez) y me entero de algunos comandos, como ls y set que se usan para recuperar. Buscando un poco encontré un enlace a la página oficial del proyecto en gnu.org y ya, leyendo el manual y siguiendo todos los pasos indicados, pude iniciar el sistema con normalidad. Esta serie de comandos (que explico con comentarios después de ‘#’)  es la siguiente:

ls
set #muestra los valores que hemos configurado
set prefix=(hd0,msdos1)/grub #ver sistemas en ls
set root=(hd0,msdos1)
insmod normal
normal

Simplemente lo que hay que sustituir es (hd0,msdos1) por los valores que necesitemos aplicar. Importante: Estos valores son los que tira el comando ls, no pongas otros, porque no funcionará. En mi caso el comando ls mostraba valores del tipo “(hd0, msdos1), (hd0, msdos2)…”, pero dependerá del sistema ya que en otros muestra: “(hd0, 1),(hd0,2)…”

Ahora, ya que habéis podido iniciar, os propongo dos soluciones: o hacer esto cada vez que quieras abrir el sistema operativo, o en su defecto, reinstalar el grub para solucionarlo todo definitivamente:

sudo grub-install /dev/sda

Fuente | GNU.org | Off you go…

Saludos 🙂

Todo sobre el GRUB

Hola. Gracias al excelente trabajo de  Grabiel Muñoz en el foro de Ubuntu.es he conseguido toda esta información del GRUB. Cómo instalar, modificar y todo su funcionamiento al completo. Si queréis ver el archivo original está aquí.

El GRUB

Antes de que Linux pueda iniciar el sistema, se le debe indicar que para el arranque utilice una serie de instrucciones especiales que se encuentran en un gestor de arranque, un código existente en el disco duro principal u otro dispositivo de soporte que tenga información sobre cómo arrancar el kernel de Linux. Continuar leyendo “Todo sobre el GRUB”