Native Unterstützung
Seit Ubuntu 11.04 und Debian Wheezy (7.0) unterstützen Debian und Ubuntu Multiarch: Sie können x86_32 (i386) - und x86_64 (amd64) -Pakete auf einfache Weise auf demselben System mischen. Dies wird als Multiarch-Unterstützung bezeichnet. Weitere Informationen finden Sie in der Antwort von warl0ck .
In älteren Versionen werden Debian und Ubuntu mit einer Reihe von 32-Bit-Bibliotheken auf amd64 ausgeliefert. Installieren Sie das Paket, um einen Basissatz von 32-Bit-Bibliotheken und möglicherweise andere Pakete zu erhalten, die von diesem abhängen. Ihre ausführbaren 32-Bit-Dateien sollten einfach ausgeführt werden, wenn Sie über alle erforderlichen Bibliotheken verfügen. Für die Entwicklung installieren Sie möglicherweise auch andere Pakete, die davon abhängen, wie z . Sie finden es vielleicht auch nützlich und auf Debian. Übergeben Sie die Option an gcc, um für ix86 zu kompilieren.ia32-libs
gcc-multilib
g++-multilib
binutils-multiarch
ia32-libs-dev
-m32
Beachten Sie, dass uname -m
weiterhin angezeigt wird, x64_64
wenn Sie einen 64-Bit-Kernel ausführen, unabhängig davon, welche 32-Bit-Benutzermoduskomponenten Sie installiert haben. Dafür sorgt die weiter unten beschriebene Firma Schroot.
Schroot
Dieser Abschnitt ist eine Anleitung zum Installieren einer Debian-ähnlichen Distribution "in" einer anderen Linux-Distribution. Es bezieht sich auf die Installation eines 32-Bit-Ubuntu in einem 64-Bit-Ubuntu, sollte jedoch mit geringfügigen Änderungen auf andere Situationen zutreffen, wie z. B. die Installation von Debian unstable in Debian stable oder umgekehrt.
Einführung
Die Idee ist, eine alternative Distribution in einem Teilbaum zu installieren und von dort aus zu starten. Auf diese Weise können Sie ein 32-Bit-System auf einem 64-Bit-System oder eine andere Version Ihrer Distribution oder eine Testumgebung mit verschiedenen Paketsätzen installieren.
Der chroot
Befehls- und Systemaufruf startet einen Prozess mit einer Ansicht des Dateisystems, die auf einen Teilbaum der Verzeichnisstruktur beschränkt ist. Debian und Ubuntu liefern schroot , ein Dienstprogramm, das diese Funktion umgibt , um eine benutzerfreundlichere Unterumgebung zu erstellen.
Installieren Sie das schroot
Paket ( Debian ) und das debootstrap
Paket ( Debian ). Debootstrap wird nur für die Installation der alternativen Distribution benötigt und kann anschließend entfernt werden.
Richten Sie schroot ein
In diesem Beispiel wird beschrieben, wie Sie eine alternative 32-Bit-Ubuntu 10.04LTS-Umgebung (lucid lynx) einrichten. Ein ähnliches Setup sollte mit anderen Releases von Debian und Ubuntu funktionieren. Erstellen Sie eine Datei /etc/schroot/chroot.d/lucid32
mit folgendem Inhalt:
[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin
Die Zeile directory=/32
teilt schroot mit, wo die Dateien der 32-Bit-Installation abgelegt werden. Die Zeile username=yourusername
besagt, dass der Benutzer yourusername
die Wurzel benutzen darf. Die Zeile groups=users,admin
besagt, dass Benutzer in jeder Gruppe die Berechtigung haben, die Wurzel zu verwenden. Sie können auch eine users=…
Direktive setzen.
Installieren Sie die neue Distribution
Erstellen Sie das Verzeichnis und füllen Sie es mit debootstrap. Debootstrap lädt einen Kernsatz von Paketen für die angegebene Distribution und Architektur herunter und installiert sie.
mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu
Sie haben fast schon ein funktionierendes System; Was folgt, sind kleinere Verbesserungen. Schroot überschreibt automatisch mehrere Dateien, /32/etc
wenn Sie es ausführen, insbesondere die DNS-Konfiguration in /etc/resolv.conf
und die Benutzerdatenbank in /etc/passwd
und andere Dateien (dies kann überschrieben werden, siehe Dokumentation). Es gibt einige weitere Dateien, die Sie möglicherweise ein für alle Mal manuell kopieren möchten:
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
Es gibt keine Datei /etc/mtab
oder /etc/fstab
in der Chroot. Ich empfehle nicht, den mount
Befehl manuell in der Chroot zu verwenden, sondern von außen. Aber erstellen Sie eine gute genug /etc/mtab
, um Befehle wie df
vernünftig funktionieren zu lassen.
ln -s /proc/mounts /32/etc/mtab
Mit der directory
Art, wird schroot ausführen Bind Mounts einer Anzahl von Verzeichnissen, dh solche Verzeichnisse werden mit der Mutter Installation geteilt werden: /proc
, /dev
, /home
, /tmp
.
Dienstleistungen in der Chroot
Wie hier beschrieben, ist ein Schroot nicht zum Ausführen von Daemons geeignet. Programme in der Wurzel werden beendet, wenn Sie die Wurzel verlassen. Verwenden Sie eine "normale" Stammumgebung anstelle einer "Verzeichnis" -Stammumgebung, wenn diese dauerhafter sein soll, und richten Sie permanente Bindungsbereitstellungen in /etc/fstab
der übergeordneten Installation ein.
Unter Debian und Ubuntu werden die Dienste bei der Installation automatisch gestartet. Um dies zu vermeiden (was die Dienste stören könnte, die außerhalb der Chroot ausgeführt werden, insbesondere weil Netzwerkports gemeinsam genutzt werden), richten Sie eine Richtlinie ein , nach der Dienste in der Chroot nicht ausgeführt werden. Setzen Sie das folgende Skript als /32/usr/sbin/policy-rc.d
und machen Sie es ausführbar ( 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
Füllen Sie das neue System
Jetzt können wir die Chroot benutzen. Sie möchten an dieser Stelle noch ein paar Pakete installieren.
schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...
Möglicherweise müssen Sie einige Gebietsschemas generieren, z
locale-gen en_US en_US.utf8
Wenn die Wurzel für eine ältere Ubuntu-Version wie 8.04 (hardy) ist, beachten Sie, dass das Paket ubuntu-standard einen MTA einliest. Wählen Sie nullmailer
anstelle der Standardeinstellung postfix
(Sie möchten möglicherweise, dass Ihre Chroot E-Mails sendet, aber auf keinen Fall, dass sie E-Mails empfängt).
Weitergehen
Weitere Informationen finden Sie im schroot
Handbuch , in den häufig gestellten Fragen (FAQ) und im
schroot.conf
Handbuch . Schroot ist Teil des Debian-Autobuilder-Projekts (buildd) . Auf der Ubuntu-Community-Seite gibt es möglicherweise weitere nützliche Tipps zu Debootstrap .
Virtuelle Maschine
Wenn Sie eine vollständige Isolierung der alternativen Umgebung benötigen, verwenden Sie eine virtuelle Maschine wie KVM ( qemu-kvm ) oder VirtualBox .