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++-multilib
binutils-multiarch
ia32-libs-dev
-m32
Notez que cela uname -m
indique toujours x64_64
si 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' chroot
appel 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 schroot
paquet ( Debian ) et le debootstrap
paquet ( 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/lucid32
avec le contenu suivant:
[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin
La ligne directory=/32
indique à schroot où nous allons placer les fichiers de l'installation 32 bits. La ligne username=yourusername
indique que l'utilisateur yourusername
sera autorisé à utiliser la racine. La ligne groups=users,admin
indique 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/etc
lorsque vous l'exécutez, en particulier la configuration DNS dans /etc/resolv.conf
et la base de données des utilisateurs dans /etc/passwd
et 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/mtab
ou /etc/fstab
dans le chroot. Je ne recommande pas d'utiliser la mount
commande manuellement dans le chroot, faites-le de l'extérieur. Mais créez assez de bien /etc/mtab
pour exécuter des commandes telles que df
travailler raisonnablement.
ln -s /proc/mounts /32/etc/mtab
Avec le directory
type 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/fstab
sur 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.d
et 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 nullmailer
au 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 schroot
manuel , la FAQ schroot et le
schroot.conf
manuel . 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 .