32bit chroot (Français)
From ArchWiki
i18n |
---|
English |
Czech |
Français |
Notez que ce script n’essaie pas de changer quoi que ce soit en dehors du répertoire 32 bit. Je ne suis pas un expert donc il se peut qu’il y ait des erreurs ou quelques « mauvaises choses ».
Ce tutoriel est destiné aux personnes ayant réellement besoin d’exécuter des applications 32 bit et de les installer aisément. Comme Arch64 a pour but d’être une distribution pure 64 bit, il semble que les développeurs ne fournirons aucune bibliothèque compatible. Cependant, ce sytème me semble être le plus propre.
Note: Si vous avez un noyau modifié, vérifiez que vous avez activé l’option "CONFIG_IA32_EMULATION". Autrement, votre noyau 64 bit ne sera pas capable d’accéder à votre environnement 32 bit « chrooté ». Les noyaux par défaut d’Arch64 ont généralement cette option d’activée.
Contents |
Installer le système 32 bit
On crée un dépôt.
mkdir /opt/arch32
Puis éditez le fichier suivant:
vim /etc/pacman.d/mirrorlist
Ici, vous devez changer sur la premier lien x86_64 par i686. N'oubliez pas de rééditer ce fichier à la fin de l'installation ! Sinon quoi, vous pouvez gravement endommager votre système en installant un paquet. Dès que vous utilisez l'option --root, les fichiers /var/log/pacman.log et /var/lib/pacman/db.lck seront crées dans le répertoire/opt/arch32. Donc le ficher de log sera dans /opt/arch32/var/log/pacman.log et ainsi de suite et NE « crashera » PAS votre système. Il n’y a pas besoin de créer un répertoire LogFile dans /etc/pacman.conf ou d’utiliser l’option --logfile à moins que vous ne désiriez sauvegarder le journal ailleurs.
L’option --cachedir pour les paquets doit renvoyer à /opt/arch32/var/cache/pacman/pkg à la place de /var/cache/pacman/pkg
Nous créons donc ce dossier, afin d’être sûr :
mkdir -p /opt/arch32/var/{cache/pacman/pkg,lib/pacman}
Maintenant, il nous faut synchroniser pacman :
pacman --root /opt/arch32 --cachedir /opt/arch32/var/cache/pacman/pkg -Sy
Nous pouvons à présent installer le système de base :
pacman --root /opt/arch32 --cachedir /opt/arch32/var/cache/pacman/pkg -S base base-devel
Si vous n’avez pas l’intention de compiler les paquets à l’intérieur de votre chroot, vous pouvez omettre le groupe base-devel:
pacman --root /opt/arch32 --cachedir /opt/arch32/var/cache/pacman/pkg -S base
Note : vous pouvez avoir besoin de mettre à jour pacman et installer les paquets de base d’un coup :
pacman --root /opt/arch32 --cachedir /opt/arch32/var/cache/pacman/pkg -Sy base base-devel
Vous pouvez à présent restaurer le fichier pacman.d/mirrorlist en indiquant x86_64
Le script /etc/rc.d/arch32
Pour initialiser l’environnement 32 bit au démarrage, créez un script arch32 dans le dossier /etc/rc.d (de votre système 64 bit) :
#!/bin/bash . /etc/rc.conf . /etc/rc.d/functions case $1 in start) stat_busy "Starting Arch32 chroot" mount --bind /proc /opt/arch32/proc mount --bind /proc/bus/usb /opt/arch32/proc/bus/usb mount --bind /dev /opt/arch32/dev mount --bind /dev/pts /opt/arch32/dev/pts mount --bind /dev/shm /opt/arch32/dev/shm mount --bind /sys /opt/arch32/sys mount --bind /tmp /opt/arch32/tmp mount --bind /home /opt/arch32/home add_daemon arch32 stat_done ;; stop) stat_busy "Stopping Arch32 chroot" umount /opt/arch32/proc/bus/usb umount /opt/arch32/proc umount /opt/arch32/dev/pts umount /opt/arch32/dev/shm umount /opt/arch32/dev umount /opt/arch32/sys umount /opt/arch32/tmp umount /opt/arch32/home rm_daemon arch32 stat_done ;; restart) $0 stop sleep 1 $0 start ;; *) echo "usage: $0 {start|stop|restart}" esac exit 0
Maintenant, autorisez l’exécution du script :
chmod +x /etc/rc.d/arch32
Et ajoutez le dans "/etc/rc.conf" :
DAEMONS=(syslog-ng network netfs crond arch32 gdm)
Point de montage optionnel pour permettre les applications 32 bits d'accéder au serveur Pulseaudio 64 bits
Si vous désirez utiliser Pulseaudio depuis votre chroot, utilisez ce script:
#!/bin/bash . /etc/rc.conf . /etc/rc.d/functions case $1 in start) stat_busy "Starting Arch32 chroot" mount --bind /proc /opt/arch32/proc mount --bind /proc/bus/usb /opt/arch32/proc/bus/usb mount --bind /dev /opt/arch32/dev mount --bind /dev/pts /opt/arch32/dev/pts mount --bind /dev/shm /opt/arch32/dev/shm mount --bind /sys /opt/arch32/sys mount --bind /tmp /opt/arch32/tmp mount --bind /home /opt/arch32/home mount --bind /var/lib/dbus /opt/arch32/var/lib/dbus add_daemon arch32 stat_done ;; stop) stat_busy "Stopping Arch32 chroot" umount /opt/arch32/proc/bus/usb umount /opt/arch32/proc umount /opt/arch32/dev/pts umount /opt/arch32/dev/shm umount /opt/arch32/dev umount /opt/arch32/sys umount /opt/arch32/tmp umount /opt/arch32/home rm_daemon arch32 stat_done ;; restart) $0 stop sleep 1 $0 start ;; *) echo "usage: $0 {start|stop|restart}" esac exit 0
Plus d'information sont disponible sur la page de Pulseaudio (anglais).
Configurer le nouveau système
Premièrement, copier quelques fichiers important…
cd /opt/arch32/etc ln -f /etc/passwd* . ln -f /etc/shadow* . ln -f /etc/group* . ln -f /etc/rc.conf . ln -f /etc/resolv.conf . ln -f /etc/localtime . ln -f /etc/locale.gen . ln -f /etc/profile.d/locale.sh profile.d cp /etc/vimrc . cp /etc/mtab .
À présent, chrootez :
/etc/rc.d/arch32 start xhost +local: chroot /opt/arch32
Je vous recommande chaudement d’utiliser un bash modifié à l’intérieur de votre installation 32 bit afin de savoir où vous en êtes (entre vos systèmes 32 et 64 bit). Vous pouvez, par exemple, ajouter une ligne ARCH32 à votre ligne PS1 que vous avez spécifiée dans votre .bashrc ou autre fichier de configuration.
Réglez quelques futurs problèmes de langues…
/usr/sbin/locale-gen pacman -S ttf-bitstream-vera ttf-ms-fonts
Note : vous pouvez installer n’importe quelle autre police, vous en avez besoin d’une sinon quoi vos applications n’afficheront pas de texte.
Gardez également en tête que le fichier "/etc/pacman.conf" de votre environnement 32 bit est le fichier par défaut. Le dépôt [community] est activé par défaut à présent.
Vous pouvez désormais installer ce dont vous avez besoin.
pacman -S acroread opera pacman -S mozilla-firefox pacman -S libxmu flashplugin pacman -S mplayer-plugin
Vous pouvez également enlever certains paquets afin de récupérer un peu de place. Ce nettoyage est pour votre environnement 32 bit et doit être donc exécuté après avoir été chrooté ! Voilà une liste des paquets que vous pouvez avoir envie de retirer :
pacman -Rd mkinitcpio pacman -R kernel26 pacman -R grub pacman -R dhcpcd pacman -R rp-pppoe pacman -R ppp pacman -R xfsprogs pacman -R reiserfsprogs pacman -R jfsutils pacman -R hdparm pacman -R hwdetect pacman -R syslog-ng pacman -R logrotate pacman -R lvm2 pacman -R dcron pacman -R wpa_supplicant pacman -R pcmciautils
N’oubliez pas de nettoyer le cache régulièrement
Note : ceci n’est pas une commande que vous lancerez une seule fois. Comme les paquets vont s’accumuler, vous devrez le vider régulièrement :
pacman -Scc
Exécuter une application 32 bit depuis un environnement 64 bit
Installer schroot
Installez "schroot" sur votre système 64 bit depuis le dépôt community :
pacman -S schroot
Configuration
Schroot est déjà configuré pour les chroots Arch32, vous n’avez donc qu’à vérifier que le fichier /etc/schroot/schroot.conf, sectopm [Arch32] correspond bien à votre configuration.
Éxécuter les applications 32 bit
Enfin, pour exécuter vos application 32 bit, faites :
schroot -p -- opera -notrayicon
Ce qui lancera Opera, sans l'îcone du tray, depuis votre environnement 32 bit.
Si vous le voulez, j'ai écris un petit programme pour remplacer la version 64 bit de Firefox de votre système. Copiez le dans geany, enregistrez-le comme firefox.cpp puis compilez-le en pressant F9 :
#include <iostream> #include <string> #include <cstdlib> using namespace std; int main(int argc, char **argv) { string temp="schroot -p firefox "; if (argc>=2) temp+=+argv[1]; system(temp.c_str()); return 0; }
Maintenant, remplacez le fichier binaire de Firefox dans /usr/lib/firefox-3.0.1 par le fichier fraîchement compilé (le dossier peux changer suivant la version de Firefox).
Utiliser le son
L’application la plus utilisée en 32 bit est flash, notamment youtube.
Pour avoir le son, ouvrez un terminal puis chrootez dans votre système 32 bit :
chroot /opt/arch32
De là, installez alsa-oss:
pacman -S alsa-oss
Puis écrivez:
export FIREFOX_DSP="aoss"
Toutes les applications chrootées de votre système 32 bit auront besoin de ça. Il peut être intéressant d’en faire un script.
Lancez Firefox.
Exemple de script pour Firefox avec le son
Ouvrez un éditeur de texte et enregistrez ce qui suit dans /usr/bin/firefox32 (en tant que root, utilisez sudo) :
#!/bin/sh schroot -p firefox $1;export FIREFOX_DSP="aoss"
Rendez-le exécutable :
sudo chmod +x /usr/bin/firefox32
Maintenant, vous pouvez faire un alias pour firefox si vous le souhaitez :
alias firefox="firefox32"
Ajoutez ceci à la fin de votre $HOME/.bashrc, et tapez-le dans bash pour le rendre disponible immédiatement. Ou bien, vous pouvez simplement changer tous les lanceurs de votre environnement de bureau si vous désirez pouvoir encore utiliser firefox dans sa version 64 bit.
Note
Si vous continuez à utiliser dchroot et non pas schroot, vous devez utiliser l'argument -d à la place de -s.