En esta nota: La ultima parte de la configuracion del entorno chroot Debian Lenny, donde veremos como levantar el X server y el escritorio Gnome dentro de la jaula, y ademas configuraremos apache2 con php5 y mod_python para correr dentro de la jaula.

Puedes acceder a la nota anterior aqui: Crear entorno chroot Debian Lenny en Ubuntu 8.04 Hardy + ssh chrooted login

** Generar los dispositivos del directorio /dev **

Para poder usar los dispositivos sin problemas dentro de la jaula, debemos crearlos en el directorio /dev Por ejemplo, la 1ra vez que levante el servidor X dento de la jaula sin haber configurado el directorio /dev dentro del entorno chroot, no me funcionaba el mouse dentro de la jaula, pero si fuera de la jaula.

chroot# cd /dev ; /sbin/MAKEDEV -v generic ; cd -

Instalamos el entorno de escritorio

En este caso, instalare gnome, pero la idea es la misma con cualquier otro escritorio, ya sea KDE, XFCE, etc, salvo que los archivos de configuracion varian segun los escritorios.

chroot# aptitude install gnome

** Configurar el GDM (gnome display manager ) para que arranque el servidor X en la virtual terminal 9 – vt9 **

El GDM es el programa que se encarga de presentarnos un login grafico, y de permitirnos seleccionar distintos entornos o escritorios en cada login (en caso de que tengamos instalados mas de un entorno de escritorio — gnome, kde, xfce ). GDM es una alternativa al tradicional XDM, y al KDM.

Para configurar el GDM en debian Lenny existen principalmente dos archivos:

El archivo de configuracion general /usr/share/gdm/defaults.conf

y el archivo recomendado para ‘customizaciones’: /etc/gdm/gdm.conf

Este archivo puede ser modificado con la herramienta gdmsetup, o tambien puede ser modificado editandolo manualmente.

Aqui seguiremos este ultimo enfoque. Simplemente en la seccion [daemon] del archivo

chroot# vim /etc/gdm/gdm.conf
[daemon]
# agregamos las siguientes lineas:
FirstVT=9
VTAllocation=true

Entrando al login grafico del entorno chroot

Para iniciar el Gnome Display Manager, estando en el entorno chroot, introducimos el siguiente comando:

chroot# /etc/init.d/gdm start

Esto nos presentara con el login grafico del entorno chroot.

Dos X servers corriendo al mismo tiempo

Lo que logramos es que cada entorno corra su propio servidor X, como se puede apreciar en la siguiente salida:

chroot# ps aux | grep gdm
root      5461  0.0  0.0   1680   504 ?        S+   01:34   0:00 grep gdm
root      5566  0.0  0.1  15160  1704 ?        Ss   May19   0:00 /usr/sbin/gdm
root      5569  0.0  0.3  15640  3188 ?        S    May19   0:00 /usr/sbin/gdm
root      5573  2.1  3.0  38404 31636 tty7     Ss+  May19  11:51 /usr/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7
root     27598  0.0  0.1  11640  1672 ?        Ss   May19   0:00 /usr/sbin/gdm
root     27607  0.0  0.2  12008  2780 ?        S    May19   0:00 /usr/sbin/gdm
root     27609  0.4  2.7  33328 28060 tty9     Ss+  May19   0:32 /usr/bin/X :0 -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt9

Para intercambiar de entorno, simplemente pulsamos Ctrl+Alt+F7 para pasar al entorno grafico principal con Ubuntu, y Ctrl+Alt+F9 para pasar al entorno grafico chroot con Debian.

Experimentar sin miedo

¿ Y ahora que ? Bueno, como se explicaba en la nota anterior, las ventajas de un entorno chroot es que se puede experimentar sin miedo a romper la distribucion principal, pues nada de lo que hagamos dentro de la jaula podra afectar al sistema de archivos de nuestra distribucion principal. Otra idea importante de los entornos chroot es que se utilizan mucho para correr servidores o servicios, como un servidor apache o un ftp, con el agregado de que si el servidor es comprometido por un atacante, este no ganara el control total de la maquina, sino simplemente del sistema de archivos de la jaula. (Es decir, queda atrapado dentro de la jaula).

