This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Chroot
Chroot (Change root) es una utilidad del sistema Unix que se emplea para cambiar el directorio raíz aparente de modo que se pueda crear un nuevo entorno separado lógicamente del directorio raíz del sistema principal. Este nuevo entorno se conoce como una "jaula chroot". Un usuario que opere dentro de la jaula no puede ver ni acceder ficheros fuera del entorno en el que se le ha confinado.
Uno de los usos principales usos del enjaulamiento es crear un sistema Linux independiente encima del actual para realizar pruebas o compatibilidad del software. Chroot se ve a menudo como una alternativa ligera a la virtualización, ya que se puede correr sin la sobrecarga de un supervisor.
Requisitos previos
Configurar el entorno
Cuando se crea una nueva configuración de chroot, lo primero que se necesita es un directorio para que resida chroot. Por ejemplo, se podría crear un chroot en /mnt/mijaula:
user $
mkdir /mnt/mijaula
user $
cd /mnt/mijaula
Para montar una instalación ya existente desde una partición, se puede lanzar la siguiente orden. Asegúrese de reemplazar la cadena <DISPOSITIVO>
en el ejemplo de abajo por el disco y partición de la instalación existente:
user $
mkdir /mnt/mijaula
user $
mount /dev/DISPOSITIVO /mnt/mijaula
Si ya se ha creado una instalación previamente en un subdirectorio del sistema de ficheros raíz actual, se pueden omitir los pasos indicados arriba.
Desempaquetar los ficheros de sistema y el árbol Portage (nuevas instalaciones)
Cuando se está construyendo una nueva instalación, el siguiente paso es descargar el stage3 y los ficheros tarball de Portage para colocarlos en la localización chroot. Para obtener más información sobre este proceso, por favor, lea Descargar el stage comprimido (tarball) y Extraer el stage comprimido del manual de Gentoo.
root #
tar xvjpf stage3-*.tar.bz2 -C /mnt/mychroot
root #
links http://distfiles.gentoo.org/snapshots/
root #
tar xvjf portage-*.tar.bz2 -C /mnt/mychroot/usr
Configuración
Antes de introducirse en la jaula se necesita montar algunos directorios:
root #
mount --rbind /dev /mnt/mijaula/dev
root #
mount --make-rslave /mnt/mijaula/dev
root #
mount -t proc /proc /mnt/mijaula/proc
root #
mount --rbind /sys /mnt/mijaula/sys
root #
mount --make-rslave /mnt/mijaula/sys
root #
mount --rbind /tmp /mnt/mijaula/tmp
Se necesitarán copiar algunos ficheros de configuración básica desde el anfitrión, no sobrescriba make.conf cuando se esté utilizando una instalación ya existente.
user $
cp /etc/portage/make.conf /mnt/mijaula/etc/portage # Si está usando una instalación ya existente, no lance esta orden.
user $
cp /etc/resolv.conf /mnt/mijaula/etc
copypasta option (optional)
It's possible to invoke this command to save time if you're able to copy+paste.
Do not forgett to change /mnt/mychrooto AND /dev/sda4 for your variables if neccesary!!
root #
mkdir /mnt/mychroot && cd /mnt/mychroot && mount /dev/sda4 /mnt/mychroot && mount --rbind /dev /mnt/mychroot/dev && mount --make-rslave /mnt/mychroot/dev && mount -t proc /proc /mnt/mychroot/proc && mount --rbind /sys /mnt/mychroot/sys && mount --make-rslave /mnt/mychroot/sys && mount --rbind /tmp /mnt/mychroot/tmp && chroot /mnt/mychroot /bin/bash
In Chroot environment do not forgett on:
root #
source /etc/profile
root #
env-update
root #
export PS1="(chroot) $PS1"
Utilización
Una vez hecho esto, nos podemos introducir en el entorno jaula lanzando las siguientes órdenes:
root #
chroot /mnt/mijaula /bin/bash
root #
env-update
root #
source /etc/profile
root #
export PS1="(chroot) $PS1"
Cuándo se esté realizando una instalación nueva, se debería sincronizar Portage para asegurarse de que todo está actualizado.
root #
emerge --sync
El sistema es preparado. Se puede ahora instalar software, jugar un poco, probar paquetes y configuraciones experimentales sin que ello tenga ningún efecto en el sistema principal. Para abandonar la jaula, teclee simplemente exit o pulse Ctrl + d. Al hacer esto, se devolverá la consola a su entorno normal. No olvide desmontar (umount) los directorios que se han montado.
Guiones de inicio
Si se van a poner en marcha jaulas chroot a menudo, es posible acelerar el montaje de los directorios utilizando un guión de inicio. Se podría añadir el guión al nivel de ejecución por defecto y por tanto se configuraría de forma automática en el inicio:
/etc/init.d/mijaula
#!/sbin/openrc-run depend() { need localmount need bootmisc } start() { ebegin "Montando los directorios de la jaula" mount -o rbind /dev /mnt/mijaula/dev > /dev/null & mount -t proc none /mnt/mijaula/proc > /dev/null & mount -o bind /sys /mnt/mijaula/sys > /dev/null & mount -o bind /tmp /mnt/mijaula/tmp > /dev/null & eend $? "Ocurrió un error mientras se montaban los directorios de la jaula" } stop() { ebegin "Desmontando los directorios de la jaula" umount -f /mnt/mijaula/dev > /dev/null & umount -f /mnt/mijaula/proc > /dev/null & umount -f /mnt/mijaula/sys > /dev/null & umount -f /mnt/mijaula/tmp > /dev/null & eend $? "Ocurrió un error mientras se desmontaban los directorios de la jaula" }
Cuando se utiliza un directorio o partición diferentes, añada las órdenes de montaje necesarias en la función start()
y cambie /mnt/jaula al nombre apropiado.