Creando un chroot en Etch AMD64

Bien la cosa es que tratando de instalar el Google Earth en mi Debian me he encontrado que no existe un paquete nativo para AMD64 (¿qué raro no?), por lo que me las he tenido que ingeniar para instalarlo. Nunca tuve la necesidad de hacer un chroot en el sistema ya que lo único que lo ameritaba era el Flash, pero no pensaba hacerme un chroot expresamente para el Flash y malgastar el espacio en mi disco, pero a la final siempre he tenido que hacerme uno!

Para aquellos que dominan el inglés se pueden leer el Debian GNU/Linux AMD64 HOW-TO ya que los pasos para crear el chroot los he seguido de ahí. Claro que para aquellos que no tengan mucho tiempo o no sientan la necesidad de hacer un chroot siempre existe una manera rápida de hacer funcionar las cosas en un apuro.

Para aquellos que todavía no saben qué es un chroot les recomiendo que le echen un ojo a la Guía de referencia Debian, de todas formas acá les cito textualmente de dicha guía lo que ellos definen como un chroot:

…el programa chroot, nos permite ejecutar diferentes instancias de un entorno GNU/Linux en un único sistema, simultáneamente y sin reiniciar…

El chroot en mi caso, está pensado para poder ejecutar aplicaciones a 32bits en un entorno 64 bits. El chroot es necesario ya que no se puede mezclar aplicaciones 32 bits con librerías 64 bits, por lo que se necesitan las librerías a 32 bits para correr dichas aplicaciones.

Lo que se hace en el chroot es instalar un sistema base para la arquitectura x86. Ésto lo puedes lograr haciendo en una terminal:

# debootstrap --arch i386 sid /var/chroot/sid-ia32 http://ftp.debian.org/debian/

…para lo cual, posiblemente, vas a necesitar el paquete debootstrap. Ahora bien, ¿qué hace el debootstrap?; debootstrap es usado para crear un sistema base debian from scratch (es algo como, desde la nada) sin tener que recurrir a la disponibilidad de dpkg ó aptitude. Todo ésto lo logra descargando los .deb de un servidor espejo y desempaquetándolos a un directorio, el cual, eventualmente sera utilizado con el comando chroot. Por lo tanto la línea de comandos que introduciste anteriormente hace todo eso, sólo que lo vas a hacer para la rama unstable ó sid, en el directorio /var/chroot/sid-ia32 y desde el servidor espejo específicado.

