miércoles, 2 de febrero de 2011

Enjaulando desde ubuntu con "chroot"

Y o preguntaréis, ¿para que es esto exactamente?
Pues resulta que podemos confinarnos como root a una partición en la que tenemos otro ubuntu instalado.

 ¿Para qué?
Pues por ejemplo, imaginaos que tenéis vuestro Ubuntu instalado perfectamente y un día, saz, tocasteis algo y no podéis iniciar de ninguna de las maneras, o, os cargásteis el grub y no podéis iniciar nada.... o cualquier cosa.

Pues para enjaular una distro de Ubuntu, necesitamos usar otra distribución de Ubuntu, bien el Live CD o USB.

(si teneis otra partición con otro ubuntu en el disco duro también sirve)

Bien, imaginemos que ya habéis iniciado el LiveCD  y estais en el escritorio.

Abrimos una terminal y escribimos:

1.-Para listar los discos y las particiones:
scorpyo@pc-cito:~$ sudo fdisk -l

Localizamos la partición en la que tenemos nuestro sistema de archivo, por ejemplo /dev/sda2

2.-Montamos la partición en la carpeta /mnt:
scorpyo@pc-cito:~$ sudo mount /dev/sda2 /mnt

Ahora, para comprobar si es nuestra partición, podemos entrar en /mnt y hacer un listado de los archivos así:
scorpyo@pc-cito:~$ cd /mnt
scorpyo@pc-cito:~$ ls

Si no es la partición correcta desmontamos la unidad y volvemos a empezar para montar otra.
scorpyo@pc-cito:~$ sudo umount /dev/dispositivo

3.-Si usamos una partición para /home en la distro que queremos ejaular, necesitamos montarla tambien, por ejemplo, imaginemos que es /dev/sda3
scorpyo@pc-cito:~$ sudo mount /dev/sda3 /mnt/home

4.-Ahora solo queda montar el resto de dispositivos así:

scorpyo@pc-cito:~$ sudo mount --bind /dev /mnt/dev
scorpyo@pc-cito:~$ sudo mount --bind /dev/pts /mnt/dev/pts
scorpyo@pc-cito:~$ sudo mount --bind /proc /mnt/proc
scorpyo@pc-cito:~$ sudo mount --bind /sys /mnt/sys



5.-Y por ultimo acedemos como root al sistema que hemos montado en /mnt así:
scorpyo@pc-cito:~$ sudo chroot /mnt

Bien, ya estamos accediendo como root en el sistema ubuntu que hemos montado.

Ahora es como si la terminal, se estuviese ejecutando en el otro sistema, por ejemplo, podríamos arreglar grub, instalar un programa, desinstalarlo, mirar el escritorio como si fuese el tuyo... cambiar passwords.

Imaginemos que ese sistema es ubuntu y tiene un problema con las X que no nos deja entrar ni en modo recovery.

Pues escribimos en la terminal:
scorpyo@pc-cito:~$ dpkg-reconfigure xserver-xorg

O queremos actualizar el sistema...
scorpyo@pc-cito:~$ sudo apt-get update
scorpyo@pc-cito:~$ sudo apt-get upgrade

Tiene muchos usos, seguro que le sacas provecho, yo por ejemplo actualizo una distro de BackTrack (que está basada en ubuntu) y la tengo instalada en una partición del disco, pero como no me apetece arrancarla porque estoy liado con mi ubuntu pues de vez en cuando la actualizo desde aquí y ya está.

Para salir del estado en el que os encontráis escribir:
root@pc-cito:~# exit 

Y para desmontar todo hacer:
scorpyo@pc-cito:~$ umount /mnt/dev
scorpyo@pc-cito:~$ umount /mnt/proc
scorpyo@pc-cito:~$ umount /mnt/home
scorpyo@pc-cito:~$ umount /mnt


Saludos.

2 comentarios:

  1. Yo tuve que hacer esto para instalar ubuntu en unos Dell que no admitían grub y había que instalar lilo para que funcionaran.

    http://cpcbegin.host56.com/pc/index.php?pagina=udell

    ResponderEliminar
  2. ¿que no admitían Grub? no sabía yo que pudiese dar problemas con algunos equipos o Discos duros.

    Le echaré un vistazo.

    Gracias!

    ResponderEliminar

Deja aquí tu mensaje...