Linux запуск 32 битных приложений

запуск 32х битных приложений

debian lenny, 64 бита. есть 32х битные приложения, некоторые из них запускаются ( например skype ) другие нет (например игрушка про футболистов, написанная на яве (но найтивные библиотеки 32х битные)). что нужно сделать чтобы запустить 32х битное приложение?

Re: запуск 32х битных приложений

> debian lenny, 64 бита. есть 32х битные приложения, некоторые из них запускаются ( например skype ) другие нет (например игрушка про футболистов, написанная на яве (но найтивные библиотеки 32х битные)). что нужно сделать чтобы запустить 32х битное приложение?

Взять себя правой рукой за мочку левого уха(обязательно!) и установить пакет ia32-libs. После установки два раза хлопнуть себя левой рукой по левой коленке и подпрыгнуть. Должно помочь.

Re: запуск 32х битных приложений

> Взять себя правой рукой за мочку левого уха(обязательно!) и установить пакет ia32-libs. После установки два раза хлопнуть себя левой рукой по левой коленке и подпрыгнуть. Должно помочь.

черт, про мочку то совсем забыл 🙁

Re: запуск 32х битных приложений

> например игрушка про футболистов, написанная на яве (но найтивные библиотеки 32х битные))

Смотреть переменные окружения, стопудов оне указывают на 64-битную жабу из дистрибутива.

Re: запуск 32х битных приложений

пробую запускать 32х битной жабой получаю:

Exception in thread «main» java.lang.UnsatisfiedLinkError: /data/bolzplatz2006/lib/lwjgl/liblwjgl.so: libvorbisfile.so.3: cannot open shared object file: No such file or directory

типа файл не может подключить или найти

Re: запуск 32х битных приложений

если 64х битной то
Exception in thread «main» java.lang.UnsatisfiedLinkError: net.sf.jirr.JirrJNI.swig_module_init()V
at net.sf.jirr.JirrJNI.swig_module_init(Native Method)
at net.sf.jirr.JirrJNI. (JirrJNI.java:2189)

Re: запуск 32х битных приложений

Тексты ошибок еще анализировать надо. Либо поставь ворбис (скорей всего стоит), либо создай нужный симлинк на либу.

Re: запуск 32х битных приложений

>написанная на яве (но найтивные библиотеки 32х битные))

Насколько я знаю яве насрать на платформу. Проверь пусковые скрипты явы, установку самой явы. И поставь ia32-libs.

Re: запуск 32х битных приложений

Поставь 32-битный ворбис из 32-х битного дистрибутива ручками.

Re: запуск 32х битных приложений

>Насколько я знаю яве насрать на платформу.

Яве то насрать но она использует библиотеки-переходники к 3д графике и музыке

Re: запуск 32х битных приложений

>Поставь 32-битный ворбис из 32-х битного дистрибутива ручками.

кстати, заработало! спастбо большое хотя сейчас кажется поставить ворбис было самым логичным.

не понравилось что пришлось все зависимости руками ставить, хоть мне и писали чего не хватает но скачивать руками. пакеты. и потом руками их ставить.

Re: запуск 32х битных приложений

Вообще, в дебиане например делается chroot и туда ставится всё что небходимо обычными средствами. В этом chrootе запускается всё что не запустилось без него.

Читайте также:  Novell evolution для windows

Источник

Как мне запустить 32-битные программы на 64-битном Debian / Ubuntu?

