HOWTO Crear entorno de 32 bits en AMD64
De Gentoo Linux Wiki
| 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.
# 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.
