Natywne wsparcie
Ponieważ Ubuntu 11.04 i Debian wheezy (7.0), Debian i Ubuntu obsługują wiele kanałów: możesz w prosty sposób miksować pakiety x86_32 (i386) i x86_64 (amd64) w tym samym systemie. Jest to znane jako obsługa wielu kanałów. Aby uzyskać więcej informacji, patrz odpowiedź warl0ck .
W starszych wersjach Debian i Ubuntu są dostarczane z wieloma 32-bitowymi bibliotekami na amd64. Zainstaluj pakiet, aby mieć podstawowy zestaw bibliotek 32-bitowych i ewentualnie inne pakiety zależne od tego. Twoje 32-bitowe pliki wykonywalne powinny po prostu działać, jeśli masz wszystkie wymagane biblioteki. W celu rozwoju zainstaluj i ewentualnie inne zależne od niego pakiety, takie jak . Możesz również znaleźć przydatne i na Debianie. Przekaż opcję gcc, aby skompilować dla ix86.ia32-libs
gcc-multilib
g++-multilib
binutils-multiarch
ia32-libs-dev
-m32
Pamiętaj, że uname -m
nadal będzie się wyświetlać, x64_64
jeśli używasz jądra 64-bitowego, niezależnie od zainstalowanych komponentów trybu użytkownika 32-bitowego. Schroot opisany poniżej zajmuje się tym.
Schroot
Ta sekcja jest przewodnikiem po instalacji dystrybucji podobnej do Debiana „wewnątrz” innej dystrybucji Linuksa. Jest to sformułowane w kategoriach instalacji 32-bitowego Ubuntu w 64-bitowym Ubuntu, ale powinno mieć zastosowanie z niewielkimi modyfikacjami w innych sytuacjach, takich jak instalowanie niestabilnej Debiana w stabilnej wersji Debiana lub odwrotnie.
Wprowadzenie
Chodzi o to, aby zainstalować alternatywną dystrybucję w poddrzewie i uruchomić z tego. W ten sposób można zainstalować system 32-bitowy w systemie 64-bitowym lub inną wersję dystrybucji lub środowisko testowe z zainstalowanymi różnymi zestawami pakietów.
chroot
Poleceń oraz system połączeń uruchamia proces ze względu na system plików, który jest ograniczony do poddrzewa drzewa katalogów. Debian i Ubuntu dostarczają schroota , narzędzie, które obejmuje tę funkcję, tworząc bardziej użyteczne podśrodowisko.
Zainstaluj schroot
pakiet ( Debian ) i debootstrap
pakiet ( Debian ). Debootstrap jest potrzebny tylko do instalacji alternatywnej dystrybucji i można go później usunąć.
Skonfiguruj schroota
W tym przykładzie opisano, jak skonfigurować 32-bitowe alternatywne środowisko Ubuntu 10.04LTS (lucid lynx). Podobna konfiguracja powinna działać z innymi wydaniami Debiana i Ubuntu. Utwórz plik /etc/schroot/chroot.d/lucid32
o następującej treści:
[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin
Linia directory=/32
mówi schrootowi, gdzie umieścimy pliki instalacji 32-bitowej. Linia username=yourusername
mówi, że użytkownik yourusername
będzie mógł używać schroota. Linia groups=users,admin
mówi, że użytkownicy w obu grupach będą mogli korzystać ze schroota; możesz również wprowadzić users=…
dyrektywę.
Zainstaluj nową dystrybucję
Utwórz katalog i zacznij wypełniać go debootstrap. Debootstrap pobiera i instaluje podstawowy zestaw pakietów dla określonej dystrybucji i architektury.
mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu
Prawie masz już działający system; Poniżej przedstawiono drobne ulepszenia. Schroot automatycznie nadpisuje kilka plików /32/etc
podczas uruchamiania, w szczególności konfigurację DNS /etc/resolv.conf
i bazę danych użytkownika /etc/passwd
oraz inne pliki (można to zmienić, patrz dokumentacja). Jest jeszcze kilka plików, które możesz chcieć skopiować raz na zawsze:
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
Nie będzie pliku /etc/mtab
ani /etc/fstab
w chroot. Nie polecam używania mount
polecenia ręcznie w chroot, zrób to z zewnątrz. Ale stwórz wystarczająco dobre, /etc/mtab
aby polecenia takie jak df
praca działały rozsądnie.
ln -s /proc/mounts /32/etc/mtab
Dzięki directory
typu, złom wykona wierzchowce powiązań z wielu katalogów, czyli te katalogi będą udostępniane instalacji dominującej: /proc
, /dev
, /home
, /tmp
.
Usługi w chroot
Jak opisano tutaj, schroot nie nadaje się do uruchamiania demonów. Programy w chroot zostaną zabite po wyjściu z chroot. Użyj „zwykłego” schroota zamiast schroota „katalogowego”, jeśli chcesz, aby był bardziej trwały, i skonfiguruj stałe podłączanie do podłączenia w /etc/fstab
instalacji nadrzędnej.
W systemach Debian i Ubuntu usługi są uruchamiane automatycznie podczas instalacji. Aby tego uniknąć (które mogłyby zakłócać usług działa poza chroot, w szczególności dlatego, że porty sieciowe są wspólne), ustanawia zasady o nie prowadzenie usług w chroot. Umieść następujący skrypt jako /32/usr/sbin/policy-rc.d
i uczyń go wykonywalnym ( 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
Wypełnij nowy system
Teraz możemy zacząć korzystać z chroot. W tym momencie będziesz chciał zainstalować jeszcze kilka pakietów.
schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...
Może być konieczne wygenerowanie kilku ustawień regionalnych, np
locale-gen en_US en_US.utf8
Jeśli schroot dotyczy starszej wersji Ubuntu, takiej jak 8.04 (hardy), zwróć uwagę, że pakiet standardu ubuntu pobiera MTA. Wybierz nullmailer
zamiast domyślnego postfix
(możesz chcieć, aby chroot wysyłał pocztę, ale na pewno nie chcesz, aby otrzymywał).
Idąc dalej
Aby uzyskać więcej informacji, zapoznaj się z schroot
instrukcją , często zadawanymi pytaniami schroot i
schroot.conf
instrukcją . Schroot jest częścią projektu Debu autobuilder (buildd) . Na stronie społeczności Ubuntu mogą znajdować się dodatkowe przydatne wskazówki dotyczące debootstrap .
Maszyna wirtualna
Jeśli potrzebujesz pełnej izolacji alternatywnego środowiska, użyj maszyny wirtualnej, takiej jak KVM ( qemu-kvm ) lub VirtualBox .