jueves, 18 de septiembre de 2008

Recuperar Grub tras reinstalar windows

Buenas

Voy a explicar cómo recuperar el sistema de arranque grub después de reinstalar Windows (lo cual muchas veces es necesario). He visto por ahí muchos manuales que te explican cómo hacerlo, pero cuando me tocó hacerlo a mí la cosa no era tan sencilla. 

En este caso voy a explicar mi situación para que este post sirva para no tener que navegar por páginas y páginas de foros buscando (que es lo que tuve que hacer yo...¬¬).

En mi caso tengo 3 discos duros en mi pc. En el primario varias particiones, una de ellas primaria con windows. Después tengo otro con 3 particiones: una para linux, la swap y otra para datos. En el último tengo solo datos con un par de particiones vfat para intercambiar archivos entre mi linux y mi windows (sé que ya se puede escribir en particiones ntfs con ntfs3g, pero para ciertas cosas soy reacio a ser conejillo de indias, sobre todo respecto a mis preciados datos...).

El sistema ya estaba instalado y funcionando correctamente, pero decidí reinstalar windows. Después de años de instalar y borrar programas el registro iba de pena y no pude solucionar la lentitud y los errores aleatorios con ningún programa de limpieza de registro. Eso puede ser un buen tema para otro post...

A lo que iba que me pierdo. Tras instalar windows exitosamente con sus requeridos reinicios y tal, el gestor de arranque que instaló ubuntu cuando lo instalé había desaparecido. Yo que fui previsor y sabía que eso iba a pasar me había leido varios métodos para volverlo a instalar para no tener luego problemas. Los metodos que probé son:
- Usar el cd de ubuntu (modo instalación)
- Usar el cd de ubuntu (modo live cd)
- Usar el cd de ubuntu (modo live cd cambiando el host)

Con la primera opción no había manera. En los foros ponían que comenzara a instalar y que luego pasara directamente, sin tocar las particiones y sin especificar que las formatearan, a la instalación de grub. Puede que hiciera algo mal, pero cuando estuve en el paso de pulsar 'Instalar - Se perderán los datos de la partición seleccionada...' me cagué y pensé que seguramente habría otra forma (y la hay).

La segunda y la tercera son la misma. El problema que tuve fue que me equivoqué en una cosilla... y por eso tuve que hacer la tercera. El error que tuve lo explico luego. Ahora voy a explicar el proceso fácil.

 - Entrar en ubuntu con el live cd.
 - Abrir un terminal.
 - Montar el disco duro en el que tienes el grub instalado (el de ubuntu, que es el que tiene el fichero de configuración y tal). En mi caso es el segundo disdo duro. Creas un directorio para montar ahí el disco duro y listo.
  sudo mkdir /media/sdb1
  sudo mount /dev/sdb1 /media/sdb1 -t ext3

 - Ahora viene la parte interesante: instalar el grub en el sector de inicio. (el mismo que ya funcionaba bien)
  sudo grub-install --root-directory=/media/sdb1 /dev/sda

Con eso ya lo tienes todo. Ahora aclaro una cosa. La sintaxis es:
  sudo grub-install --root-directory=(ruta donde tengas el /boot en el disco de linux) Dispositivo_donde_esta_sector_arranque
Esto significa que si tienes windows en la primera partición, esa será sda1, pero el dispositivo donde esta el sector de arranque es el /dev/sda. Si por un casual instalas el grub en /dev/sda1 (que fue lo que hice yo...), te cargas el arranque de windows. 
 
Con el error que cometí te queda un sistema genial en el que tienes dos sistemas operativos instalados y no puedes arrancar ninguno. ¬¬
Después de eso tuve que recuperar el arranque de Windows y luego repetir el proceso de instalar el grub (esta vez ya correctamente).

La tercera opción sería idéntica, pero cambiando el host del live cd a la partición del linux instalado. De esta manera te queda luego el comando de instalación de grub te queda más corto y más claro, aunque puedes comenter mi error de la misma manera. Asi que cuidado. Detallo el procedimiento:
 - Entrar en ubuntu con el live cd.
 - Abrir un terminal.
 - Montar el disco duro en el que tienes instalado el grub.
  sudo mkdir /media/sdb1
  sudo mount /dev/sdb1 /media/sdb1 -t ext3

 - Cambiar el host
  sudo chroot /media/sdb1
 - Instalar grub en el sector de arranque (MBR - Master Boot Record)
  sudo grub-install /dev/sda

Veis que ahora como hemos cambiado el host no es necesario especificar el directorio de root en el comando. Ya cada uno que lo haga como quiera. Así la verdad es que no debe haber problemas. Como siempre, en un ordenador puede haber situaciones para todos los gustos y esto puede complicarse.

Espero que os haya servido de algo. Si puedo echar una mano solo teneis que escribirme un mail o poner un comentario y procuraré contestar lo antes posible.


No hay comentarios: