las tribulaciones técnicas de santib90

noviembre 5, 2007

Recuperar un arranque dual Ubuntu – Windows con GRUB

Filed under: linux, windows — santib90 @ 6:13 pm

Mis amigos y clientes me preguntan regularmente cómo recuperar un sector de arranque para que arranque con GRUB tras una instalación de Windows y me he decidido a documentar el proceso para futura referencia.

El problema es el siguiente: quieres tener dos sistemas operativos (por ejemplo Ubuntu y Windows XP) instalados en un equipo para hacer pruebas. Primero instalas XP y luego Ubuntu. Este último es civilizado y se da cuenta de que no es el único S.O. instalado en el equipo y configura GRUB (el gestor de arranque de Ubuntu) para que permita al usuario elegir entre Ubuntu y XP al arrancar el equipo.

Si por cualquier motivo, luego tienes que reinstalar XP de nuevo, resulta que el sector de arranque de GRUB es machacado por el de XP y el equipo sólo arranca a XP sin permitir elegir Ubuntu.

A grandes rasgos, la solución implica arrancar con un LiveCD y reconfigurar GRUB para que se haga dueño de nuevo del sector de arranque del disco y machaque a su vez al grabado por el Setup de XP.

Para realizar las pruebas, usaré uno de mis equipos (que arranca Ubuntu y XP sin problemas) y machacaré a mano el sector de arranque. Arranco con el disco de instalación de XP y selecciono la consola de recuperación. Tras identificarme como administrador me cargo el sector de arranque con el comando «fixmbr». Pruebo a arrancar de nuevo el equipo y veo que, efectivamente, me he cargado el arranque dual. Ya tengo el entorno de pruebas adecuado.

Paso a solucionar el problema. Primero arranco con un LiveCD. En este caso tengo a mano un LiveDVD de Ubuntu 7.04 Feisty Fawn.

Lo primero que hacemos es configurar el teclado en español por defecto para no marearnos con el teclado en inglés que trae por omisión.

Abrimos una sesión de terminal y nos convertimos en root tecleando «sudo su» (no pide contraseña porque es el Live CD)
A continuación ejecutamos grub en modo interactivo tecleando «grub«. El cursor se nos transforma en «grub>» y ya podemos teclear comandos.

Tecleamos el comando «find /boot/grub/stage1» (ojo que este comando «find» no es el de Linux)

Nos fijamos en el resultado del comando y anotamos la unidad de disco y partición mostrada. En mi caso es «(hd0,1)«, lo cual indica la segunda partición del primer disco. En esta nomenclatura se empieza a numerar desde 0 y no se hace distinción entre discos IDE o SCSI, es decir no hay «hda» o «sda» (que son las formas típicas de referirnos a las unidades de disco) sino sólo «hd0».

Una vez localizada la partición en la que esta instalada Ubuntu (concretamente la partición donde reside el «/boot»), seguimos en modo comando y ejecutamos «root (hd0,1)» evidentemente sustituimos el disco y partición por las que hayamos descubierto en el paso anterior.

A continuación ejecutamos «setup (hd0)» para grabar el nuevo sector de arranque en el disco y que este apunte a la partición del boot de Ubuntu.

Ya podemos abandonar el modo interactivo de grub con el comando «quit» y reiniciamos el equipo, que debería mostrar el arranque con GRUB que teníamos antes de instalar el otro sistema operativo.

La información original la encontré aquí.

Blog de WordPress.com.