HOWTO Crear entorno de 32 bits en AMD64

De Gentoo Linux Wiki

Este articulo es parte de las series de HOWTO.
Kernel & Hardware Red y Servicios Portage Relacionado con el Sistema Servidor X Juegos Misceláneos

Crear entorno de 32 bits en AMD64

Tabla de contenidos

[editar] Introducción

Esta guía te permitirá crear un entorno para poder compilar, instalar y ejecutar aplicaciones de 32 bits en tu sistema Gentoo para AMD64.

[editar] Instalación

Para instalar el entorno de 32 bits tenemos que descargar el stage3 de la arquitectura x86 (de uno de los servidores de gentoo). http://www.gentoo.org/main/en/mirrors.xml

Descargando stage3 de un servidor de gentoo.

Código:
$ cd /home/user/downloads                                                                                                           
wget -c ftp://ftp.free.fr/mirrors/ftp.gentoo.org/releases/x86/current/stages/stage3-x86-2006.1.tar.bz2

Nota: No hay que descargar la stage para amd64. Queremos la x86 para 32 bits.

Después de descargar la stage3 crearemos el directorio para poner nuestro nuevo entorno.

Código:
$ su root (ponemos la contraseña)
# cd /mnt
# mkdir gentoo32

Una vez creado el directorio procederemos a descomprimirlo.

Código:
# cd /mnt/gentoo32
# tar -xvjpf /home/user/downloads/stage3-x86-2006.1.tar.bz2


Ahora copiaremos los archivos de configuración resolv.conf y passwd al nuevo entorno.

Código:
# cp -L /etc/resolv.conf /mnt/gentoo32/etc/                                     
# cp -L /etc/passwd /mnt/gentoo32/etc/

[editar] Configuración

Configurando el entorno de 32 bits.

Empezamos configurando el nuevo make.conf

Código:
CFLAGS="-O2 -march=athlon-xp -msse2 -pipe -fomit-frame-pointer"         
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"

Ahora montamos el entorno chroot32.

Código:
# mount -o bind /dev /mnt/gentoo32/dev
# mount -o bind /dev/pts /mnt/gentoo32/dev/pts
# mount -o bind /dev/shm /mnt/gentoo32/dev/shm
# mount -o bind /proc /mnt/gentoo32/proc
# mount -o bind /proc/bus/usb /mnt/gentoo32/proc/bus/usb
# mount -o bind /tmp /mnt/gentoo32/tmp
# mount -o bind /sys /mnt/gentoo32/sys

Ahora creamos un link entre el portage actual y el del entorno de 32 bits.

Código:
# mkdir -p /mnt/gentoo32/usr/portage/
# mount -o bind /usr/portage /mnt/gentoo32/usr/portage/

[editar] Entrando en el nuevo entorno

Código:
# linux32 chroot /mnt/gentoo32 /bin/bash

Nota: para los que no tengan setarch que hagan un:

Código:
# emerge setarch

Ahora ya estamos en el nuevo entorno, es hora de actualizarlo.

Código:
# source /etc/profile
# env-update
# emerge -au world

Una vez terminada la actualizaciónción abremos terminado con el entorno de 32 bits. Para que se nos monte nuestro entorno al iniciar nuestra computadora crearemos este script.

Creando el nuevo archivo en /etc/init.d

Código:
# nano -w /etc/init.d/gentoo32
#!/sbin/runscript

depend() {
   need localmount
   need bootmisc
}

start() {
    ebegin "Mounting 32bits chroot dirs"
    mount -o bind /dev /mnt/gentoo32/dev >/dev/null &
    mount -o bind /dev/pts /mnt/gentoo32/dev/pts >/dev/null &
    mount -o bind /dev/shm /mnt/gentoo32/dev/shm >/dev/null &
    mount -o bind /proc /mnt/gentoo32/proc >/dev/null &
    mount -o bind /proc/bus/usb /mnt/gentoo32/proc/bus >/dev/null &
    mount -o bind /sys /mnt/gentoo32/sys >/dev/null &
    mount -o bind /tmp /mnt/gentoo32/tmp >/dev/null &
    mount -o bind /usr/portage /mnt/gentoo32/usr/portage/ >/dev/null &
    eend $? "An error occured while attempting to mount 32bit chroot directories"
    ebegin "Copying 32bits chroot files"
    cp -pf /etc/resolv.conf /mnt/gentoo32/etc >/dev/null &
    cp -pf /etc/passwd /mnt/gentoo32/etc >/dev/null &
    cp -pf /etc/shadow /mnt/gentoo32/etc >/dev/null &
    cp -pf /etc/group /mnt/gentoo32/etc >/dev/null &
    cp -pf /etc/gshadow /mnt/gentoo32/etc >/dev/null &
    cp -pf /etc/hosts /mnt/gentoo32/etc > /dev/null &
    cp -Ppf /etc/localtime /mnt/gentoo32/etc >/dev/null &
    eend $? "An error occured while attempting to copy 32 bits chroot files."
}

stop() {
    ebegin "Unmounting 32bits chroot dirs"
    umount -f /mnt/gentoo32/dev/pts >/dev/null &
    umount -f /mnt/gentoo32/dev/shm >/dev/null &
    umount -f /mnt/gentoo32/dev >/dev/null &
    umount -f /mnt/gentoo32/proc/bus/usb >/dev/null &
    umount -f /mnt/gentoo32/proc >/dev/null &
    umount -f /mnt/gentoo32/sys >/dev/null &
    umount -f /mnt/gentoo32/tmp >/dev/null &
    umount -f /mnt/gentoo32/usr/portage/ >/dev/null &
    eend $? "An error occured while attempting to unmount 32bits chroot directories"
}

Y le damos permisos:

Código:
# chmod 777 /etc/init.d/gentoo32
#  rc-update add gentoo32 default

Ejemplo: (instalando aplicaciones en nuestro nuevo entorno)

Código:
# linux32 chroot /mnt/gentoo32 /bin/bash (montamos el entorno)                           
# source /etc/profile
# env-update
# emerge mplayer (...........)

Para ejecutar aplicaciones con X desde nuestro entorno de 32 bits debemos hacer:

Código:
# xhost local:localhost (en una consola de 64 bits)

[editar] Conclusión

Con este entorno podemos compilar, instalar y ejecutar aplicaciones que sólo están disponibles para la arquitectura x86.

Herramientas personales