25 de noviembre de 2009

Ubuntu 9.10 despues de dist-upgrade ya no arranca. Alerta techie!

El otro dia hice un apt-get dist-upgrade en mi Ubuntu 9.10, y por algún motivo que no entiendo mi distro dejó de arrancar correctamente: llegado a un punto me mostraba una shell de mantenimiento para que me las apañara. Lo mismo pasaba aunque eligiera en Grub2 arrancar con el kernel antiguo.

Para ver que ocurría reinicié, edité el comando de arranque de Grub2 (creo que es presionar "e", borrar el "quiet splash" y hacer Ctrl+x para arrancar). Eso permitió que el arranque fuera en modo texto en lugar de gráfico, con lo que pude ver qué demonios estaba pasando.

El error que estaba recibiendo era algo parecido al siguiente:
"Waiting for root file system..."
Después de investigar un poco por google me di cuenta que no era el único con el mismo problema, así que con un poco de suerte mi solución servirá a alguien más.

Como con la shell de mantenimiento no podia hacer nada (puesto que el root filesystem no estaba montado), reinicié a mi Ubuntu 9.10 Live CD.

Cuando arrancó el Live CD abrí una terminal y puse lo siguiente:

sudo su
mkdir /media/sda1
mount /dev/sda1 /media/sda1
mount --bind /dev /media/sda1/dev
mount --bind /tmp /media/sda1/tmp
mount --bind /proc /media/sda1/proc
mount --bind /etc/resolv.conf /media/sda1/etc/resolv.conf
sudo chroot /media/sda1


/dev/sda1 es el dispositivo que maneja mi partición de Linux. En otros casos podría ser distinto (por ejemplo /dev/sdb1 si esta en un distinto disco duro, o /dev/sda2 si esta en otra partición dentro del mismo disco duro).

Después de introducir esos comandos, tenia una shell en el Live CD lista para actuar como si fuera mi partición principal de Ubuntu, así que pude ejecutar los comandos necesarios en mi sistema principal.

Lo primero que hice fue cargarme Grub2. Quizá fuera radical e innecesario, pero no se me ocurria como hacerlo de otra manera. Asi que ejecuté lo siguiente (Sacado de este thread del foro de Ubuntu):


sudo cp /etc/default/grub /etc/default/grub.old
sudo cp -R /etc/grub.d /etc/grub.d.old
sudo cp -R /boot/grub /boot/grub.old
sudo apt-get purge grub2 grub-pc
sudo apt-get install grub
sudo update-grub
sudo grub-install /dev/sda


Después de esto edité el menu.lst y reemplacé los root= (no me acaba de gustar esa nomenclatura para referirte a las particiones) por root=/dev/sda1

sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.old
sudo gedit /boot/grub/menu.lst &


Después de esto reinicié, y voila, arreglado.

4 comentarios:

Zendir dijo...

Fácil, sencillo, y para toda la familia :)

gux dijo...

Si, hace ya tiempo que dejo de recomendar Linux para los novatos. Y desde luego la distribucion menos recomendable en ese aspecto es Ubuntu, que tiene unas cagadas de vez en cuando...

Esto me pasa a mi y me las apanyo. Le pasa a un novato y lo manda a tomar por saco.

Nat dijo...

¿A que molan estos post en que si no eres informático o un enteradillo no te enteras de nada? XD

Javier Vera dijo...

Muchas gracias, me ha servido mucho