jueves, 3 de marzo de 2011

Hacer chroot a un sistema dañado

El escenario es el siguiente: En el disco rígido de nuestra PC tenemos instalado Ubuntu u otro sistema operativo basado en GNU/Linux. Todo funciona de maravillas y estamos muy felices, peeeero...



Pero por alguna razón (conocida o no, no importa), nuestro sistema se dañó. No arranca más o funciona de manera muy inestable, lo cual lo hace inusable. ¿Qué hacer? Si nos dejamos guiar por el antiguo "acto reflejo" que se usa muy a menudo en sistema Windows, pretenderemos reinstalar el SO, perdiendo todos nuestros datos, nuestra configuración, nuestro sistema...



Pero GNU/Linux es otro mundo :) Un mundo feliz, por cierto :) Desde luego, es posible reinstalar el sistema, pero aún con este camino tan dramático estamos mejor parados para proteger nuestros datos, ya que el contenido de /home (que alberga todos nuestros datos personales) está en una partición distinta a la / (raiz), de modo que sólo reescribiremos la partición del sistema, no la de los datos de usuario. Pero no es esto lo que ahora pretendemos...


La mejor manera de recuperar un sistema dañado es hacer chroot a él, desde una sesión LiveCD o desde otro GNU/Linux instalado en nuestro disco rígido.
¿Qué es chroot? Es cambiar el directorio raiz en un sistema que está funcionando. En la Wikipedia hay bibliografía ;)


Entonces, los pasos son los siguientes:

  1. Iniciamos la PC que tiene el SO dañado con un LiveCD o desde otro GNU/Linux, instalado en el disco rígido.

  2. Abrimos una Terminal. Puede ser una Terminal gráfica o textual; cualquiera de ella nos sirve :)

  3. Adquirimos acceso de root al sistema. Este paso depende de qué SO estamos usando para realizar el rescate. En algunos casos ya somos root (Puppy), en otros sistemas habrá que usar el comando "su" y la clave de root y ,por último, en Ubuntu y derivados será suficiente con correr todos los comandos anteponiendo "sudo" y colocando luego la clave del usuario.

  4. Creamos un directorio en el cual montar el sistema a recuperar:
    mkdir /mnt/linux
    (en este caso, creamos el directorio /mnt/linux y sobre él trabajaremos, puede usarse cualquier otro nombre y ubicación)

  5. Montamos el sistema dañado en el directorio recién creado. Para hacerlo, tenemos que saber en qué partición del disco rígido está instalado el citado sistema roto. Si está en /dev/sda2, el comando de montaje, entonces, es el siguiente:
    mount -t auto /dev/sda2 /mnt/linux

  6. Ahora montamos los sistemas de archivos virtuales. Si bien chroot no los necesita, son necesarios para varias tareas de mantenimiento que pueden llevarse a cabo durante la recuperación, así que los montamos. Así:
    mount -o bind /dev /mnt/linux/dev
    mount -o bind /dev/pts /mnt/linux/dev/pts
    mount -o bind /dev/shm /mnt/linux/dev/shm
    mount -o bind /proc /mnt/linux/proc
    mount -o bind /proc/bus/usb /mnt/linux/proc/bus/usb
    mount -o bind /sys /mnt/linux/sys

  7. Damos acceso a Internet al sistema a recuperar. Este paso no siempre resulta necesario, pero no está de más realizarlo. Así nos aseguramos que una vez dentro del sistema dañado tendremos la misma disponibilidad de Internet que tenemos en el sistema real, con el que estamos accediendo. El comando es:
    cp /etc/resolv.conf /mnt/linux/etc/resolv.conf

  8. Listo todo lo previo :) Entramos entonces al sistema dañado con
    chroot /mnt/linux

  9. Y ya estamos adentro del sistema dañado! Ahora los pasos a seguir dependen del tipo de problema que se encontró y de qué distribución de GNU/Linux es la que está instalada, ya que muchas de las herramientas de recuperación dependen de cada distro (en Ubuntu no tenemos yum y los usuarios de Mandriva usan urpmi...)

  10. Al finalizar las tareas de recuperación - mantenimiento, volvemos al sistema inicial con el comando "exit". Reiniciamos la PC y verificamos que el trabajo realizado fue exitoso :)


Esto es todo. Los pasos para entrar al sistema son los detallados; una vez adentro nos moveremos según las necesidades.

4 comentarios:

Anónimo dijo...

Excelente! Un tuto didácto, conciso y divertido tal cual es GNU/Linux; seguramente vendrá bien a más de un@ así que guardo el url de referencia para enviarte n00bs perdid@s ;)

Mario Mey dijo...

Es el único tutorial que dice como darle conexión a internet. Perdí este link como 10 veces... ¡y siempre lo perseguí hasta encontrarlo!

Me ayudó a arreglar muchas cosas.

¡Gracias!

Daniel-TL dijo...

Me alegro, Mario, que te haya venido bien :)
Suerte!!

Mario Mey dijo...

Y vuelvo a usar este tuto...


¡Gracias de nuevo!

Firefox 3

NO al Canon Digital!

No Al Canon en Argentina