Рідна підтримка
Оскільки Ubuntu 11.04 та Debian wheezy (7.0), Debian та Ubuntu мають підтримку мультиархів: ви можете змішувати пакети x86_32 (i386) та x86_64 (amd64) в одній системі прямо. Це відомо як мультіархітектурная підтримка Див відповіді warl0ck в для більш докладної інформації.
У старих випусках Debian і Ubuntu постачаються з багатьма 32-бітовими бібліотеками на amd64. Встановіть пакет , щоб мати базовий набір 32-бітових бібліотек, а також, можливо , інших пакетів , які залежать від цього. Ваші 32-бітні виконувані файли повинні просто працювати, якщо у вас є всі необхідні бібліотеки. Для розробки встановіть і знову можливо інші пакети, які залежать від нього, такі як . Ви можете бути корисними і на Debian. Передайте опцію gcc для компіляції для ix86.ia32-libs
gcc-multilib
g++-multilib
binutils-multiarch
ia32-libs-dev
-m32
Зауважте, що uname -m
все одно з’явиться, x64_64
якщо ви працюєте з 64-розрядним ядром, незалежно від того, які 32-бітні компоненти режиму користувача встановлені. Описаний нижче Шрот переймається цим.
Шрот
Цей розділ є керівництвом щодо встановлення подібного до Debian дистрибутива «всередині» іншого дистрибутива Linux. Це сформульовано з точки зору встановлення 32-розрядного Ubuntu всередині 64-розрядного Ubuntu, але має застосовуватися з незначними модифікаціями в інших ситуаціях, наприклад, встановлення Debian нестабільно всередині Debian stabil або навпаки.
Вступ
Ідея полягає у встановленні альтернативного дистрибутива в піддереві і запуску з цього. Ви можете встановити 32-бітну систему в 64-бітну систему таким чином, або інший випуск вашого дистрибутива, або тестове середовище з встановленими різними наборами пакетів.
chroot
Виклик команди і система починає процес з точки зору файлової системи , яка обмежується поддерева дерева каталогів. Debian та Ubuntu ship schroot , утиліта, яка обертається навколо цієї функції, щоб створити більш корисне підсередовище .
Встановіть schroot
пакет ( Debian ) та debootstrap
пакет ( Debian ). Debootstrap потрібен лише для встановлення альтернативного розподілу і після цього може бути видалений.
Налаштувати schroot
У цьому прикладі описано, як налаштувати альтернативне середовище 32-розрядного Ubuntu 10.04LTS (зрозумілий рись). Аналогічна установка повинна працювати з іншими випусками Debian і Ubuntu. Створіть файл /etc/schroot/chroot.d/lucid32
із таким вмістом:
[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin
Рядок directory=/32
повідомляє schroot, куди ми помістимо файли 32-бітної установки. У рядку username=yourusername
зазначено, що користувачеві yourusername
буде дозволено використовувати schroot. У рядку groups=users,admin
зазначено, що користувачам будь-якої групи буде дозволено використовувати schroot; Ви також можете поставити users=…
директиву.
Встановіть новий дистрибутив
Створіть каталог і почніть заповнювати його за допомогою debootstrap. Debootstrap завантажує та встановлює основний набір пакетів для вказаного розподілу та архітектури.
mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu
У вас вже майже працює система; далі - незначні вдосконалення. Schroot автоматично перезаписує декілька файлів, /32/etc
коли ви запускаєте його, зокрема конфігурацію DNS в /etc/resolv.conf
та базу даних користувачів у /etc/passwd
та інші файли (це може бути замінено, див. Документацію). Є ще кілька файлів, які ви можете скопіювати вручну раз і назавжди:
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
Не буде файлу /etc/mtab
чи /etc/fstab
в chroot. Я не рекомендую використовувати mount
команду вручну в chroot, виконайте це ззовні. Але створити достатньо хороший, /etc/mtab
щоб такі команди, як df
робота, грамотно працювали.
ln -s /proc/mounts /32/etc/mtab
З directory
типом, schroot буде виконувати прив'язку монтування ряду каталогів, тобто ці каталоги будуть спільно з батьківською установкою: /proc
, /dev
, /home
, /tmp
.
Послуги в Chroot
Як описано тут, schroot не підходить для запуску демонів. Програми в schroot будуть знищені, коли ви виходите з schroot. Використовуйте "звичайний" schroot замість schroot "каталогу", якщо ви хочете, щоб він був більш постійним, і встановіть постійні кріплення прив'язки у /etc/fstab
батьківській установці.
У Debian та Ubuntu служби автоматично запускаються при встановленні. Щоб уникнути цього (що може порушити послуги, що працюють за межами chroot, зокрема через те, що мережеві порти спільні), встановіть політику заборони служб у chroot. Поставте такий сценарій як /32/usr/sbin/policy-rc.d
і зробіть його виконуваним ( 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
Заселіть нову систему
Тепер ми можемо почати використовувати chroot. На цей момент ви захочете встановити ще кілька пакетів.
schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...
Можливо, вам доведеться створити кілька локалів, наприклад
locale-gen en_US en_US.utf8
Якщо schroot призначений для старішого випуску Ubuntu, наприклад 8.04 (витривалий), зауважте, що пакет ubuntu-стандарт тягне в MTA. Виберіть nullmailer
замість за замовчуванням postfix
(можливо, ви хочете, щоб ваш chroot надсилав пошту, але ви точно не хочете, щоб він отримував жодну).
Йдемо далі
Для отримання додаткової інформації див. schroot
Посібник , поширені питання щодо schroot та
schroot.conf
посібник . Schroot є частиною проекту Debian autobuilder (buildd) . На сторінці спільноти Ubuntu можуть бути додаткові корисні поради щодо debootstrap .
Віртуальна машина
Якщо вам потрібна повна ізоляція альтернативного середовища, використовуйте віртуальну машину, таку як KVM ( qemu-kvm ) або VirtualBox .