El proceso anterior puede demorar según sea la velocidad de tu conexión. No pude saber cuánto demoro el proceso en mi caso porque cuando empecé a hacerlo eran altas horas de la madrugada y me quedé dormido :(. Lo que tienes que saber es que cuando éste proceso finalice, ya tendrás un sistema base x86 o 32 bits en un disco duro en el directorio /var/chroot/sid-ia32. Una vez finalizado deberías instalar algunas librerías adicionales, pero para hacerlo deberás moverte al chroot y hacerlo con aptitude:

# chroot /var/chroot/sid-ia32

…y luego instalas las librerías adicionales:

# aptitude install libx11-6

Para poder ejecutar aplicaciones dentro del chroot deberás tener también algunas partes del árbol de tu sistema 64 bits, lo cual puedes hacerlo mediante un montaje enlazado. El ejemplo a continuación, enlaza el directorio /tmp a el chroot para que éste pueda utilizar los “sockets” del X11, los cuales están en el /tmp de nuestro sistema 64 bits; y también enlaza el /home para que podamos accesarlo desde el chroot. También es aconsajable enlazar los directorios /dev, /proc y /sys. Para lograr ésto deberás editar tu fstab que se encuentra en /etc y añadir lo siguiente:

# sid32 chroot
/home /var/chroot/sid-ia32/home none bind 0 0
/tmp /var/chroot/sid-ia32/tmp none bind 0 0
/dev /var/chroot/sid-ia32/dev none bind 0 0
/proc /var/chroot/sid-ia32/proc none bind 0 0

…y luego montarlas:

# mount -a

Bien ya vamos llegando a final, unos cuántos pasos más y listo. Lo que necesitamos hacer a continuacióne es establecer los usuarios importantes en el chroot. La forma más rápida (sobretodo si tienes muchos usuarios) es copiar tus directorios /etc/passwd, /etc/shadow y /etc/group al chroot, a menos claro que quieras tomarte la molestia de añadirlos manualmente.

ADVERTENCIA! Cuando enlazas tu directorio /home al chroot, y borras éste último, todos tus datos personales se borrarán con éste, por consiguiente serán totalmente perdidos, por lo tanto debes recordar desmontar los enlaces antes de borrar el chroot.

Corriendo aplicaciones en el chroot

Después de hacer todos los pasos anteriores, ya deberías poder ejecutar aplicaciones desde el chroot. Para poder ejecutar aplicaciones desde el chroot debes hacer en una terminal (en modo root):

# chroot /var/chroot/sid-ia32

Luego deberás cambiarte al usuario con el que quieres ejecutar la aplicación:

# su - usario

Establecer $DISPLAY:

# export DISPLAY=:0

Y finalmente ejecutar la aplicación que quieras, como por ejemplo, el firefox con el plugin de flash! Por supuesto deberás instalar la aplicación antes de ejecutarla, recuerda que lo que has instalado es un sistema base y algunas librerías adicionales.

8 Responses to “Creando un chroot en Etch AMD64”


  1. 1 gaah

    Excelente tutorial =D
    pero .. tengo un error..
    cuando hago chroot como root despues paso a mi usuario al tratar de entrar a cualquier link creado, tmp, proc, home, sys
    me tira el siguente error:
    bash: cd: proc: Too many levels of symbolic links
    tambien como root hace lo mismo ..
    espero que me puedas dar una mano XD
    gracias =D

  2. 2 palermi

    Excelente tutorial !!!
    En mi blog hablé sobre como correr juegos (de 32bits) en amd64, me podrias hacer el favor de verlo, seguramente tu econtrarias otros metodos.

    Gracias

    pd: al google earth lo instalé con automatix

  3. 3 Chantanito

    gaah,

    Ante todo, te ofrezco mis disculpas por la respuesta tan tardía. Según tengo entendido, ése tipo de errores se da cuando tienes un link ó enlace que enlaza de vuelta al original (otro enlace por supuesto). Por ejemplo, si /home/gaah/milmazz es un enlace a /var/www/ y tratas de crear un enlace dentro /home/gaah/milmazz entonces te daría ese tipo de errores. Lo que te recomiendo es verificar que hayas seguido los pasos a cabalidad.

    Saludos

  4. 4 Chantanito

    Hola Palermi, gracias por la invitación. Ahora me doy una pasada por tu blog. Te recuerdo que no uso Ubuntu, en su lugar uso Debian Etch ;) Y la verdad no tengo idea de si se pueda instalar Google Earth con Automatix en Debian (de seguro si :D),pero la forma que utilicé no me parecío nada complicada.

    Saludos

  5. 5 javier

    hola perfecto con todo te felisito, pero solo me da un solo error ala hora de correr una aplicacion x el error es el siguiente:

    Xlib: connection to “:0.0″ refused by server
    Xlib: No protocol specified

    me suana a servidor x ocupado pero se supone que asi debe funcionar :(
    PD: segui todo al pie de la letra y sin ningun error estoy trabajando sobre debian.

  6. 6 alejandro

    Hola porke me marca error al ejecutar chroot /directorio/chroot, me dice ke el archivo bash no se encuentra y efectivamente dicho archivo no se encuentra, el detalle es como los instalo o le hago un enlace al bash de mi amd64

  7. 7 alejandro

    Perdón el error ke me marca es este:

    chroot /media/swap/virtual_machine/chroot32
    chroot: cannot run command `/bin/bash’: No such file or directory

    a ver si me pueden echar la mano porke me urge echar a andar un entorno chroot. De todos modos yo seguiré releyendo el manual y otra documentación a ver a ke se debe.

  8. 8 aneolf

    Enhorabuena por el tutorial. Me parece muy bueno.

    He creado mi chroot sin problemas, no obstante quería preguntarse si existe algún script para ejecutar una aplicación 32 bits (concretamente swiftfox con el plugin flash player) sin necesidad de entrar en una terminal, loguearte como root, y seguir todos los pasos que describes.

    De hecho, me gustaría tener el icono de swiftfox en el escritorio para utilizarlo como navegador por defecto hasta que se publique el plugin flash player para iceweasel 64.

Comments are currently closed.