Linux – chroot (ejecución de varios Linux en una máquina)

por | 9 febrero, 2006

En este trabajo se instala un entorno chroot sid partiendo en un sistema principal Sarge.

¿QUÉ ES CHROOT?

Chroot es una instrucción de linux que nos permite ejecutar una segunda instancia del usuario root en otro árbol de directorios distinto al suyo.

¿QUÉ ES DEBOOTSTRAP?

Debootstrap es una pequeña maravilla que permite instalar el sistema operativo linux en un directorio que le indiquemos. Si no lo tenemos instalado, tendremos que hacerlo:

 # apt-get install debootstrap

Ejecutar # man bootstrap para información sobre opciones del comando.

ERROR EN INSTALACIÓN CON DEBOOTSTRAP:

 Si nos aparece un error del tipo:

# debootstrap sid /chroot-sid http://ftp.rediris.es/debian

I: Retrieving debootstrap.invalid_dists_sid_Release
I: Validating debootstrap.invalid_dists_sid_Release
I: Retrieving debootstrap.invalid_dists_sid_main_binary-i386_Packages

….etc.

sin llegar a realizar la instalación, es preciso actualizar el debootstrap.

Solución:

Instalar debootstrap de la versión Sid. Para ello:

  1. Cambiar el archivo sources.list para que apunte a la versión Sid.
  2. Instalar o actualizar debootstrap:   # apt-get install debootstrap
  3. Volver a poner en sources.list las fuentes anteriores. Esta actualización de debootstrap a la última versión no causa ningún problema ya que sólo se descarga e instala ese mismo paquete si dependencias.

INSTALACIÓN DEL SISTEMA BASE SID CON DEBOOTSTRAP

 Lo primero es crear el directorio donde vamos a instalar nuestro nuevo linux:

# mkdir /chroot
# mkdir /chroot/sid

Ahora con debootstrap instalamos un sistema base sid en el directorio creado. Debootstrap no usa los source.list del sistema sino que por defecto apunta a ftp.debian.es. No obstante el comando permite usar cualquier mirror, como hacemos a continuación:

 # debootstrap sid /chroot/sid http://ftp.es.debian.org/debían

Como se observa, en la instalación se lista cada paquete instalado. A partir de aquí tenemos un segundo Debian con la distribución sid con todos sus subdirectorios instalado en /choot/sid.

Otro detalle importante es que en el nuevo subsistema el archivo sources.list apunta al mirror que habíamos indicado en el comando de instalación. Cualquier actualización que hagamos desde este entorno sid usará su propia sources.list.

 Si queremos eliminar toda esta instalación es tan sencillo como borrar su directorio raíz:

# rm –R /chroot/sid

EJECUCION DE CHROOT

No olvidar que un chroot necesita además el sistema de archivos proc. Para ello configuramos en el archivo fstab del sistema principal la línea que nos permite en montaje del sistema de ficheros proc para este entorno chroot:

proc-sid    /chroot/sid/proc proc   none  0     0

Para entrar en el entorno, simplemente se ejecuta:

# chroot /chroot/sid

El intérprete de comandos que se obtiene se estará ejecutando en sid y estará enclaustrado en el árbol de directorios creado en /chroot/sid. Si probamos a listar nuestros directorios personales veremos que ya no están en este entorno.

ACCESO AUTOMATICO A CONSOLA CHROOT

Cada vez que queramos entrar en el entorno chroot tendremos que teclear el comando /# chroot /chroot/sid pero podemos hacer para que se ejecute el proceso login en un terminal virtual diferente pudiendo acceder a él directamente. Para ello editamos, en el sistema principal, el archivo /etc/inittab añadiendo la línea correspondiente:

# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty’s go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6
8:23:respawn:chroot /chroot/sid/ /sbin/getty 38400 tty8   nuevo tty8

Nos hemos saltado el tty7 ya que por defecto es usado por el entorno gráfico x, tal como se comenta en el archivo. Para recargar el nuevo inittab podemos reiniciar el INIT del sitema sin tener que reiniciar la máquina

# init q

A partir de ahí con Ctrl+Alt+F8 accedemos a nuestro sid en modo consola.

(Nota: personalmente esto último a mi no me ha funcionado)

CONFIGURACIÓN DEL SISTEMA BASE E INSTALACIÓN DEL ENTORNO GRAFICO

Lo que hemos obtenido es un entorno de comandos sid muy básico y en ingles. El siguiente paso es configurar el sistema base e instalar todo lo que queramos, incluyendo el entorno gráfico. Esto se puede hacer de muchas maneras: usando apt-get, aptitude, deselect, etc.

Nota: He comprobado que la instrucción base-config no funciona y que al instalar el paquete locales te desinstala automáticamente el base-config.

 Existe el paquete user-es, el cual instala leocales y el scrip castellanizar. Si instalamos user-es y después ejecutamos castellanizar deberíamos poder tener castellanizado el entorno.

INSTALACION DE UN SEGUNDO SARGE DE PRUEBAS

Si no queremos instalar sid pero sí un segundo sistema para hacer test en preproducción, es buena idea instalar un sarge sólo para este fin.

# debootstrap sarge /chroot/sarge http://ftp.es.debian.org/debían

ENTRAR EN EL ENTORNO

# chroot /chroot/sarge

PERSONALIZACIÓN Y CASTELLANIZACION DEL SISTEMA BASE

Una vez dentro de entorno sarge como nuevo root, tendríamos que configurar el sistema base. Si bien está documentado que la instrucción base-config debe funcionar, el resultado obtenido es:

 # base-config
base-config no da opciones de personalización del sistema base al ejecutarlo en este entorno.

Debemos instalar los locales para poner el teclado en castellano:

# apt-get install locales –simulate
Reading Package Lists… Done
Building Dependency Tree… Done
The following NEW packages will be installed:
locales
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst locales (2.3.2.ds1-22 ftp.es.debian.org)
Conf locales (2.3.2.ds1-22 ftp.es.debian.org
#

Selecionamos:

es_ES@euro ISO-8859-15

La generación de locales ya se hace al final de la instalación, aunque se puede repetir:

kepler:/# locale-gen
Generating locales…
es_ES.ISO-8859-15@euro… done
Generation complete.
#

Al entrar y salir otra vez en la sesión ya debemos tener la ñ, acentos, etc.

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *