Support natif
Depuis Ubuntu 11.04 et Debian Wheezy (7.0), Debian et Ubuntu ont un support multiarch: vous pouvez mélanger des paquets x86_32 (i386) et x86_64 (amd64) sur le même système de manière simple. Ceci est connu sous le nom de support multiarch Voir la réponse de warl0ck pour plus de détails.
Dans les versions antérieures, Debian et Ubuntu étaient livrées avec un certain nombre de bibliothèques 32 bits sur amd64. Installez le paquet pour avoir un ensemble de base de bibliothèques 32 bits et éventuellement d’autres paquets qui dépendent de celui-ci. Vos exécutables 32 bits doivent simplement être exécutés si vous avez toutes les bibliothèques requises. Pour le développement, installez , et éventuellement d’autres paquets qui en dépendent, tels que . Vous pouvez également trouver utile, et sur Debian. Passez l’ option gcc à compiler pour ix86.ia32-libs 
gcc-multilib 
g++-multilibbinutils-multiarch 
ia32-libs-dev-m32
Notez que cela uname -mindique toujours x64_64si vous exécutez un noyau 64 bits, quels que soient les composants en mode utilisateur 32 bits que vous avez installés. Schroot décrit ci-dessous s’occupe de cela.
Schroot
Cette section est un guide pour installer une distribution du type Debian «à l’intérieur» d’une autre distribution Linux. Il est libellé en termes d'installation d'un Ubuntu 32 bits à l'intérieur d'un Ubuntu 64 bits, mais devrait s'appliquer avec des modifications mineures à d'autres situations, telles que l'installation de Debian unstable dans Debian stable ou vice versa.
introduction
L'idée est d'installer une autre distribution dans un sous-arbre et de l'exécuter à partir de celui-ci. Vous pouvez installer un système 32 bits sur un système 64 bits de cette manière, ou une version différente de votre distribution, ou un environnement de test avec différents ensembles de packages installés.
L' chrootappel de commande et système lance un processus avec une vue du système de fichiers limitée à une sous-arborescence de l'arborescence. Debian et Ubuntu sont livrés avec schroot , un utilitaire qui entoure cette fonctionnalité pour créer un sous-environnement plus utilisable.
Installez le schrootpaquet
( Debian ) et le debootstrappaquet
( Debian ). Debootstrap n'est nécessaire que pour l'installation de la distribution alternative et peut être supprimé par la suite.
Mettre en place schroot
Cet exemple explique comment configurer un autre environnement Ubuntu 10.04LTS (lucid lynx) 32 bits. Une configuration similaire devrait fonctionner avec d'autres versions de Debian et Ubuntu. Créez un fichier /etc/schroot/chroot.d/lucid32avec le contenu suivant:
[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin
La ligne directory=/32indique à schroot où nous allons placer les fichiers de l'installation 32 bits. La ligne username=yourusernameindique que l'utilisateur yourusernamesera autorisé à utiliser la racine. La ligne groups=users,adminindique que les utilisateurs de l'un ou l'autre groupe seront autorisés à utiliser le schéma; vous pouvez aussi mettre une users=…directive.
Installer la nouvelle distribution
Créez le répertoire et commencez à le remplir avec debootstrap. Debootstrap télécharge et installe un ensemble de paquets de base pour la distribution et l'architecture spécifiées.
mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu
Vous avez déjà presque un système de travail; Ce qui suit est des améliorations mineures. Schroot écrase automatiquement plusieurs fichiers /32/etclorsque vous l'exécutez, en particulier la configuration DNS dans /etc/resolv.confet la base de données des utilisateurs dans /etc/passwdet d'autres fichiers (ceci peut être remplacé, voir la documentation). Il y a encore quelques fichiers que vous voudrez peut-être copier manuellement une fois pour toutes:
cp -p /etc/apt/apt.conf /32/etc/apt/ # for proxy settings
cp -p /etc/apt/sources.list /32/etc/apt/ # for universe, security, etc
cp -p /etc/environment /32/etc/ # for proxy and locale settings
cp -p /etc/sudoers /32/etc/ # for custom sudo settings
Il n'y aura pas de fichier /etc/mtabou /etc/fstabdans le chroot. Je ne recommande pas d'utiliser la mountcommande manuellement dans le chroot, faites-le de l'extérieur. Mais créez assez de bien /etc/mtabpour exécuter des commandes telles que dftravailler raisonnablement.
ln -s /proc/mounts /32/etc/mtab
Avec le directorytype schroot effectuera bind supports d'un certain nombre de répertoires, à savoir les répertoires seront partagés avec l'installation mère: /proc, /dev, /home, /tmp.
Services dans le chroot
Comme décrit ici, une racine ne convient pas pour exécuter des démons. Les programmes de la racine seront supprimés lorsque vous quitterez la racine. Utilisez une racine «ordinaire» au lieu d'une racine «annuaire» si vous voulez qu'elle soit plus permanente, et configurez des montages de liaison permanents /etc/fstabsur l'installation parent.
Sur Debian et Ubuntu, les services démarrent automatiquement à l’installation. Pour éviter cela (ce qui pourrait perturber les services exécutés en dehors du chroot, notamment parce que les ports réseau sont partagés), définissez une stratégie consistant à ne pas exécuter les services dans le chroot. Mettez le script suivant en tant que /32/usr/sbin/policy-rc.det rendez-le exécutable ( chmod a+rx /32/usr/sbin/policy-rc.d).
#!/bin/sh
## Don't start any service if running in a chroot.
## See /usr/share/doc/sysv-rc/README.policy-rc.d.gz
if [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]; then
exit 101
fi
Remplir le nouveau système
Nous pouvons maintenant commencer à utiliser le chroot. Vous voudrez installer quelques paquets supplémentaires à ce stade.
schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...
Vous devrez peut-être générer quelques paramètres régionaux, par exemple
locale-gen en_US en_US.utf8
Si le schéma concerne une version plus ancienne d'Ubuntu telle que 8.04 (hardy), notez que le paquet ubuntu-standard récupère un MTA. Sélectionnez nullmailerau lieu de la valeur par défaut postfix(vous voudrez peut-être que votre chroot envoie un courrier, mais vous ne voulez absolument pas qu'il en reçoive).
Aller plus loin
Pour plus d'informations, consultez le schrootmanuel , la FAQ schroot et le
schroot.confmanuel . Schroot fait partie du projet Debian autobuilder (buildd) . Il peut y avoir d’autres conseils utiles sur la page de la communauté Ubuntu sur debootstrap .
Machine virtuelle
Si vous avez besoin d'une isolation complète de l'environnement de remplacement, utilisez une machine virtuelle telle que KVM ( qemu-kvm
) ou VirtualBox .