Como los puertos de la PC son compartidos por ambos entornos (el chroot solo aisla el sistema de archivos ), podemos correr un servidor apache dentro de la jaula y accederlo via http://localhost desde ambos entornos. Esto quiere decir, que por ejemplo, podriamos correr nuestro servidor web o ftp desde dentro de la jaula, sin ninguna configuracion extra, ya que los puertos de la jaula estaran visibles externamente. Para acceder al servidor web de la jaula, desde otra computadora de la red, simplemente escribimos la ruta como si el servidor estuviese instalado en la distribucion principal, por ejemplo: http://hardy Tener en cuenta que si se instala un servidor web tanto en la jaula como en la distribucion principal, hay que configurar a apache para que escuche en distinto puerto (default 80 ), ya que no es posible hacer que dos instancias de apache escuchen en el mismo puerto (no sabria si nos estamos refiriendo a la instancia dentro de la jaula, o la instancia de la distribucion principal ).

Apache corriendo en la jaula

La instalacion de apache con el administrador de paquetes aptitude es bastante trivial. Aqui solo expondre los paquetes relacionados con apache que he instalado en la jaula:

chroot# dpkg -l *apache* | grep ^ii
ii  apache2-doc                          2.2.8-3                    documentation for apache2
ii  apache2-mpm-prefork                  2.2.8-3                    Traditional model for Apache HTTPD
ii  apache2-utils                        2.2.8-3                    utility programs for webservers
ii  apache2.2-common                     2.2.8-3                    Next generation, scalable, extendable web se
ii  libapache2-mod-php5                  5.2.5-3                    server-side, HTML-embedded scripting languag
ii  libapache2-mod-python                3.3.1-3+b1                 Python-embedding module for Apache 2
ii  libapache2-mod-python-doc            3.3.1-3                    Python-embedding module for Apache 2 - docum

Notar que instale la version apache2-mpm-prefork, porque es una version compatible con librerias que no son thread-safe, y esta instalacion la usare porsteriormente para probar django (que es un framework para desarrollar aplicaciones web en python ). En la documentacion de django aclara que hay que tener instalada la version mpm-prefork de apache.

Veamos los paquetes instalados de mysql:

chroot# dpkg -l *mysql* | grep ^ii
ii  libdbd-mysql-perl                    4.006-1                    A Perl5 database interface to the MySQL data
ii  libmysqlclient15off                  5.0.51a-5                  MySQL database client library
ii  mysql-client-5.0                     5.0.51a-5                  MySQL database client binaries
ii  mysql-common                         5.0.51a-5                  MySQL database common files
ii  mysql-server-5.0                     5.0.51a-5                  MySQL database server binaries

Levantando los servicios

chroot# /etc/init.d/mysql start

chroot# /etc/init.d/apache2 start

Eso es todo por ahora. A disfrutar del chroot !!

Problema con el audio en entorno chroot

Nota: Un problema que todavia no he resuelto es que en el entorno chroot no tengo audio. Algo que se puede intentar es remontar el directorio /dev del sistema principal, en el directorio /dev del sistema chroot, antes de entrar al entorno chroot. Pero todavia no lo he probado.

hardy# mount /dev/  /chroot/lenny/dev  -o bind

Dejanos tus comentarios

¿ Habias usado alguna vez un entorno chroot ? Si tienes alguna pregunta o consejo sobre el material expuesto, por favor colabora escribiendo un comentario.

Copyright: http://snarvaez.poweredbygnulinux.com Sebastian Narvaez
este documento ha sido publicado bajo la siguiente licencia: “Verbatim copying and distribution of this entire article are permitted in any medium provided this notice is preserved.”