miércoles, 17 de marzo de 2010

GRUBack: recuperando GRUB desde Windows

Una situación con la que nos hemos encontrado todos los que utilizamos sistemas Windows y Linux sobre un mismo PC es perder el menú de arranque de GRUB después de reinstalar Windows (o instalar uno nuevo como Windows 7).

Este problema se debe a que el proceso de instalación de Windows siempre escribe en el MBR (o registro de arranque principal) del disco duro un código de arranque estándar para asegurarse de que la secuencia de arranque sea la correcta para cargar el sistema instalado. Lo malo es que antes de ello no comprueba si en el MBR se encontraba instalado algún programa de arranque no estándar, por ejemplo el de GRUB, que resultará "machacado" en el proceso. Esto hará que Windows se arranque directamente, ya que el código de arranque estándar escrito en el MBR le cederá el control al programa alojado en el VBR (o registro de arranque del volumen) de la partición activa (la de Windows) y este a su vez se encargará finalmente de ejecutar el cargador de Windows (NTLDR hasta que en Windows Vista se cambió por BOOTMGR).

La forma de recuperar el menú de arranque de GRUB (necesario para elegir qué sistema operativo cargar), aunque no es demasiado complicada, sí que requiere ciertos conocimientos técnicos e implica arrancar el PC con una distribución live CD de Linux (a ser posible la misma que haya instalada en disco) y luego utilizar desde una consola de este las herramientas del propio GRUB para volver a instalar su código máquina especial en el MBR.

Recientemente tuve que hacerlo una vez más y pensé que quizá ya habría en algún lugar de internet una herramienta que permita recuperar el menú de GRUB cómodamente sin salir de Windows. Tras varias búsquedas sin éxito llegué a la conclusión de que quizá aun no se le había ocurrido a nadie programarla o que sencillamente no sea algo prioritario para la gente del propio proyecto GRUB o del "planeta Linux", ya que cualquier usuario avanzado puede recuperar GRUB en cuestión de minutos mediante el procedimiento habitual citado más arriba. Sin embargo le seguí dando vueltas al asunto y finalmente me puse manos a la obra para implementar mi propia solución al problema.

He utilizado un script para Windows (quizá sea más correcto llamarlo archivo BATCH) que invoca a una serie de herramientas de consola para realizar cirujía de reconstrucción en el MBR de modo que quede lo más parecido al que supuestamente había antes de que la instalación de Windows lo "desfigurara". Lo he probado con éxito en Windows XP, Windows Vista y Windows 7 para las dos versiones de GRUB más usadas en los últimos años (GRUB Legacy y GRUB, conocido hasta hace poco como GRUB 2). Como recientemente he añadido diversas comprobaciones extras y la posibilidad de crear un disquete de rescate "por si algo va mal y el PC no arranca" creo que ya podría compartirlo con el prójimo (por supuesto sin ningún tipo de garantía ni responsabilidad sobre su uso ;) Lo he llamado GRUBack y tengo el gusto de presentar su primera versión Beta. Espero que sea de utilidad...


NOTA: existe una versión más reciente de GRUBack que soporta Ubuntu 11.04 y que debería usarse en cualquier caso...