💾 Archived View for moribundo.flounder.online › blog › 046_reparar_grub.gmi captured on 2024-08-18 at 19:13:51. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
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.
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
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:
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