Icono del sitio Shakaran

Como recuperar o restaurar un arranque estropeado en Ubuntu


Soy un usuario bastante curioso y aventurero de Ubuntu, por eso suelo utilizar muchos programas en estado alpha o beta para estar al tanto de las últimas novedades o aprovechar al máximo los sistemas.

Esto suele traer algunas desventajas, como que de un día para otro no funcione algo (como el sistema de sonido de Pulseaudio). La última ha sido que no arrancaba ninguno de los kernels que tenía instalado en Ubuntu ya que uso Ubuntu Karmic 9.10.

El problema que sucedía es que al iniciar el kernel, daba un fallo irrecuperable de udev (el gestor de dispositivos de linux) mostrando estas últimas lineas en la pantalla de inicio del kernel y no podiendo hacer nada más (ya no daba tiempo ni a que se hubieran iniciado los tty):

init: udevtrigger mainprocess (1283) terminated with status 1
init: udevtrigger post-stop porcess (1283) terminated with status 1
init: udevmonitor main process (1282) killed by TERM signal.

Cuando pasan cosas así, enseguida te hechas las manos a la cabeza y piensas que tendrás que acudir a una live para recoger los últimos vestigios de tus datos y reinstalar el sistema. Pero soy un poco cabezón y me renegaba a tener que perder las configuraciones del sistema (aunque al menos con la partición /home no perdería ninguna configuración de las aplicaciones).

Así que tras un buen rato de búsqueda y sudores fríos, encontré un bug donde se comentaba que podía iniciarse una pequeña consola con lo siguiente:

1. – Encender el pc y pulsar ‘e’ en una entrada de un kernel de grub.

2. – En la línea de linux, ir al final y poner:

rw init=/bin/bash

3. – Pulsar Ctrl + x para iniciar el kernel.

Esto te daría una pequeña consola de root (útil también como puerta trasera y recuperar contraseñas) pero obviamente ninguna cosa más del kernel se había iniciado. Por lo que probé con las siguientes cosas:

1. – Iniciar el sistema de ventanas ejecutando:

startx

Llegaba a mostrarse el escritorio de gnome, pero cuando empezaba a cargar más cosas, fallaba y no terminaba de arrancarse volviendo al terminal.

2. – Leí también que podía iniciarse la interfaz de red (puesto que mi propósito era actualizar los paquetes y conseguir la versión con el paquete arreglado) con el comando:

sudo dhcclient eth0

Esto no lo llegué a probar porque lo ví más tarde, pero posiblemente hubiese sido útil.

3. – Probé a iniciar GDM, con:

/etc/init.d/gdm start

Pero parece que ubuntu al usar “upstart” tenía que ser con:

start gdm

Pero eso tampoco funcionó.

La desesperación en este punto ya empezaba a apoderarse de mí. Pero luego dí con este artículo de la wiki de ubuntu sobre chroot recovery

Mi situación era algo similar, asi que hice esos pasos con alguna variación:

1. – Descargar/obtener un live cd.

2. – Iniciar el live cd y cuando cargue el escritorio abrir una consola.

3. – Crear los siguiente directorios:

sudo mkdir /media/karmic 
sudo mkdir /media/karmic/proc /media/karmic/dev /media/karmic/etc

4. – Montar la partición de linux (en mi caso sda6):

sudo mount /dev/sda6 /media/karmic

5. – Enlazar los directorios con la partición linux:

sudo mount -o bind /proc /media/karmic/proc 
sudo mount -o bind /dev /media/karmic/dev/ 
sudo mount -o bind /dev/pts /media/karmic/dev/pts

6. – Copiar este archivo:

sudo cp /etc/resolv.conf /media/karmic/etc/resolv.conf

7 – Crear el contenido para policy-rc.d

printf '#!/bin/sh\n\necho 101\n' | sudo tee -a /media/karmic/usr/sbin/policy-rc.d 
sudo chmod +x /media/karmic/usr/sbin/policy-rc.d

8. – Actualizar la partición de linux afectada con chroot:

sudo chroot /media/karmic apt-get update

9. – Actualizar los paquetes:

sudo chroot /media/karmic apt-get dist-upgrade

10. – Si tenías algún paquete roto:

sudo chroot /media/karmic apt-get -f install

11 – Borrar el archivo policy-rc.d (ya no es necesario)

sudo rm -f /media/karmic/usr/sbin/policy-rc.d

12. – Reiniciar y voilá! Arranque arreglado.


Salir de la versión móvil