- ENTRADA 044 -
Enjaulandote en chroot
- ¿Alguien sabe donde está la señorita Anna Chapman?
- Creo que se fue al otro lado, señor.
--- Fecha: jue 23 may 2024 13:10:38 CEST ---
Chroot es una técnica utilizada en los sistemas *nix creado en 1982 por Bill Joy para probar su sistema de instalación y construcción.
Sirve para crear un acceso a un sistema operativo A desde otro sistema operativo B para usarlo como si fuese el propio sistema operativo A, es decir, se crea un entorno separado lógicamente del directorio raíz del sistema de inicio, y se le suele llamar "entorno chroot" o "jaula chroot", ya que el usuario/a/e que lo crea está "enjaulado" dentro de ese sistema A y no puede ver ni acceder a ficheros del sistema operativo B.
Se suele usar casi siempre para crear un sistema *nix independiente encima del actual para instalar, solucionar problemas o probar cosas como compatibilidades de software. Lo habitual es utilizar un formato Live (CD o USB) para entrar al sistema operativo principal del disco duro, aunque también se suele usar mediante SSH.
Archlinux, por ejemplo, lo usa para su propia instalación, ya que al iniciar desde un Live, se instala un sistema base en el disco duro y luego hay que "enjaularse" en él para seguir la instalación.
Pero también lo he usado muchas veces cuando me he cargado algo, sobre todo el grub, y el sistema no arranca y he tenido que enjaularme para solucionar el problema.
La forma de hacerlo es muy fácil. En algunos sistemas hay scripts de automatización, como Archlinux y su arch-chroot, pero si no, hacerlo a mano es cuestión de seguir 4 pasos.
Creando una jaula chroot
Tengo un sistema Archlinux instalado en el disco duro /dev/sda1 que no arranca porque he roto grub, y arranco desde el LiveUSB de EndeavourOS, por ejemplo.
1. Primero he de crear un directorio donde residirá la jaula chroot, en mi caso "jaula", pero tu puedes llamarlo como quieras:
mkdir /mnt/jaula
2. Ahora monto ahí el disco duro donde tengo Archlinux
mount /dev/sda1 /mnt/jaula
Con esto me traigo Archlinux al Live EndeavourOS
NOTA: Si tu dispositivo es otro, cambialo
3. Como quiero que la jaula se comporte como un minisistema oerativo completo, monto sobre ella el actual sistema Live (el orden es importante):
mount -o bind /proc /mnt/jaula/proc mount -o bind /dev /mnt/jaula/dev mount -o bind /dev/pts /mnt/jaula/dev/pts mount -o bind /sys /mnt/jaula/sys
4. Activo el chroot así:
chroot /mnt/jaula
En vez de la orden anterior se puede especificar el shell que usará chroot:
chroot /mnt/jaula /bin/fish
Pues ahora posiblemente veré que ha cambiado el prompt, y eso es buena señal, porque indica que ya estoy dentro del sistema "jaula" y ya no me afectará nada del entorno LIVE desde el que arranqué, como librerías, versión de kernel, etc. Ahora todo lo que instale, configure o rompa lo haré dentro del sistema del disco duro sda1 en el que estoy enjaulado, no del Live desde el que he iniciado el sistema, así que he de ir con mucho cuidado con lo que hago (si hago un "ls" veré que pese a haber iniciado desde un Live, estoy dentro de Archlinux).
Salir de chroot
Cuando ya haya solucionado el problema, ya puedo salir de la jaula:
exit
Esto me devuelve al sistema Live desde el que inicié. Para terminar, tengo que desmontar todo lo que monté al principio (el orden es importante):
umount /mnt/jaula/sys umount /mnt/jaula/dev/pts umount /mnt/jaula/dev umount /mnt/jaula/proc umount /mnt/jaula
Reinicio el sistema y cruzo los dedos de las manos y de los pies para que el problema que afectaba el arranque del sistema se haya solucionado.
Tags: #chroot #jail
/blog/