¿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/