Schroot

De Astillas.net

Enlaces y referencias

Introducción

schroot es un conjunto de programas que facilitan mucho la creación y el mantenimiento de entornos cerrados (chroot) para distribuciones Debian.

Se caracteriza principalmente por ...

  • la ejecución de programas o sesiones de usuario en diferentes entornos.
  • el concepto de sesiones, recuperables tras un reinicio de la máquina.
  • la configuración dividida, que permite efectuar un montón de tareas automágicamente tales como:
    • el montaje de sistemas de archivos especiales (/proc y /dev)
    • el montaje de unidades remotaso locales
    • la gestión de volúmenes LVM.
    • la copia de los registros de usuarios (/etc/passwd, ... )

Creación

Para crear con comodidad un entorno cerrado funcional instalamos primeramente el paquete debootstrap, y retocamos la configuración en el archivo /etc/schroot/schroot.conf para dar de alta los diferentes entornos que podemos tener en la misma máquina:

[sid]
description = Debian sid (unstable)
location = /opt/chroot/sid
root-groups = root 
aliases = unstable,default

Una vez hecho esto podemos crear el entorno con un contenido acorde a ello:

1. Creamos el directorio raíz donde situaremos todo el software del enjaulado.

# mkdir -p /opt/chroot/sid

2. Instalamos una distribución base sobre él:

# debootstrap --arch amd64 sid /opt/chroot/sid http://ftp.debian.org/debian

3. Una vez completado lo anterior abrimos una sesión en el nuevo entorno y ejecutamos lo que queramos:

# schroot -c sid 
I: [sid-3b1fea82-b0a0-40b0-9261-88c933e70b95 chroot] Running login shell: '/bin/bash'
#

en este caso se trataría de una sesión interactiva, pero es posible ejecutar directamente un programa:

# schroot -c sid /bin/mount
I: [sid-c0775cbd-4696-4073-84d5-991e6f67980d chroot] Running command: "/bin/mount"
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
#

Usos y costumbres

Configuración del shell

El paquete schroot incluye varios subprogramas que se ejecutan en alguna de sus fases y uno de ellos crea un archivo de texto llamado /etc/debian_chroot que contiene el nombre del entorno enjaulado al que pertenece. De esta forma se puede situar en el archivo de usuario .bashrc unas estrofas como las siguientes para que el indicador del sistema informe permanentemente de dónde estamos.

if [ -z "$debian_chroot" -a -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '