Diferencia entre revisiones de «Aplicaciones x86 en AMD64»
(Algunos enlaces) |
|||
Línea 1: | Línea 1: | ||
− | La mayor parte de los nuevos equipos traen instalado un microprocesador basado en la arquitectura [[w:es:AMD64|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. | + | La mayor parte de los nuevos equipos traen instalado un microprocesador basado en la arquitectura [[w:es:AMD64|AMD64]] (p.e. [[w:es:Intel Core 2 Duo|Intel Core 2 Duo]], [[w:es:AMD Turion 64|AMD Turion 64]], etc.). Para aprovechar las mejoras de las extensiones de [[w:es:64 bits|64 bits]] de esta arquitectura con respecto a la arquitectura [[w:es:x86|x86]] ([[w:es:32 bits|32 bits]]) es necesario tener instalado la versión AMD64 del [[w:es:sistema operativo|sistema operativo]]. Ubuntu tiene una versión para [[w:es:64 bits|64 bits]] desde hace años. |
− | A pesar de las ventajas, ciertas aplicaciones no tienen una versión | + | A pesar de las ventajas, ciertas aplicaciones no tienen una versión para [[64 bits|64 bits]] sino sólo para [[32 bits|32 bits]]. De todas formas, eso no significa que no puedan ser ejecutadas sobre un [[w:es:sistema operativo|sistema operativo]] de [[w:es:64 bits|64 bits]]. Hay varias formas de hacer esto. |
== Paquete ia32-libs == | == Paquete ia32-libs == | ||
− | La solución más sencilla es instalar el [http://packages.ubuntu.com/cgi-bin/search_packages.pl?keywords=ia32-libs&searchon=names&case=sensitive&version=all&release=all paquete | + | La solución más sencilla es [[Añadir aplicaciones|instalar]] el [http://packages.ubuntu.com/cgi-bin/search_packages.pl?keywords=ia32-libs&searchon=names&case=sensitive&version=all&release=all paquete '''ia32-libs'''] de los repositorios oficiales de Ubuntu, disponible en todas las versiones para AMD64 de Ubuntu hasta la fecha. |
− | + | Si somos desarrolladores y además queremos compilar aplicaciones para x86 desde nuestro Ubuntu para AMD64, es necesario instalar también el [http://packages.ubuntu.com/cgi-bin/search_packages.pl?keywords=ia32-libs-dev&searchon=names&case=sensitive&version=all&release=all paquete '''ia32-libs-dev''']. | |
− | + | ||
− | Si somos desarrolladores y además queremos compilar aplicaciones para x86 desde nuestro Ubuntu para AMD64, es necesario instalar el [http://packages.ubuntu.com/cgi-bin/search_packages.pl?keywords=ia32-libs-dev&searchon=names&case=sensitive&version=all&release=all paquete | + | |
− | + | ||
− | + | ||
Lamentablemente, para las últimas versiones de Ubuntu este paquete no está disponible. | Lamentablemente, para las últimas versiones de Ubuntu este paquete no está disponible. | ||
Línea 21: | Línea 17: | ||
=== Creación del chroot === | === Creación del chroot === | ||
− | Lo primero es instalar los | + | Lo primero es [[Añadir aplicaciones|instalar]] los paquetes '''dchroot''' y '''debootstrap''' de los repositorios oficiales de Ubuntu. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | Después, creamos una nueva carpeta donde se instalará todo el ''chroot'', por ejemplo '''/chroot-feisty-i386'''. Podemos hacerlo desde una [[terminal]]: | ||
$ sudo mkdir /chroot-feisty-i386/ | $ sudo mkdir /chroot-feisty-i386/ | ||
− | Una vez hecho esto hay que editar el | + | Una vez hecho esto hay que editar el archivo '''/etc/dchroot.conf''', por ejemplo con [[GEdit]]: |
− | + | $ sudo gedit /etc/dchroot.conf | |
+ | Y añadimos la siguiente línea al final: | ||
feisty /chroot-feisty-i386 | feisty /chroot-feisty-i386 | ||
+ | Luego, guardamos el archivo y cerramos. | ||
Después, ejecutamos el siguiente mandato para descargar e instalar una versión mínima de Ubuntu: | 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 | $ 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: | Una vez que se han descargado he instalado todos los paquetes base, ya es posible "entrar" en la jaula: | ||
− | |||
$ sudo chroot /chroot-feisty-i386/ | $ sudo chroot /chroot-feisty-i386/ | ||
− | Ahora, en | + | Ahora, en esa [[terminal]], es como si estuviésemos en otro [[w:es:sistema operativo|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 [[Añadir aplicaciones|instalar]] algunos paquetes de idioma adicionales: '''language-pack-en''' y '''language-pack-es'''. |
− | $ sudo | + | Luego reconfiguramos los idiomas: |
+ | $ sudo dpkg-reconfigure locales | ||
− | + | Ahora, precisamos volver a nuestra Ubuntu de 64 bits base para seguir con el proceso. Para salir simplemente ejecutamos: | |
− | + | ||
− | + | ||
− | + | ||
− | Ahora, | + | |
$ exit | $ exit | ||
Línea 56: | Línea 46: | ||
Ahora copiamos la lista de repositorios de paquetes para configurar el <tt>apt</tt> del ''chroot'': | Ahora copiamos la lista de repositorios de paquetes para configurar el <tt>apt</tt> del ''chroot'': | ||
− | |||
$ sudo cp /etc/apt/sources.list /chroot-feisty-i386/etc/apt/sources.list | $ sudo cp /etc/apt/sources.list /chroot-feisty-i386/etc/apt/sources.list | ||
Una vez hecho esto, volvemos a entrar en la jaula: | Una vez hecho esto, volvemos a entrar en la jaula: | ||
− | |||
$ sudo chroot /chroot-feisty-i386/ | $ sudo chroot /chroot-feisty-i386/ | ||
− | + | Actualizamos el sistema: | |
− | + | $ sudo aptitude update | |
− | $ | + | $ aptitude upgrade |
− | + | ||
− | $ | + | |
Y volvemos a salir del ''chroot'': | Y volvemos a salir del ''chroot'': | ||
− | |||
$ exit | $ exit | ||
− | Ahora, configuramos el sistema operativo de la jaula copiando los siguientes | + | Ahora, configuramos el sistema operativo de la jaula copiando los siguientes archivos: |
− | + | ||
$ sudo cp /etc/passwd /chroot-feisty-i386/etc/ | $ sudo cp /etc/passwd /chroot-feisty-i386/etc/ | ||
$ sudo cp /etc/shadow /chroot-feisty-i386/etc/ | $ sudo cp /etc/shadow /chroot-feisty-i386/etc/ | ||
Línea 81: | Línea 65: | ||
$ sudo cp /etc/hosts /chroot-feisty-i386/etc/ | $ sudo cp /etc/hosts /chroot-feisty-i386/etc/ | ||
− | Y editamos el | + | Y editamos el archivo '''/etc/fstab''' de nuestra Ubuntu AMD64, por ejemplo con [[GEdit]]: |
− | + | $ sudo gedit /etc/fstab | |
− | $ sudo | + | |
− | + | ||
− | + | ||
+ | Hay que añadir las siguientes líneas para compartir esas mismas carpetas en la jaula como en la Ubuntu AMD64: | ||
/home /chroot-feisty-i386/home none bind 0 0 | /home /chroot-feisty-i386/home none bind 0 0 | ||
/tmp /chroot-feisty-i386/tmp none bind 0 0 | /tmp /chroot-feisty-i386/tmp none bind 0 0 | ||
Línea 92: | Línea 74: | ||
/proc /chroot-feisty-i386/proc proc defaults 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 | + | 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. |
− | + | {{Advertencia|Si en el futuro borramos el chroot, debemos acordarnos de desmontar dichos alias antes de borrar la carpeta '''/chroot-feisty-i386''' ya que si no también borraríamos nuestros propias carpetas '''/dev''' y '''/home'''.}} | |
− | + | ||
− | + | ||
+ | Una vez configurado el archivo '''fstab''', montamos los nuevos alias: | ||
$ sudo mount -a | $ sudo mount -a | ||
− | Finalmente, creamos el | + | Finalmente, creamos el archivo '''/usr/local/bin/do_dchroot''', que debe contener lo siguiente: |
− | + | <bash> | |
#!/bin/bash | #!/bin/bash | ||
for arg; do | for arg; do | ||
Línea 108: | Línea 89: | ||
done | done | ||
/usr/bin/dchroot -d "`echo $0 | sed 's|^.*/||'` $args" | /usr/bin/dchroot -d "`echo $0 | sed 's|^.*/||'` $args" | ||
+ | </bash> | ||
Y le damos permisos de ejecución: | Y le damos permisos de ejecución: | ||
− | |||
$ sudo chmod 755 /usr/local/bin/do_dchroot | $ sudo chmod 755 /usr/local/bin/do_dchroot | ||
Línea 116: | Línea 97: | ||
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: | 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 | $ dchroot -d | ||
− | Por ejemplo, vamos a instalar un Synaptic | + | Por ejemplo, vamos a [[Añadir aplicaciones|instalar]] un [[Synaptic]], el cual podremos ejecutar desde el exterior de la jaula para instalar nuevos programas en el ''chroot'': |
− | + | $ sudo aptitude install synaptic | |
− | $ sudo | + | |
Es necesario crear los siguientes enlaces simbólicos: | Es necesario crear los siguientes enlaces simbólicos: | ||
− | |||
$ sudo ln -s /usr/sbin/synaptic /usr/local/bin/synaptic32 | $ sudo ln -s /usr/sbin/synaptic /usr/local/bin/synaptic32 | ||
$ sudo ln -s /usr/lib/libesd.so.0 /usr/lib/libesd.so.1 | $ sudo ln -s /usr/lib/libesd.so.0 /usr/lib/libesd.so.1 | ||
Ahora, salimos de la jaula: | Ahora, salimos de la jaula: | ||
− | |||
$ exit | $ exit | ||
Y creamos el siguiente enlace simbólico: | Y creamos el siguiente enlace simbólico: | ||
− | |||
$ sudo ln -s /usr/local/bin/do_dchroot /usr/local/bin/synaptic32 | $ sudo ln -s /usr/local/bin/do_dchroot /usr/local/bin/synaptic32 | ||
− | + | Por último, para arrancar el [[Synaptic]] de 32 bits basta con ejecutar: | |
+ | $ sudo synaptic32 | ||
− | + | == Enlaces externos == | |
− | + | * [http://www.ubuntu-es.org/index.php?q=node/5148 Cómo usar aplicaciones x86 en AMD64] {{es}} | |
− | * [http://www.ubuntu-es.org/index.php?q=node/5148 | + | |
[[Categoría:Administración del sistema]] | [[Categoría:Administración del sistema]] |
Revisión de 01:19 8 mayo 2007
La mayor parte de los nuevos equipos traen instalado un microprocesador basado en la arquitectura AMD64 (p.e. Intel Core 2 Duo, AMD Turion 64, etc.). 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 para 64 bits sino sólo para 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 ia32-libs de los repositorios oficiales de Ubuntu, disponible en todas las versiones para AMD64 de Ubuntu hasta la fecha.
Si somos desarrolladores y además queremos compilar aplicaciones para x86 desde nuestro Ubuntu para AMD64, es necesario instalar también el paquete 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 paquetes dchroot y debootstrap de los repositorios oficiales de Ubuntu.
Después, creamos una nueva carpeta donde se instalará todo el chroot, por ejemplo /chroot-feisty-i386. Podemos hacerlo desde una terminal:
$ sudo mkdir /chroot-feisty-i386/
Una vez hecho esto hay que editar el archivo /etc/dchroot.conf, por ejemplo con GEdit:
$ sudo gedit /etc/dchroot.conf
Y añadimos la siguiente línea al final:
feisty /chroot-feisty-i386
Luego, guardamos el archivo y cerramos.
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 esa 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 de idioma adicionales: language-pack-en y language-pack-es.
Luego reconfiguramos los idiomas:
$ sudo dpkg-reconfigure locales
Ahora, precisamos 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/
Actualizamos el sistema:
$ sudo aptitude update $ aptitude upgrade
Y volvemos a salir del chroot:
$ exit
Ahora, configuramos el sistema operativo de la jaula copiando los siguientes archivos:
$ 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 archivo /etc/fstab de nuestra Ubuntu AMD64, por ejemplo con GEdit:
$ sudo gedit /etc/fstab
Hay que añadir las siguientes líneas para compartir esas mismas carpetas 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.
Una vez configurado el archivo fstab, montamos los nuevos alias:
$ sudo mount -a
Finalmente, creamos el archivo /usr/local/bin/do_dchroot, que debe contener lo siguiente: <bash>
#!/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"
</bash>
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, el cual podremos ejecutar desde el exterior de la jaula para instalar nuevos programas en el chroot:
$ sudo aptitude 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
Por último, para arrancar el Synaptic de 32 bits basta con ejecutar:
$ sudo synaptic32
Enlaces externos
- Cómo usar aplicaciones x86 en AMD64 (en español)