💾 Archived View for moribundo.flounder.online › blog › 046_reparar_grub.gmi captured on 2024-08-25 at 00:37:49. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-08-18)

-=-=-=-=-=-=-

- ENTRADA 046 -

Reparar Grub

Y ahora tenemos que reparar la traición de Garbo...
--- Fecha: dom 28 jul 2024 01:45:08 CEST---

Arrancas el equipo después de instalar o actualizar y.... NO ARRANCA. En la pantalla aparece un error con letras blancas sobre fondo negro a la par que notas los sudores de la muerte bajando por tu espalda.

Hay dos posibles problemas con grub, uno fácil y otro complicado.

Grub prompt

Es el problema más fácil de solucionar, ya que todo está bien, solo que alguna configuración es errónea. Sabrás que tienes este tipo de problema porque verás que aparece un prompt de grub. voy a empezar a meter comandos:

grub> ls
(hd0) (hd0,msdos2) (hd0,msdos1)

HD0 indica que solo hay un disco, ya que los discos se cuentan de 0 a 9, no de 1 a 10. Esta numeración es habitual en GNU, ¿recuerdas las 4 libertades del software, que van del 0 al 3? Pero veo que dentro de ese disco hay varias particiones, así que voy a buscar en cual de ellas hay algo usable:

grub> ls (hd0)
Device hd0: No known filesystem detected

grub> ls (hd0,msdos1)
Partition hd0,msdos1: No known filesystem detected

grub> ls (hd0,msdos2)
Partition hd0,msdos2: Filesystem type ext* ...

A la tercera va la vencida. Ya deberíamos conocer la nomenclatura usada en GNU/Linux. Sabemos que un disco 0 es sda, un disco 1 es sdb, etc, y sus correspondientes particiones, en este caso msdos1 y msdos2, pertenecen a las particiones 1 y 2, es decir, sda1 y sda2.

Así pues ahora toca cargar cosas al kernel.

grub> insmod linux
grub> linux /boot/vmlinuz-6.6.1-7-amd64 root=/dev/sda2

La segunda línea es la imagen del kernel de nuestro sistema, que podemos averiguarla desde un LiveCD, entrando en nuestro sistema, montando el disco y buscando en la carpeta /boot. También le decimos que el sistema va a estar en /dev/sda2, como vimos antes, que corresponde con hd0,msdos2

Ahora cargo la imagen. Esto a veces se demora un rato.

grub> initrd /boot/initrd.img-6.6.1-7-amd64
grub> boot --now

Ya tengo el sistema recuperado, pero no tengo mi configuración habitual, así que la genero, porque si ahora reinicio, volverá a fallar:

grub-mkconfig > /boot/grub/grub.cfg
update-grub

En caso de Archlinux:

grub-mkconfig -o /boot/grub/grub.cfg
NOTA: Decir que mkconfig coge la configuración que tenemos en /etc/default/grub

grub rescue

El peor escenario de todos. ¿Pero que leches has hecho para que te salga un rescue? Si te tira esto la pantalla, estás muerto/a.

Esto significa que el sistema no puede acceder a las imágenes del sistema porque estén corruptas o porque no existan (me pasó con Antergos y un bug de instalación).

Verás un error del tipo:

error: file '/boot/grub/i386-pc/normal.mod' not found.

Te está diciendo que no encuentra ningún módulo. Si quisiera cargarlo como en el ejemplo anterior, no podría, haz la prueba:

grub-rescue> insmod linux
error: file '/boot/grub/i386-pc/linux.mod' not found.

Y los sudores de la muerte ya son ríos de miedo. No queda otra que reinstalar grub, así que tendrás que tirar del pendrive que usaste para instalar el sistema. Si no lo tienes, vete a otro Pc, descarga """la misma distro que usas""", y métela en un pendrive para iniciar desde ahí.

NOTA: Digo de usar la misma distro que usas para el Live porque vas a tener que pasarle comandos a tu sistema. Si usas Archlinux y usas una Live de Debian, los comandos no son los mismos, una usa pacman y la otra apt-get

Una vez dentro del Live y como root, monto mi sistema en /mnt. Como sabemos que el disco es sda2:

mount /dev/sda2 /mnt

Ahora necesito hacer chroot ahí. Si no sabes cómo, te dejo enlace:

Enjaulandote en chroot

Una vez chrooteado, reinstalo grub y me aseguro de que está:

grub-install /dev/sda
ls /boot/grub

Verás que no tiene grub.cfg como pasaba en el anterior problema, así que lo creo:

grub-mkconfig > /boot/grub/grub.cfg
ls /boot/grub

En Archlinux:

grub-mkconfig -o /boot/grub/grub.cfg
ls /boot/grub

Ahora ya se puede salir del chroot, reiniciar normalmente, y si todo ha ido bien, debería funcionar.

Tags: #grub

◄ Listado de noticias

◄◄ Inicio