Cómo añadir una nueva entrada de Windows al Grub manualmente
Por lo general, los problemas relacionados con el grub, se generan con Windows como principal culpable, siempre con esta inquietud por “tirar” el grub y arrebatarnos ese arranque dual, pero recientemente, me ocurrió lo siguiente; con la intención de hacer un dual-boot entre Windows XP y Debian, por falta de atención, instalé primero debian, por lo tanto, posteriormente Windows me iba a tirar el grub, reinstalé el grub desde un Live CD y todo lo que ello conlleva, mi sorpresa llegó cuando Windows XP no aparecía en el Grub, siendo que el sistema, estaba instalado en su respectiva partición.
Siendo que en esos momentos no contaba con conexión a internet ni programas ya instalados como grub-customizer en debian, solo me quedaba la opción de reinstalarlo todo, o añadir la entrada a mano, lo cual se consigue mediante los siguientes pasos:
• Para asegurarnos de la posición de las particiones en el/los disco/s, abrimos un terminal como root “su” y ejecutamos “fdisk -l”, que nos listará las particiones:
En mi caso, la partición de Windows a la que voy a hacer referencia se encuentra en /dev/sda1
• A continuación vamos a pasar a identificar las distintas entradas del grub, ajenamente al fichero /boot/grub/grub.cfg, los ficheros con los que vamos a tratar están situados en /etc/grub.d, distinguimos los siguientes:
→ 10_linux: Es la entrada relacionada al Linux principal que ha generado/instalado el grub.
→30_os-prober: Muestra la entrada alternativa a Linux, en mi caso, windows xp, que por el motivo que sea, no lo localiza.
→40_custom: Es la posición en la que entraría si no encontrara nada ni en 10_linux ni en 30_os-prober
Nosotros vamos a crear una entrada nueva alternativa en la que incluiremos los parámetros necesarios para que encuentre una localización concreta.
•En el terminal nos situamos en el directorio /etc/grub.d , donde vamos a crear el fichero, en mi caso llamado 50_custom: “nano /etc/grub.d/50_custom” se abrirá el editor de texto nano con un fichero nuevo en blanco.
•En el fichero escribiremos lo siguiente, en mi caso:
#!/bin/sh -e
cat << EOF
menuentry “Windows xp (on /dev/sda1)”
{
insmod part_msdos
insmod ntfs
set root=‘(hd0,msdos1)’
search –no-floppy –fs-uuid –set 107063FA7063E4C6
chainloader +1
}
EOF
•Identifiquemos las partes de lo introducido (lo resaltado en morado son los datos que van a variar)*
→Windows xp (on /dev/sda1): es el nombre que aparecerá en el grub con su localización. (lo que hemos consultado con fdisk-l)
→Insmod ntfs: escribimos el sistema de archivos, las posibilidades de que no sea NTFS, sería que estuvieramos con un xp o inferior y que así lo hayamos querido.
→hd0,msdos1: partimos de que si sólo tenemos un disco duro, será hd0, si tenemos dos, el segundo sería hd1, respecto al msdos1, nos referimos a sda1, es decir, el número de la partición, si fuera sda5, pondríamos msdos5, lo que le estaríamos indicando es “disco 1, partición 5”.
→set *UUID*: debemos introducir el UUID de la partición correspondiente, la averiguaremos ejecutando la orden “blkid”:
•Guardamos el archivo pulsando ctrl+o, presionamos enter confirmando el nombre y ruta, y ctrl+x para salir de nuevo a la línea de comandos, donde por último, otorgaremos permisos de ejecución a este fichero ” chmod +x /etc/grub.d/50_custom”.
•Por útilmo ejecutamos “update-grub”, para que actualice las entradas, y en el próximo reinicio, debería aparecer.