Chroot

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Chroot and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎português do Brasil • ‎русский • ‎Türkçe • ‎中文(中国大陆)‎


Resources

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 #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

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:

ARCHIVO /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.

Vea también