Lihuen
RSSRSS AtomAtom

Guía de instalación o recuperación de GRUB

Que es GRUB?

GRUB es un gestor de arranque múltiple que se usa comúnmente para iniciar dos o más sistemas operativos instalados en un mismo ordenador.


Fuente http://es.wikipedia.org/wiki/Grub

Guia

Pasa a veces que luego de instalar Lihuen o alguna otra distribución, deseamos tener instalado por las dudas nuestra copia original de Windows. Luego de instalarla (asegurándonos de que no hemos instalado el Windows sobre la partición Linux), nos damos cuenta de que GRUB desapareció y sólo podemos arrancar con Windows. Pasa a veces también, que la instalación (de Windows o Linux) falla con idénticos o incluso más nefastos resultados (Es posible que no arranque ningún otro sistema operativo.).

La solución para ambos casos (e incluso algunos más raros como que se corrompa el primer sector y se rompa GRUB) es la misma. Debemos instalar GRUB nuevamente. Como hacer esto si no arranca nada (para el caso, que arranque Windows es lo mismo que nada)?? Para esto usamos un LiveCD de alguna distribución que nos guste, que ande rápido y sobre todo, que use GRUB para arrancar. Se puede usar Knopix, GentooLiveCD, Lihuen LiveCD(comming soon) o cualkiera que tengamos a mano. Ubuntu se puede usar, pero en máquinas con más de 256 Mb de RAM... De todas formas, solo utilizaremos la consola.

Una vez que booteamos con el LiveCD, ingresamos como root a una consola.

Primero debemos saber cual es nuestro disco. Si es un disco IDE (máquinas anteriores a 2007) el disco se verá como un archivo en /dev/hd*. Probamos:

#ls /dev/hd*
/dev/hda /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 /dev/hdb /dev/hdb1

Esta salida significa que tenemos un disco IDE (hda) con 4 particiones. Probablemente hdb sea la lectora de cd que también es IDE. Si el disco es SATA o SATA2 (generalmente en máquinas más nuevas) los discos se ven como archivos e /dev/sd*. Probamos:

#ls /devsd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sda4  /dev/sda5

Esta salida significa que tenemos un disco SATA o SATA2 (sda) con 5 particiones. Si tuviéramos más de un disco SATA se vería como sdb, sdc y así siguiendo.

Podemos montar momentáneamente una partición para ver su contenido e identificarla, si no estamos seguros donde estamos. Primero creamos una carpeta donde montar:

#mkdir /mnt/disco

Luego montamos una partición en la carpeta que creamos así:

#mount /dev/sdb1 /mnt/disco

Miramos el contenido:

#ls /mnt/disco

Y desmontamos con:

#umount /mnt/disco

Si tira algún error no se asuste, seguramente trató de montar la partición swap ;)

Una ves que tenemos identificado el disco por su contenido, debemos montar la partición que tiene nuestra distribución de Linux que queremos recuperar. Por ejemplo, si al mirar el contenido de hda3 vemos algo como

bin   etc      initrd      lost+found  opt   sbin  tmp  vmlinuz
boot  home     initrd.img  media       proc  srv   usr
dev   include  lib         mnt         root  sys   var

Es la partición que contiene la raíz (/) de nuestro Linux. Entonces montamos la partición en la carpeta que creamos:

#mount /dev/hda3 /mnt/disco

Ahora debemos hacer como que nuestra nueva raíz (/) es ese disco, y eso se hace con el comando chroot (cambiar raiz o change root)

#chroot /mnt/disco

Una vez que tenemos la nueva raiz (/) debemos asegurarnos de que el disco se ve. Probamos:

#ls /dev/hd*
/dev/hda /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 /dev/hdb /dev/hdb1

Si el disco no se ve, podemos probar de reiniciar y modificar algunos de los parámetros del disco en la BIOS como agregar soporte para discos grandes, activar LBA, o algo por el estilo. Generalmente si se ven los discos. Si ese es el caso, solo necesitamos reinstalar GRUB en el disco con:

#grub-install /dev/hda

Si todo salio bien, solo nos queda configurar el archivo /boot/grub/menu.lst para incluir a Windows o a nuestro nuevo Linux.

si encontramos alguna falla probemos lo siguiente:

1)boot del live-cd nuevamente, si es un live respetable minimante tendria que montar las particiones encontradas.


2)asumiento todas las particiones estan montadas, tipamos

#df

tendriamos que ver algo como

/dev/hda1             38503304  32251732   4295660  89% /mnt/linux
/dev/hdc1             10000428   5121376   4879052  52% /mnt/winntfs1

no muestro la unidades montadas del live solo me interesan las unidades montadas con algun sistema instalado. bueno vemos un linux y windows con ntfs.

3)Ahora que sabemos donde esta nuestro linux tomamos la decision de entrar a ese sistema de archivos

#mount --bind /proc /mnt/linux/proc
#mount --bind /sys /mnt/linux/sys
#mount --bind /dev /mnt/linux/dev
#chroot /mnt/linux
#ls /dev/ | grep hd

tipamos grub como root

#grub

tipamos find

#find /boot/grub/stage1

si todo sale bien nos dara donde esta alojado grub en formato (hdx,x) ahora seteamos root

#root (hdx,x)

ahora solo resta instalar grub

#setup (hdx)

para salir de grub tipamos

#quit

si tenemos grub 2 cambian los pasos de la siguiente manera

tipamos search

#search /boot/grub/stage1

si todo sale bien nos dara donde esta alojado grub en formato (hdx,x) ahora seteamos root

#set root=(hdx,x)

ahora solo resta instalar grub

#setup (hdx)

para salir de grub tipamos

#quit

ahora si por desmontamos lo anterior

#umount /mnt/linux/proc
#umount /mnt/linux/dev
#umount /mnt/linux/sys

ahora reiniciamos y listo.

nuevamente si por las dudas solo aparece un prompt de grub, entonces algo paso, nos se preocupe sigamos con lo siguiente.

grub> find /boot/grub/stage1
grub> root (hdx,x)
grub> setup (hdx)
grub> quit

o si solo quiere arrancar el sistema para poder ver si lo puede arreglar desde otro entorno entonces

grub> find /boot/grub/stage1
grub> root (hdx,x)
grub> kernel /boot/vmlinux-2.6.xx-x-xxx root=/dev/hd?+1*
grub> initrd /boot/initrd.img-2.6.xx-x-xxx
grub> boot

ahora habra arrancado. en grub 2 seria

grub> search /boot/grub/stage1
grub> set root=(hdx,x)
grub> linux /boot/vmlinux-2.6.xx-x-xxx root=/dev/hd?+1*
grub> initrd /boot/initrd.img-2.6.xx-x-xxx
grub> boot


el * es porque generalmente root suele esta en 1 + de donde se aloja grub ejemplo grub esta en /dev/hda que seria hd0 y root estaria en /dev/hda1 que seria (hd0,1) los mismo para discos sata solo cambia sda,sda1, sdx,y.

espero le sea de ayuda.


 Ante cualquier duda o inconveniente no dudes en visitar nuestros foros.
 http://lihuen.linti.unlp.edu.ar/foros