У меня установлена ​​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 пакет ( 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 и другие файлы (это можно переопределить, см. Документацию). Есть еще несколько файлов, которые вы можете скопировать вручную раз и навсегда:

Читайте также:  Indexer diagnostics windows 10

Там не будет файла /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 .

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

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

Источник

Блог начинающего сисадмина

Здесь уже не будет ничего интересного, лучше загляните сюда: https://medium.com/@Amet13

понедельник, 16 апреля 2018 г.

Как запускать 32-битные программы на 64-битном дистрибутиве Linux

На сегодняшний день все выпускаемые процессоры так или иначе поддерживают 64-битную архитектуру. В связи с тем, что 32-битные процессоры могут адресовать 232 бита данных, они не могут работать с памятью более 4 Гб, однако процессоры на архитектуре x86-64, могут работать с гораздо более большим объемом памяти. Отличительными особенностями новых процессоров является поддержка 64-битных регистров общего назначения (РОН), арифметических и логических операций над целыми числами и поддержкой 64-битных виртуальных адресов.

В GNU Linux для того чтобы узнать разрядность процессора, существует команда lscpu :
$ lscpu | grep Architecture
Architecture: x86_64

Поле Architecture отображает разрядность процессора ( x86_64 ), в случае 32-битного процессора значение этого поля было бы i686 ( i386 ).
Для того, чтобы узнать разрядность операционной системы, существует команда arch :
$ arch
x86_64

В довольно редких случае необходимо запускать программы, написанные под 32х-битную ОС когда-то давно на новых операционных системах. Существует несколько способов запуска 32-битных программ на 64-битной системе:
— с использованием нативной поддержки (multiarch)
— с использованием технологий ядра Linux: chroot, Docker, OpenVZ
— с использованием виртуальных машин

Multiarch

В то время, как 64-битные программы не могут работать в 32-битных операционных системах, 32-битные программы могут работать в 64-битных операционных системах, однако они нуждаются в соответствующих 32-битных библиотеках. Со времен появления дистрибутивов Ubuntu 11.04 (Natty) и Debian 7.0 (Wheezy) было объявлено о поддержке multiarch, где 32-битные и 64-битные библиотеки могут сосуществовать вместе в одной системе. Пакет под названием ia32-libs включает в себя множество версий разделяемых библиотек.
Пример установки 32-битной программы в Debian/Ubuntu:
# dpkg —add-architecture i386
# apt update
# apt install -y ia32-libs
# apt install package-name:i386

Читайте также:  Авторские сборки линукс 2020

chroot

С помощью технологии chroot, поддержку которой имеет ядро Linux, возможно организовать запуск 32-битных программ в изолированном окружении (песочнице) в уже имеющейся 64-битной операционной системе. Идея состоит в том, чтобы установить необходимое окружение в поддереве каталогов и запустить приложения из под него. В основном chroot используется для тестирования различных приложений, в том числе для 32- и 64-битных архитектур.
Команда chroot и одноименный системный вызов запускают процессы, с учетом того, что на самом деле запускаемое окружение является всего лишь системным подкаталогом.

Для организации удобного управления подобным окружением существует утилита schroot :
# apt update
# apt install -y schroot debootstrap dbus

Утилита debootstrap позволяет установить базовую систему Debian в необходимый подкаталог. Пакет dbus позволяет некоторым приложениям в операционной системе общаться друг с другом.

Пример установки 32-битного окружения в chroot:
# mkdir /chroot
# debootstrap —arch=i386 stable /chroot http://deb.debian.org/debian/

После создания окружения, создаем конфигурационный файл для его запуска:
# vim /etc/schroot/chroot.d/test
[test]
description=Installing 32-bit env
aliases=test
type=directory
directory=/chroot
users=root
root-groups=root
profile=desktop
personality=linux
preserve-environment=true

Заходим в окружение chroot:
# schroot -c test
(test)[email protected]:

После этого можно устанавливать необходимые программы в данное окружение chroot.

Технология chroot является полезной, однако распространение таких технологий как OpenVZ и Docker позволяют не только изолировать окружения в каталогах, но и изолировать ресурсы для каждого контейнера. В данный момент множество людей во всем мире использую Docker для запуска множества контейнеров, в основном для тестирования различных версий ПО.

К примеру команда:
# docker run -i -t ubuntu:12.04 /bin/bash
запускает контейнер с операционной системой Ubuntu 12.04.

Аналогично для OpenVZ 7:
# prlctl create ct1 —ostemplate debian-8.0-x86_64 —vmtype=ct

У Docker и OpenVZ есть один недостаток, так как это технология виртуализации уровня операционной системы, то он может запускать только приложения, поддерживающие ядро хост-системы. Например Вы не сможете запустить Windows или FreeBSD на ядре Linux.

KVM / VirtualBox / Hyper-V / ESXi

Для того, чтобы запустить любые операционные системы существуют технологии полной виртуализации, такие как KVM, VirtualBox и другие. С помощью KVM можно запускать любую x64-совместимую операционную систему поверх Linux, поэтому любую 32-битную систему можно установить в гостевую виртуальную машину без использования multiarch, chroot и Docker, достаточно лишь скачать необходимый образ операционной системы и установить ее на виртуальную машину.

Пример установки дистрибутива Linux Mint в виртуальную машину KVM.
Создадим виртуальный жесткий диск размером 10 Гб:
$ dd if=/dev/zero of=/vdisk_qemu bs=10000000 count=1000

Запуск виртуальной машины:
$ kvm -k ru -cdrom /linuxmint-32bit.iso -hda /vdisk_qemu -m 1024 -boot d -name TEST32
где:
-cdrom указывает путь к iso-образу операционной системы
-hda /vdisk_qemu путь к виртуальному жесткому диску
-m 1024 оперативная память указанная в мегабайтах
-boot d порядок загрузки оборудования (с cdrom)
-name TEST32 имя виртуальной машины

После установки операционной системы, можно отключить виртуальную машину и запустить ее с виртуального жесткого диска.
$ kvm -hda /vdisk_qemu -m 1024

Источник

Оцените статью