Aplicaciones x86 en AMD64
La mayor parte de los nuevos equipos traen instalado con un microprocesador basado en la arquitectura AMD64 (p.e. Intel Core 2 Duo, AMD Turion 64). Para aprovechar las mejoras de las extensiones de 64 bits de esta arquitectura con respecto a la arquitectura x86 (32 bits) es necesario tener instalado la versión AMD64 del sistema operativo. Ubuntu tiene una versión para 64 bits desde hace años.
A pesar de las ventajas, ciertas aplicaciones no tienen una versión de 64 bits sino sólo de 32 bits. De todas formas, eso no significa que no puedan ser ejecutadas sobre un sistema operativo de 64 bits. Hay varias formas de hacer esto.
Contenido
Paquete ia32-libs
La solución más sencilla es instalar el paquete oficial ia32-libs, disponible en todas las versiones hasta la fecha de Ubuntu:
$ sudo apt-get install ia32-libs
Si somos desarrolladores y además queremos compilar aplicaciones para x86 desde nuestro Ubuntu para AMD64, es necesario instalar el paquete ia32-libs-dev:
$ sudo apt-get install ia32-libs-dev
Lamentablemente, para las últimas versiones de Ubuntu este paquete no está disponible.
chroot
Otra solución es crear una jaula chroot con una distribución de 32 bits. A continuación se describe cómo instalar una Ubuntu 7.04 (Feisty Fawn) para x86, aunque cada uno puede adaptar el proceso a sus necesidades, y según la versión de Ubuntu que tenga instalada.
Creación del chroot
Lo primero es instalar los siguientes paquetes. Desde un terminar escribimos:
$ sudo apt-get install dchroot debootstrap
Después, creamos un nuevo directorio donde se instalará todo el chroot, por ejemplo el siguiente:
$ sudo mkdir /chroot-feisty-i386/
Una vez hecho esto hay que editar el fichero /etc/dchroot.conf y añadir la siguiente línea al final:
feisty /chroot-feisty-i386
Después, ejecutamos el siguiente mandato para descargar e instalar una versión mínima de Ubuntu:
$ sudo debootstrap --arch i386 feisty /chroot-feisty-i386/ http://archive.ubuntu.com/ubuntu
Una vez que se han descargado he instalado todos los paquetes base, ya es posible "entrar" en la jaula:
$ sudo chroot /chroot-feisty-i386/
Ahora, en ese terminal, es como si estuviésemos en otro sistema operativo, donde todas las aplicaciones que ejecutemos son de 32 bits en vez de 64 bits (aunque realmente hay muy pocas aplicaciones instaladas en la jaula ahora mismo). La instalación es tan mínima que es conveniente instalar algunos paquetes más:
$ sudo apt-get language-pack-en language-pack-es
Ahora reconfiguramos los idiomas:
$ dpkg-reconfigure locales
Ahora, es preciso volver a nuestra Ubuntu de 64 bits base para seguir con el proceso. Para salir simplemente ejecutamos:
$ exit
Configurar el chroot
Ahora copiamos la lista de repositorios de paquetes para configurar el apt del chroot:
$ sudo cp /etc/apt/sources.list /chroot-feisty-i386/etc/apt/sources.list
Una vez hecho esto, volvemos a entrar en la jaula:
$ sudo chroot /chroot-feisty-i386/
Y actualizamos el sistema:
$ apt-get update
$ apt-get upgrade
Y volvemos a salir del chroot:
$ exit
Ahora, configuramos el sistema operativo de la jaula copiando los siguientes ficheros:
$ sudo cp /etc/passwd /chroot-feisty-i386/etc/ $ sudo cp /etc/shadow /chroot-feisty-i386/etc/ $ sudo cp /etc/group /chroot-feisty-i386/etc/ $ sudo cp /etc/sudoers /chroot-feisty-i386/etc/ $ sudo cp /etc/hosts /chroot-feisty-i386/etc/
Y editamos el fichero fstab de nuestra Ubuntu AMD64:
$ sudo vim /etc/fstab
Hay que añadir las siguientes lineas para compartir esos mismos directorios en la jaula como en la Ubuntu AMD64:
/home /chroot-feisty-i386/home none bind 0 0 /tmp /chroot-feisty-i386/tmp none bind 0 0 /dev /chroot-feisty-i386/dev none bind 0 0 /proc /chroot-feisty-i386/proc proc defaults 0 0
Podéis ajustar esto a vuestras necesidades. Puede que no os interese compartir el /home, o que además os gustaría compartir otros directorios como el CD-ROM.
- ¡CUIDADO!
- Si en el futuro borráis el chroot, es importante acordarse de desmontar dichos alias antes de borrar el directorio /chroot-feisty-i386 ya que si no también borraríais vuestros propios directorios /dev y /home.
Ahora, montamos los nuevos alias:
$ sudo mount -a
Finalmente, creamos el fichero /usr/local/bin/do_dchroot, que debe contener:
#!/bin/bash for arg; do arg=`echo $arg | sed -e 's/ /\\\ /g'` args=`echo $args $arg` done /usr/bin/dchroot -d "`echo $0 | sed 's|^.*/||'` $args"
Y le damos permisos de ejecución:
$ sudo chmod 755 /usr/local/bin/do_dchroot
Instalar aplicaciones de 32 bits
Ahora, hay que instalar las aplicaciones de 32 bits que queramos ejecutar desde nuestro Ubuntu AMD64. Desde cualquier terminar podemos entrar en la jaula chroot (en nuestro usuario) ejecutando el mandato:
$ dchroot -d
Por ejemplo, vamos a instalar un Synaptic que podremos ejecutar desde el exterior de la jaula para instalar nuevos programas en el chroot:
$ sudo apt-get install synaptic
Es necesario crear los siguientes enlaces simbólicos:
$ sudo ln -s /usr/sbin/synaptic /usr/local/bin/synaptic32 $ sudo ln -s /usr/lib/libesd.so.0 /usr/lib/libesd.so.1
Ahora, salimos de la jaula:
$ exit
Y creamos el siguiente enlace simbólico:
$ sudo ln -s /usr/local/bin/do_dchroot /usr/local/bin/synaptic32
Ahora, para arrancar el synaptic de 32 bits basta con ejecutar:
$ sudo synaptic32