Recuperando GRUB2 en Debian

Grub_logo¿Quién no se ha visto obligado, alguna vez, a tener que recuperar en gestor de arranque de su distribución Linux?. Los motivos pueden ser varios, un arranque dual Windows-Linux que se elimina de forma indebida, problemas con alguna partición, etc… Si te encuentras en una situación como ésta, quizá quieras seguir leyendo (Nota: impacientes continuad en el apartado El Proceso).

 

EL MOTIVO

Hace unas semanas, estuve realizando un poco de limpieza en el disco duro del ordenador, en concreto, en la partición /home que aún conservaba de mi anterior sistema (Debian 8 – 32 bits). Una vez que cribé todo el contenido útil, pensé que lo mejor era eliminar susodicha partición para ganar espacio en el disco duro. No es que me hiciera falta cada Mb del disco, pero ya que no la iba a utilizar más, me daba no se qué tenerla ahí ocupando sitio.

Así que, inicié gparted para darle pasaporte pero para mi sorpresa, gparted me advierte que antes debo desmontar todas las particiones con número superior a la que quiero borrar. Como la partición en cuestión era la sda5, eso suponía desmontar todas las particiones del sistema que actualmente estaba en uso, por lo que ante tal panorama, opté por eliminarla desde un live-USB.

Para tal tarea usé la distro Linux Lite 2.8, que tenía todavía en una memoria USB desde la vez que la instalé en uno de los portátiles de casa, hará unos 3 ó 4 meses. La tarea fue simple y sin complicaciones, a pesar de que tuve que desmontar la partición de intercambio que usaba Linux Lite, a petición expresa de gparted. Hasta aquí, todo bien, o al menos eso creía yo.

En el siguiente arranque del ordenador, me aparece Grub avisándome de que no encuentra la imagen de Linux que inicia el sistema. Así que, no me queda otra que subirme las mangas y tirar de manual para refrescarme la memoria, ya que era poco lo que recordaba sobre cómo recuperar el Grub. Hacía muchos años, creo que desde aquellas configuraciones de arranque dual WinXP-Ubuntu, cuando empezaba con esto del Linux, que no tenía que volver a trastear con Grub y el MBR, y la teoría sobre Grub la tenía bastante difusa.

 

EL PROCESO

Lo que sigue a continuación, es una descripción de los pasos necesarios para recuperar el gestor de arranque Grub2 desde una memoria usb-live/cd-live en un sistema Debian o derivado. Hay otras formas de recuperar grub, pero en esta entrada se describe solamente el procedimiento desde usb/cd live para Debian 9.1-64 bits.

El primer paso a dar es arrancar el ordenador afectado con el live-cd(usb). Una vez tengamos el sistema listo, trataremos de identificar las particiones del sistema averiado. El motivo de esto no es otro que poder montar las particiones / y /boot para poder trabajar/reparar el sistema averiado.

Si tu sistema estaba en una sola partición, se puede saber cuál es mediante la orden

:~$ sudo fdisk -l

que nos ofrecerá un listado de todas las particiones del disco duro como el que se muestra a continuación:

root@Tesla:/home/isidoro# fdisk -l

Disk /dev/sda: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00029689

Device Boot Start End Sectors Size Id Type
/dev/sda1 *   2048                1019741939    1019739892   486,3G  83   Linux
/dev/sda3     1266262012   1953519615     687257604     327,7G    5   Extended
/dev/sda5     1266262014   1274650621     8388608         4G          82   Linux swap / Solaris
/dev/sda6     1274650624   1294182399    19531776        9,3G      83   Linux
/dev/sda7     1294184448   1313714175    19529728        9,3G      83   Linux
/dev/sda8     1313716224   1315667967    1951744          953M    83   Linux
/dev/sda9     1315670016   1374261247    58591232       28G        83   Linux
/dev/sda10   1374263296  1471918079    97654784       46,6G      83   Linux

