INICIO   Otros temas


chroot

Autor: Fernando Rafael Filipuzzi

E-mail: fernando_6867@yahoo.com.ar



  1. Introducción

    Con deboostrap y chroot se puede crear un entorno donde se puedan correr aplicaciones de 32 bits en un sistema de 64 bits,resolver problemas de compatibilidad de versiones o crear un entorno de prueba seguro.

    Uno de los problemas mas comunes que tengo es cuando quiero construir una versió de gcc cuyas dependencias son versiones antiguas con respecto a las que provee los repositorios, tampoco permite bajarlas, construirlas e instalarlas por entrar en conflictos de nombres, otro problema es cuando quiero instalar algo para probar sin alterar el sistema.

    Los comandos utilizados son:

    1. chroot:

      chroot es una operación que cambia el directorio raiz para los procesos y sus hijos.

    2. debootstrap:

      Instala un sistema basado en Debian dentro de otro sistema basado en Debian o otro; se puede también isntalar en un subdirectorio o en una particion que no se utiliza.Esta herramienta utiliza un solo repositiorio de paquetes para la instalación.


  2. Instalación en otras versiones de Debian:

    Algunas opciones para resolver el problema de las versiones de dependencias:

    1. Mezclando los repositorios de distintas versiones de Debian, me funcionó solo con Lenny pero no con Wheezy. Para esto es necesario agregar los repositorios de etch en el /etc/apt/sources.list

      	deb http://archive.debian.org/debian/ etch main contrib
      

      Después de hacer aptitude update a los repositorios, se instala lo siguiente:

      	host:# apt-get -t etch --yes --no-install-recommends --no-upgrade \
      	install gcc-3.3 autoconf texinfo make cvs svn man2html unzip
      

      el problema en las versiones mas nuevas de Debian es que la libc6 no son compatibles, entran en conflicto de nombres con las dos versiones, una solución que encontré es lo que está en le siguiente punto.


    2. Creando una jaula o entorno virtual con chroot, con esto resolvemos los conflictos de nombres de la glibc debido a tener una versión de Debian instalada en el host diferente a la Etch.

      Para crear este entorno virtual necesitamos una partición vacía, no me funcionó en una carpeta. Como no tenía otra una partición disponible implementé una unidad virtual con lo siguiente:

      				
      	host:# dd if=/dev/zero of=/camino_hacia_fichero_virtual/etch-virtual bs=1M count=3000	
      	host:# mkfs.ext3 -v ./etch-virtual	
      	host:# mkdir /mnt/etch
      

      con el comando dd creamos la imagen, y con el comando mke2fs le damos formato a esta unidad. Luego si queremos que queda vez que reinicie o con mount /camino_del_fichero_virtual/etch-virtual monte esa unidad virtual agregamos en el fstab:

      	#dico virtual etch
      	/camino_del_fichero_virtual/etch-virtual     /mnt/etch    ext3    loop    0       0
      

      sino editamos el fstab lo podemos montar con

      	host:# mount -t ext3 -o loop ./etch-virtual /mnt/etch	
      

      En caso de por ejemplo en una unidad flash o otra unidad que estuviese como sdb1, para darle formato con mke2fs:

      	host:# mkfs -t ext4 /dev/sdb1
      

      antes de hacer esto es bueno asegurarse de que unidad estamos formateando, con "fdisk -l" o GParted se puede listar las particiones. Y para montar esta unidad:

      	host:# mount -rwt ext4 /dev/sdb1 /mnt/etch
      

      Una vez montada la unidad en la que se va a realizar la instalación continuamos con la instalación:

      	host:# aptitude install debootstrap
      	host:# debootstrap etch /mnt/etch http://archive.debian.org/debian/	
      

      terminado esto y ejecutando lo siguiente entramos en el entorno virtual.

      	host:# mount -o bind /dev /mnt/etch/dev
      	host:# chroot /mnt/etch
      

      para la primera línea mount -o bind /dev /mnt/etch/dev, es para tener acceso a los dispositivos desde la jaula; se pueden también agregar en el /etc/fstab junto con otros como el /dev/proc, etc:

      	#dico virtual etch
      	/camino_del_fichero_virtual/etch-virtual     /mnt/etch    ext3    loop    0       0
      
      	#chroot etch
      	/tmp            /mnt/etch/tmp        none    bind            0       0
      	/dev            /mnt/etch/dev        none    bind            0       0
      	/proc           /mnt/etch/proc       proc    defaults        0       0
      	/media/cdrom0   /mnt/etch/cdrom0     none    bind            0       0	
      

      ahora despu&ecuate;s de ejecutar el chroot estamos dentro del entorno virtual, en este caso nuestro etch, aquí editamos el /etc/apt/sources.list con:

      	deb http://archive.debian.org/debian etch main contrib non-free
      

      actualizando los repositorios con aptitude udpate.

      	host:# aptitude install locales locales-all
      	host:# dpkg-reconfigure locales
      

      Hasta aquí se tiene instalado el entorno virtual, editando el fstab como esta ahí arriba se puede entrar cada vez que reiniciamos la máquina con chroot /mnt/etch siempre como usuario root, y para salir de este entorno ejecutando exit. Para finalizar, se puede instalar dchroot para poder correr sin ser root, mas referencia en este enlace https://wiki.ubuntu.com/DebootstrapChroot.


  3. Algunas Referencias

    1. Entornos chroot en Debian
    2. chroot
    3. Debootstrap
    4. Migrate32To64Bit
    5. Installing apps in a 32-bit chroot in AMD64 Debian system
    6. Virtualizando Ubuntu con Debootstrap y Chroot
    7. Eclipse en chroot 32 bits en Kubuntu 10.10 Maverick 64 bits (actualizado para Debian Wheezy 64)

INICIO   Otros temas