Comment installer un chroot 32bit Luis Medinas Alexandre Ce HOWTO vous donne la marche à suivre pour créer un chroot 32bit. 1.0 2006-09-16 Introduction
Introduction au système 64bit

Le guide Gentoo Linux chroot 32bit va vous aider à installer un vrai chroot 32bit sur votre système Gentoo/AMD64.

Comme vous le savez, les systèmes 64bit ne permettent pas encore d'exécuter de manière native des applications 32bit (du moins pas avec portage). Il vous faut donc soit utiliser des librairies d'émulation pour les faire fonctionner, soit créer un vrai système 32bit à l'intérieur d'un chroot pour installer et exécuter nativement des applications 32bit. Dans les cas les plus courants vous n'avez pas besoin de construire un système chroot 32bit. Néanmoins, si vous voulez exécuter des applications qui n'ont pas de binaires disponibles pour s'exécuter avec des librairies 32bit, vous devriez utiliser un chroot 32bit. Ce guide va vous montrer comment installer un chroot 32bit et comment installer et exécuter des applications à l'intérieur de ce chroot.

Installation
Installation de votre chroot 32bit

Pour installer un chroot 32bit, vous devez suivre plusieurs étapes de l'installation de Gentoo Linux sur un ordinateur x86. Pour commencer, vous avez besoin du dernier stage3 disponible sur nos miroirs.

$ cd /home/user/downloads
$ wget -c ftp://distfiles.gentoo.org/releases/x86/2006.1/stages/stage3-i686-2006.1.tar.bz2
Notez que nous téléchargeons un stage pour x86, pas pour AMD64.

Après le téléchargement du stage3, vous devez créer un nouveau répertoire pour construire votre nouveau chroot.

$ su root insert your root password
# cd /mnt
# mkdir gentoo32

Déplacez ensuite le stage que vous venez de télécharger, dépaquetez le et installez le comme dans l'exemple suivant.

# cd /mnt/gentoo32
# tar -xvjpf /home/user/downloads/stage3-i686-2006.1.tar.bz2
# cp -L /etc/resolv.conf /mnt/gentoo32/etc/
# cp -L /etc/passwd /mnt/gentoo32/etc/

Votre chroot est prêt pour l'installation. Lisez le chapitre suivant pour apprendre comment l'installer.

Installation
Installation de votre nouveau chroot 32bit

Si tout s'est bien passé jusqu'à cette étape, vous êtes maintenant prêt à finaliser l'installation de ce chroot.

La prochaine étape est l'installation de votre nouveau /mnt/gentoo32/etc/make.conf.

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

A présent, montez les divers systèmes de fichier factices.

# 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 /sys /mnt/gentoo32/sys

Vous avez maintenant un réel chroot 32bit installé dans votre système 64bit et il est presque prêt à être exploité. Dans le prochaine étape vous devez créer un lien entre le portage, disponible sur votre système 64bit, et votre chroot. De cette manière, vous n'aurez qu'une installation à mettre à jour plutôt que de dupliquer une grande quantité de données.

# mkdir -p /mnt/gentoo32/usr/portage/
# mount -o bind /usr/portage /mnt/gentoo32/usr/portage/
Chaque fois que vous mettrez à jour votre portage en faisant un emerge sync, vous mettrez également à jour votre chroot 32bit.

Si vous voulez exécuter des applications 32bit qui utilisent X, vous devez également monter /tmp.

# mount -o bind /tmp /mnt/gentoo32/tmp

Nous sommes maintenant prêt à basculer à l'intérieur du chroot.

(Ne réalisez pas cette étape si setarch est déjà installé)
# emerge setarch
# linux32 chroot /mnt/gentoo32 /bin/bash
(S'assurer que nous avons une installation i686)
# uname -m
i686
L'utilitaire linux32 est nécessaire pour modifier la valeur de CHOST. Si vous l'oubliez, vous ne pourrez rien compiler à l'intérieur de l'environnement chroot.

Nous avons maintenant un système chroot 32bit prêt pour une mise à jour. Suivez les étapes suivantes pour la mise à jour.

# source /etc/profile
# env-update
# emerge -au world

Avec ça vous avez quasiment terminé l'installation de votre chroot 32bit. Pour rendre les choses plus confortables, nous allons créer un nouveau fichier dans votre système 64bit pour activer le 32bit au démarrage.

# nano -w /etc/init.d/gentoo32
#!/sbin/runscript

depend() {
   need localmount
   need bootmisc
}

start() {
    ebegin "Montage des répertoires chroot 32bit"
    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/usb >/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 $? "Une erreur est survenue durant la tentative de montage des répertoires chroot 32bit"
    ebegin "Copie des fichiers chroot 32bit"
    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 $? "Une erreur est survenue durant la tentative de copie des fichiers chroot 32bit."
}

stop() {
    ebegin "Démontage des répertoires chroot 32bit"
    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 $? "Une erreur est survenue durant la tentative de démontage des répertoires chroot 32bit"
}

Vous n'avez plus qu'à exécuter rc-update add gentoo32 default pour ajouter gentoo32 au niveau de démarrage « default ».

Chaque fois que vous voudrez basculer vers votre environnement chroot, vous n'aurez qu'à exécuter la commande suivante: linux32 chroot /mnt/gentoo32 /bin/bash.

Votre chroot 32bit est maintenant prêt pour l'installation de nouvelles applications.

Applications
Installer de nouvelles applications dans votre chroot

Vous avez maintenant un chroot 32bit complètement opérationnel et vous pouvez installez n'importe quelle application en mode 32bit. Voyons comment vous pouvez installer de nouveaux paquets dans votre chroot 32bit.

# linux32 chroot /mnt/gentoo32 /bin/bash
# source /etc/profile
# env-update
# emerge foo
N'oubliez pas de toujours faire un source /etc/profile et un env-update après avoir bascué dans votre chroot.

Vous avez maintenant installé un nouveau paquet dans votre chroot 32bit. Si vous voulez l'exécuter, vous devez être dans votre chroot. Si vous voulez exécuter des applications X, la meilleure solution est d'utiliser l'astuce xhost. Chaque fois que vous devez exécuter une application X, exécutez cette commande dans votre environnement 64bit.

# xhost local:localhost

Après ça, basculez à nouveau dans votre environnement chroot et vous devriez être capable d'exécuter toute application X construite à l'intérieur de votre chroot 32bit.

Conclusion
Conclusion de ce guide

Avec ce chroot, vous pouvez installer un bon nombre de paquets uniquement disponibles pour les architectures x86. Quelques paquets, tel que OpenOffice, peuvent être installés en utilisant les binaires disponibles pour Gentoo/AMD64. Certains des codecs disponibles pour MPlayer nécessitent ce chroot 32bit. Vous pourrez donc installer les win32codecs avec ce chroot.