La partición que tiene en la columna el nombre Linux será la partición a montar, pero en este ejemplo tenemos más de una, por lo que la táctica a seguir debe ser otra. Un pequeño detalle a notar es que la orden necesita privilegios de superusuario para ser ejecutada correctamente, de lo contrario no obtendremos nada. Utiliza sudo como se indica en el ejemplo, o bien su, según sea el sistema live que estés utilizando.

Si, como ocurre en el ejemplo, el sistema averiado está instalado en varias particiones, es posible montarlas una a una desde el navegador de archivos, para identificar su contenido y de esta forma, cuál tiene que ser su punto de montaje. Es posible que haya más formas de conseguir esto, utiliza la que mejor te vaya. Cuando tengamos una partición montada, se puede ejecutar la orden

:~$ df -h

que nos mostrará todas las particiones del sistema que están montadas, entre ellas, la que acabamos de montar desde el navegador. De esta forma podremos identificar la partición propiamente dicha con su punto de montaje y así, saber cómo teníamos configuradas las particiones. En el ejemplo que se está mostrando, las particiones y sus puntos de montaje quedaron así:

/dev/sda6 = /
/dev/sda9 = /usr

En este caso, la partición sda6 incluye el punto de montaje raíz y boot. Una vez identificadas, las desmontamos desde el navegador y las montamos sobre la carpeta /mnt, por ejemplo, del sistema live que hemos usado para arrancar. Se podrían dejar montadas desde el navegador, pero resulta muy engorroso trabajar con los nombres que el sistema live asigna a cada punto de montaje, pues suele ser una cadena alfanumérica muy larga. Insisto en que se pueden identificar las particiones de otra manera, así que usa tu preferida. Las órdenes a utilizar son

:~$ sudo mount /dev/sda6 /mnt
:~$ sudo mount /dev/sda9 /mnt/usr

La razón de montar la partición /usr es para evitar un error relacionado con el fichero grub-mkconfig_lib (no puede abrirlo o no lo encuentra cuando actualiza grub). También necesitaremos las particiones /var, /sys y /dev, pero éstas las tomaremos del sistema live que estamos usando, por lo que las montaremos de la siguiente forma (antes de bind hay dos guiones normales seguidos – -):

:~$ sudo mount –bind /var /mnt/var
:~$ sudo mount –bind /sys /mnt/sys
:~$ sudo mount –bind /dev /mnt/dev

una vez tenemos todo montado, cambiamos de sistema de archivos y pasamos al del equipo a reparar con la siguiente orden:

:~$ sudo chroot /mnt

Ahora estamos en posición de poder instalar Grub en el disco de nuestro sistema.

:# grub-install –recheck /dev/sda

La opción –recheck comprobará la instalación de Grub por si se hubieran producido errores. Normalmente se instala Grub en el primer disco duro del sistema, que es el sda. Si necesitas instalarlo en otro, cambia sda por el tuyo. Si todo ha ido bien, debería verse algo parecido a esto:

Instalando para plataforma i386-pc.
Instalación terminada. Ningún error encontrado.

Otra forma de instalar Grub es la siguiente (no la he probado, por lo que no puedo asegurar que funcione):

:# grub-install –root-directory=/mnt/ /dev/sda

incluso se puede instalar con esta otra orden (tampoco la he probado):

:# grub-install –boot-directory=/mnt/boot/ –recheck /dev/sda

En cualquier caso, la salida de estos comandos debería ser la indicada más arriba. El último paso es actualizar las entradas de Grub mediante la orden:

:# update-grub2

Con esta orden, se reconocerán todos los núcleos instalados y se incorporarán al menú de selección de Grub. Y de esta manera, nuestro sistema debería estar listo, así que, salimos del entorno chroot mediante la orden exit y reiniciamos el ordenador para comprobar el trabajo.

Salu2.

 

Fuentes:

http://www.guia-ubuntu.com/?title=Recuperar_GRUB
https://trastetes.blogspot.com.es/2015/02/recuperar-grub2-de-ubuntu-1404-tras.html
https://simplementelibre.wordpress.com/2014/10/23/recuperar-grub-con-un-livecd-de-ubuntu-14-04-tras-la-instalacion-de-windows/

 

Deja un comentario