Recuperación de GRUB

El otro día me puse a cambiar la distribución de particiones de un equipo, ya que éste las tenía un tanto extrañas, y como resultado de eso, al cargarme la partición con el flag boot el sistema original no iba a arrancar. Todo se hacía desde una live, pero el que no arrancaría más iba a ser el sistema real, algo que no interesaba.
Aquí pasaron 2 cosas diferentes, por un lado cambié la partición con el flag boot, por lo que tuve que crear una nueva con dicho flag y por lo tanto ya tenía que reinstalar el GRUB. Por otro lado, a la vez que cambiaba todo, la partición raíz, anteriormente /dev/sda5 ahora pasaría a ser /dev/sda1. Esto lógicamente al GRUB no le iba a gustar, ya que su configuración le indicaba que el kernel se encontraba en la anterior partición. Así que para recuperar el sistema, por un lado había que restaurar el master boot record y por otro, actualizar la configuración de GRUB. La forma más sencilla que encontré para ello, un entorno chroot.
Para hacerlo, simplemente desde el live-cd montamos la partición del sistema original (en mi caso /dev/sda1) y luego hacemos un entorno chroot. Para hacerlo correctamente, vamos a emplear dispositivos del live-cd, ya que el sistema original, está apagado.
shell> mount /dev/sda1 /mnt
shell> mount --bind /dev /mnt/dev
shell> mount --bind /dev/pts /mnt/dev/pts
shell> mount --bind /proc /mnt/proc
shell> mount --bind /sys /mnt/sys
Ahora que ya tenemos todo lo necesario montado, ya podemos emplear chroot,
shell> chroot /mnt
Tras ejecutar este comando ya estamos 'dentro' del sistema operativo físico, por lo que todos los cambios que hagamos nos afectarán directamente, así que únicamente vamos a restaurar y actualizar GRUB.
En mi caso, voy a restaurar GRUB en /dev/sda, que es mi disco de arranque. Ojo a esto, el MBR es del disco y no de la partición.
shell> grub-install --boot-directory=/boot/ --recheck /dev/sda
Tras tener el GRUB ya instalado, si todo fue satisfactorio, simplemente ahora vamos a actualizar el listado de kerneles disponibles para el arranque, y sobre todo, la localización de los mismos, que recientemente se vio alterada.
shell> update-grub2
Tras ejecutar este comando, si vamos al fichero /boot/grub/grub.cfg podremos ver como sí actualizó la localización de los kerneles para arrancar. En mi caso pasó de sda5 a sda1. Ahora simplemente reiniciamos y todo debería de funcionar correctamente.

Nota: Si como yo, en vuestro sistema real tenéis algunas particiones separadas, lo mejor es que antes de lanzar el chroot tengáis todo montado. Si una de esas particiones es /boot, en ese caso es 100% necesario su montaje! Así que si tenéis particionado /usr, /var y /boot, antes de ejecutar la jaula chroot,
shell> mount /dev/sda2 /mnt/boot
shell> mount /dev/sda3 /mnt/usr
shell> mount /dev/sda4 /mnt/var

Si este artículo te pareció interesante, quizás te interese también ver cómo recuperar el GRUB sin emplear un Live-CD.
La entrada Recuperación de GRUB la puedes leer en Puppet Linux.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios