Иногда нужно запускать 32-bit приложения в 64-bit системе. Это приходится делать из-за неразрешимых зависимостей в пакетах.
Итак, поехали.
Ставим то что нам понадобится:
sudo apt-get install debootstrap schroot
Создаем директорию и конфигурационный файл для нашего chroot:
sudo mkdir /trusty_i386 sudo nano /etc/schroot/chroot.d/trusty_i386.conf
И записываем туда вот что:
[trusty_i386] description=Ubuntu 14.04 Trusty for i386 directory=/trusty_i386 personality=linux32 root-users=mike type=directory users=alice,mike
Тут:
directory (раньше - location) - Директория где будут лежать файлы этого environment. Директория должна быть за пределами /home. tree.
По-умолчанию - /srv/chroot.
personality - Эта строка нужна, если хост-система 64-bit, а chroot-система - 32-bit. В противном случае можно отключить или закомментировать “#”.
root-users - Пользователи хост-системы, которые имеют права запускать schroot и получат root-доступ к chroot-окружению.
users - Пользователи хост-системы, которые имеют права запускать schroot и получат пользовательский доступ к chroot-окружению.
Выполнем установку нашей Ubuntu 14.04 Trusty 32-bit системы в указанную папку:
sudo debootstrap --variant=buildd --arch=i386 trusty /trusty_i386 http://archive.ubuntu.com/ubuntu/
Для других дистрибутивов просто меняем trusty на название дистра (например для Ubuntu 13.04 - precise)
Смотрим на список сконфигурированных chroot:
schroot -l
Теперь запустим наше chroot-окружение и убедимсо, что там внутри 32-bit:
schroot -c trusty_i386 -u root (trusty_i386)root@host-system:/home/mike# uname -a Linux host-system 3.16.0-031600rc2-generic #201406220135 SMP Sun Jun 22 05:36:21 UTC 2014 i686 i686 i686 GNU/Linux
Затем в окружении chroot ставим компоненты системы:
(trusty_i386)root@host-system:/home/mike# apt-get install ubuntu-minimal
Для запуска GUI-приложений необходимо задать системную переменную DISPLAY (посмотреть ее на хост системе - echo $DISPLAY):
(trusty_i386)root@host-system:/home/mike# DISPLAY=:0 ./yourapp
Discussion