Install environnement 32 sur un systeme 64 : Différence entre versions

De ArchwikiFR
m (Robot : Enlève modèles : I18n, Lang, Stub, Translateme)
Ligne 1 : Ligne 1 :
{{i18n|Install bundled 32-bit system in Arch64}}
+
 
  
 
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 ».
 
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 ».
Ligne 271 : Ligne 271 :
 
[[Catégorie:Arch64]]
 
[[Catégorie:Arch64]]
 
[[Catégorie:Howto]]
 
[[Catégorie:Howto]]
 +
[[Category:Necessite relecture]]

Version du 18 mars 2011 à 20:32


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.

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 les dossiers système de pacman :

mkdir -p /opt/arch32/var/{cache/pacman/pkg,lib/pacman}

Nous pouvons à présent installer le système de base synchronisé ( -y ) :

pacman --root /opt/arch32 --cachedir /opt/arch32/var/cache/pacman/pkg -Sy 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 -Sy base


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.