Как включить 32 бита в ubuntu

Обновлено: 07.07.2024

У меня установлена ​​64-битная (amd64 или x86_64) Debian или Ubuntu. Мне нужно время от времени запускать 32-битные (i386 / i686) программы или компилировать программы для 32-битной системы. Как я могу сделать это с минимумом суеты?

Бонус: что делать, если я хочу запустить или протестировать более старый или более новый выпуск дистрибутива?

Родная поддержка

Начиная с 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

Установите schroot пакет ( Debian ) и debootstrap пакет ( Debian ). Debootstrap необходим только для установки альтернативного дистрибутива и может быть удален впоследствии.

Настроить schroot

В этом примере описывается, как настроить 32-разрядную альтернативную среду Ubuntu 10.04LTS (lucid lynx). Подобная установка должна работать с другими выпусками Debian и Ubuntu. Создайте файл /etc/schroot/chroot.d/lucid32 со следующим содержимым:

Строка directory=/32 сообщает schroot, куда мы поместим файлы 32-битной установки. Строка username=yourusername говорит, что пользователю yourusername будет разрешено использовать schroot. В строке groups=users,admin говорится, что пользователям в любой группе будет разрешено использовать schroot; Вы также можете поставить users=… директиву.

Установите новый дистрибутив

Создайте каталог и начните заполнять его debootstrap. Debootstrap загружает и устанавливает базовый набор пакетов для указанного дистрибутива и архитектуры.

У вас уже есть работающая система; то, что следует, является незначительными улучшениями. При запуске Schroot автоматически перезаписывает несколько файлов /32/etc , в частности конфигурацию DNS /etc/resolv.conf и базу данных пользователей /etc/passwd и другие файлы (это можно переопределить, см. Документацию). Есть еще несколько файлов, которые вы можете скопировать вручную раз и навсегда:

Там не будет файла /etc/mtab или /etc/fstab в chroot. Я не рекомендую использовать mount команду вручную в chroot, делайте это снаружи. Но создайте достаточно хорошо, /etc/mtab чтобы заставить команды, такие как df работать разумно.

С 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 ).

Заполните новую систему

Теперь мы можем начать использовать chroot. Вы хотите установить еще несколько пакетов на этом этапе.

Вам может потребоваться создать несколько локалей, например

Если schroot предназначен для более ранней версии Ubuntu, такой как 8.04 (hardy), обратите внимание, что пакет ubuntu-standard включает MTA. Выберите nullmailer вместо значения по умолчанию postfix (вы можете захотеть, чтобы ваш chroot отправлял почту, но вы определенно не хотите, чтобы она получала).

Идти дальше

Для получения дополнительной информации см. schroot Руководство , часто задаваемые вопросы по schroot и schroot.conf руководство . Schroot является частью проекта Debian autobuilder (buildd) . На странице сообщества Ubuntu могут быть дополнительные полезные советы о debootstrap .

Виртуальная машина

Установите qemu-kvm

Если вам нужна полная изоляция альтернативной среды, используйте виртуальную машину, такую ​​как KVM ( qemu-kvm ) или VirtualBox .

Читайте также: