Ir al contenido
  1. Posts/

Grub Inutilizable Después de Actualizar EndeavourOS (UEFI)

·699 palabras·4 mins· loading · loading ·
Linux Uefi Grub Linux
Autor
Enmanuel Moreira
Ingeniero DevOps de día y aprendiz de Barman en mis tiempos libres, con experiencia en Kubernetes, Cloud, y DevOps. También disfruta de hacer stream de juegos, hablar de CI/CD, desplegar en producción un viernes con Terraform y automatizar tareas aburridas con Ansible.

Hoy me acaba de ocurrir un pequeño incidente actualizando EndeavourOS. La versión de Grub 2.06.r322 hace que este se vuelva inutilizable, por lo que les cuento como hice para solucionarlo.

Es posible pérdida de datos al ejecutar los comandos a continuación. Por lo que sugiero hacer una copia de seguridad antes de proceder.

PROMO DigitalOcean
#

Antes de comenzar, quería contarles que hay una promoción en DigitalOcean donde te dan un crédito de USD 200.00 durante 60 días para que puedas probar los servicios que este Proveedor Cloud ofrece. Lo único que tienes que hacer es suscribirte a DigitalOcean con el siguiente botón:

DigitalOcean Referral Badge
O a través del siguiente enlace: https://bit.ly/digitalocean-itsm

Crear Live USB de EndeavourOS
#

Primero descargamos la imagen ISO de EndeavourOS desde la página oficial: https://github.com/endeavouros-team/ISO/releases/download/1-EndeavourOS-ISO-releases-archive/EndeavourOS_Artemis_neo_22_7.iso

Ahora creemos el Live USB, hay varias alternativas pero la que más me gusta es con dd Necesitaremos un pendrive de al menos 8GB de espacio, conectamos el pendrive al equipo y averiguemos en que dispositivo lo reconoce Linux con fdisk:

sudo fdisk -l

En mi caso particular, es un USB de 32GB el cual lo reconoce como /dev/sdc:

Disco /dev/sdc: 28,82 GiB, 30943995904 bytes, 60437492 sectores
Modelo de disco: DataTraveler 3.0
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0x593e4509

Disposit.  Inicio Comienzo   Final Sectores Tamaño Id Tipo
/dev/sdc1  *            64 3564735  3564672   1,7G  0 Vacía
/dev/sdc2          3564736 3777727   212992   104M ef EFI (FAT-12/16/32)

Ya con esta información, procederemos a crear el Live USB:

sudo dd if=/home/usuario/EndeavourOS_Artemis_neo_22_7.iso of=/dev/sdc bs=4k status=progress

Donde:

  • if=/home/usuario/EndeavourOS_Artemis_neo_22_7.iso es la ruta donde se encuentra ubicado nuestra imagen ISO de EndeavourOS.
  • of=/dev/sdc es el dispositivo que Linux reconoce como nuestro pendrive.
  • bs=4k es un parametro en el que le indicamos que lea y escriba de a 4 Kilobytes entre origen y destino.
  • status=progress que nos muestre el progreso de la escritura.

Arrancar el Live USB y montando Sistema de Archivos
#

Arranquemos el Live USB y cuando haya cargado, abrimos una terminal y ejecutamos fdisk para saber en que disco se encuentra la partición de arranque:

sudo fdisk -l
Disco /dev/sdb: 447,14 GiB, 480113590272 bytes, 937721856 sectores
Modelo de disco: WDC WDS480G2G0B-
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: gpt
Identificador del disco: 7855884A-F57E-4513-8930-CB23D4ABF296

Disposit.  Comienzo     Final  Sectores Tamaño Tipo
/dev/sdb1      2048   2099199   2097152     1G Sistema EFI
/dev/sdb2   2099200 937721822 935622623 446,1G Sistema de ficheros de Linux

Nuevamente en mi caso particular, tengo mi partición de arranque separada de la partición Raíz. En caso de que ninguna partición que tengas te muestra el Tipo: Sistema EFI, es porque lo tienes en una sola partición.

Ahora, montamos tanto la partición Raíz como la partición EFI en el directorio /mnt:

sudo mount /dev/sdb2 /mnt/boot/efi
sudo mount /dev/sdb1 /mnt

Solo en caso que tuvieres una sola partición:

sudo mount /dev/sdX1 /mnt

Y luego entramos en modo chroot al sistema de archivos:

sudo arch-chroot /mnt

Reinstalando Grub
#

A partir de aquí es solo ejecutar:

sudo grub-install

Tardará unos segundos hasta que haya instalado Grub nuevamente.

Una vez finalice, nos desconectamos del sistema de archivos:

exit

Y reiniciamos nuestro equipo.

Si por alguna razón, aún no me hemos actualizado nuestro sistema, una vez realizado, ejecutamos:

sudo grub-install

Para que vuelva a regenerar el grub y no sea necesario tener que hacer los pasos anteriores.

¿Qué Causó Todo esto?
#

Según podemos leer en esta entrada del blog de EndeavourOS, la falla la ocasionó con un commit desde el proyecto Grub donde se introduce una nueva llamada a fwsetup --is-supported en el archivo /etc/grub.d/30_uefi-firmware la cual en la versión de grub que tenemos instalada antes de la actualización no soportaba, lo cual ocasionará que falle al cargar el menu de arranque, por lo que se tiene que hacer de manera manual la reinstalación de grub.

Espero les haya gustado, ¡hasta la próxima!

Referencias
#