Родная поддержка
Начиная с Ubuntu 11.04 и Debian wheezy (7.0), Debian и Ubuntu имеют поддержку multiarch: вы можете напрямую смешивать пакеты x86_32 (i386) и x86_64 (amd64) в одной системе. Это называется поддержкой multiarch. См. Подробности в ответе 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-битные компоненты пользовательского режима вы установили. Schroot, описанный ниже, заботится об этом.
Schroot
Этот раздел является руководством по установке Debian-подобного дистрибутива «внутри» другого дистрибутива Linux. Он сформулирован с точки зрения установки 32-битной Ubuntu внутри 64-битной Ubuntu, но его следует применять с небольшими изменениями в других ситуациях, таких как установка нестабильной версии Debian внутри стабильной версии Debian или наоборот.
Введение
Идея состоит в том, чтобы установить альтернативный дистрибутив в поддереве и запустить из него. Таким образом, вы можете установить 32-битную систему в 64-битную систему, или другой выпуск вашего дистрибутива, или среду тестирования с различными наборами пакетов.
chroot
Вызов команды и система начинает процесс с точки зрения файловой системы , которая ограничивается поддерева дерева каталогов. Debian и Ubuntu поставляют schroot , утилиту, которая использует эту функцию для создания более удобной суб-среды.
Установите schroot
пакет ( Debian ) и debootstrap
пакет ( Debian ). Debootstrap необходим только для установки альтернативного дистрибутива и может быть удален впоследствии.
Настроить schroot
В этом примере описывается, как настроить 32-разрядную альтернативную среду Ubuntu 10.04LTS (lucid lynx). Подобная установка должна работать с другими выпусками 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 вместо «directory», если вы хотите, чтобы он был более постоянным, и настройте постоянное монтирование в /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 (hardy), обратите внимание, что пакет ubuntu-standard включает MTA. Выберите nullmailer
вместо значения по умолчанию postfix
(вы можете захотеть, чтобы ваш chroot отправлял почту, но вы определенно не хотите, чтобы она получала).
Идти дальше
Для получения дополнительной информации см. schroot
Руководство , часто задаваемые вопросы по schroot и
schroot.conf
руководство . Schroot является частью проекта Debian autobuilder (buildd) . На странице сообщества Ubuntu могут быть дополнительные полезные советы о debootstrap .
Виртуальная машина
Если вам нужна полная изоляция альтернативной среды, используйте виртуальную машину, такую как KVM ( qemu-kvm ) или VirtualBox .