GRUB2 experience

Buenos días, internautas bloggeros.

Cuando decidí reactivar mi blog fue con la idea de volcar mi experiencia, aprendizaje, lecturas de manera de armar una "vitácora", si así puede llamarse. Por eso publiqué sobre la sincronización con rsync aquel día que debía sacar datos de mi laptop para que estén mi mi desktop. En esta ocasión les contaré sobre mi experiencia con GRUB, el cargador de arranque de Linux.

Basándonos en el artículo de la Wikipedia, GNU GRUB (GNU GRand Unified Bootloader) es un gestor de arranque múltiple, desarrollado por el proyecto GNU que se usa comúnmente para iniciar uno, dos o más sistemas operativos instalados en un mismo equipo. De la wiki de Ubuntu podemos extraer el siguiente párrafo: as the computer starts, GRUB 2 either presents a menu and awaits user input or automatically transfers control to an operating system kernel. GRUB 2 is a descendant of GRUB (GRand Unified Bootloader). It has been completely rewritten to provide the user significantly increased flexibility and performance. GRUB 2 is Free Software. Es decir, que si tenemos Debian y Linux instalado en nuestra pc, GRUB nos permitirá elegir cuál de los dos iniciar a través de un bonito menú de elección. Esto último es una de las ventajas entre GRUB2 y GRUB (lo pueden leer en el artículo de Ubuntu).

Un problema que nos surge cuando tenemos Windows y Linux instalados es que, dependiendo si instalamos primero uno u otro, nuestro GRUB será sobreescrito o no. En mi caso, Windows fue instalado al último, por lo que perdí mi arranque del sistema y directamente booteaba con Windows10.

Para resolver este inconveniente recurrí a Boot Repair Disk, que es un live CD de Ubuntu con la heramienta boot repair precargada y que detecta automáticamente los problemas de arranque del sistema. Desafortunadamente no me dió solución, por lo que tuve que realizar todo en forma manual. Para ello, desde el mismo live CD, lo primero que hice fue fijarme qué discos tengo y cuál correspondía a la partición /boot de Linux:

 [root@lubuntu ~]# fdisk -l  
   
 Disco /dev/sda: 931,5 GiB, 1000204886016 bytes, 1953525168 sectores  
 Unidades: sectores de 1 * 512 = 512 bytes  
 Tamaño de sector (lógico/físico): 512 bytes / 4096 bytes  
 Tamaño de E/S (mínimo/óptimo): 4096 bytes / 4096 bytes  
 Tipo de etiqueta de disco: dos  
 Identificador del disco: 0xf6363166  
 Device   Boot   Start    End  Sectors  Size Id Type  
 /dev/sda1      2048   684031  681984  333M 83 Linux  
 /dev/sda2     686078 850292735 849606658 405,1G 5 Extended  
 /dev/sda3  *  850292736 851316735  1024000  500M 7 HPFS/NTFS/exFAT  
 /dev/sda4    851316736 1157492735 306176000  146G 7 HPFS/NTFS/exFAT  
 /dev/sda5     686080 166699007 166012928 79,2G 8e Linux LVM  
 /dev/sda6    166701056 850292735 683591680  326G 8e Linux LVM  
 La partición 3 no empieza en el límite del sector físico.  
 Las entradas de la tabla de particiones no están en el orden del disco.  
 Disco /dev/sdb: 149,1 GiB, 160041885696 bytes, 312581808 sectores  
 Unidades: sectores de 1 * 512 = 512 bytes  
 Tamaño de sector (lógico/físico): 512 bytes / 512 bytes  
 Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes  
 Tipo de etiqueta de disco: dos  
 Identificador del disco: 0x4cc979ab  
 Device   Boot Start    End  Sectors  Size Id Type  
 /dev/sdb1    2048 312580095 312578048 149,1G 83 Linux  
 .  
 .  
 .  
 Device   Boot Start   End Sectors Size Id Type  
 /dev/sdc1 *   2048 30296063 30294016 14,5G b W95 FAT32  

Como puede verse, la partición de /boot de Linux es /dev/sda1. Y algo que hizo Windows al instalarse, fue marcar su partición "reservada para el sistema" con el flag de boot.

Entonces, usando gparted (viene instalado en Boot Repair Disk), cambié el flag de boot para que la tenga Linux:


Seguidamente, debí reinstalar GRUB. Para ello lo que hice fue:

1- Montar la partición de /boot de Linux

 sudo mount /dev/sda1 /mnt  

2- Instalar GRUB2

 sudo grub-install --root-directory=/mnt /dev/sda  

Bien. Pensaba que estaba todo listo, pero al reiniciar la PC me di con que efectivamente estaba instalado GRUB, pero en vez de mostrarme el menú de selección tenía la consola de GRUB :S Me dió pánico.


Pero luego me di cuenta que era sólo una consola más, con sus comandos, pero que no sabía usar. Tal como se ve en el mensaje principal, usando <Tab> se nos muestra los comandos posibles de GRUB2. Pero necesitaba ir más a fondo. Gugleando encontré este artículo, sencillo pero excelente para alguien como yo que desconocía sobre la CLI.

Entonces, qué debía hacer? Primero ver si GRUB detectaba mis discos. Eso lo hice usando el comando ls.

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

Luego buscar el directorio /boot. Por deducción era la partición (hd0,msdos1). Pero para ser un poco más técnica, hice la búsqueda de mi kernel:

grub> search -f /vmlinuz-3.16.0-4-amd64  
 hd0,msdos1   

Bien hecho. Pero me pregunté si todavía existía mi archivo de configuración grub.cfg. Afortunadamente SI. Entonces, lo que debía hacer era que GRUB reconozca ese fichero!

 grub> search -f /boot/grub/grub.cfg  
 hd0,1   
 grub> configfile (hd0,1)/boot/grub/grub.cfg  

Y voilá! Tuve mi menú para seleccionar el SO que quisiera (Win incluido, dado que desde el live CD, cuando al hacer el grub-install, se generó el fichero con la nueva entrada). Pero para que todos estos cambios fueran permanentes, una vez dentro de Debian, accedí a la consola e instalé GRUB:

 # update-grub  
 .....  
 done  
 # grub-install /dev/sda  
 Installing for i386-pc platform.  
 Installation finished. No error reported.  

El primero comando creo que no es necesario, pero por las dudas lo ejecuté. Una duda que me surgió sobre el binario update-grub fue qué diferencia hay entre ese y update-grub2. Bueno, lo pueden leer la respuesta acá, pero resumiendo ambos son lo mismo, de hecho update-grub2 es un enlace simbólico a update-grub.

 [verovan@phoenix ~]$ ls -l /usr/sbin/update-grub2  
 lrwxrwxrwx 1 root root 11 dic 14 14:38 /usr/sbin/update-grub2 -> update-grub  

Y así recuperé de manera definitiva el menú :D

Espero que les haya resultado útil algo de lo que les conté, siempre hay alguien que tiene el mismo inconveniente que uno. Por ello les comparto la solución que le di a este problemilla.

Saludos... y happy config!

Comentarios

Publicar un comentario

Entradas más populares de este blog

Zabbix en dos días (día 1)

OpenVPN para todos :D