Меню Рубрики

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

Запуск 32-х битных приложений в 64-х битной системе Ubuntu Linux

Если вы используете 64-х битную систему Linux, тогда часто могут возникать ситуации, когда какое-нибудь приложение отказывается запускаться, выдавая ошибку.

В частности при попытке выполнить в командной строке файл, предназначенный для битной системы, может возникать ошибка вида:
./somefile: Нет такого файла или каталога (No such file or directory)

Чтобы битные приложения могли запускаться в битной системе Linux нужно установить соответствующие библиотеки (в Ubuntu пакет, который содержит эти библиотеки, называется ia32-libs ). Для их установки выполните команду:

Данное решение не является рецептом от всех проблем, связанных с запуском разрядных программ в битной системе Linux. Некоторые приложения по прежнему не будут запускаться, а некоторым могут потребоваться и еще какие-нибудь дополнительные битные библиотеки. Но для многих случаев установка ia32-libs в Debian based Linux системах значительно помогает.

Источник

запуск 32 битного приложения на 64 битном debian

Здравствуйте. У меня debian jessy 64 бит. В тырнетах советуют ставить ia32-libs для таких случаев но в репозиториях его нет. Подскажите что делать. Спасибо.

dpkg —add-architecture i386
aptitude update

я добавил архитектуру i386 и всеравно aptitude пишет «Нет подходящей версии для ia32-libs»

Читать надо было по сслыкам. ia32-libs больше не нужен.

вроде поставил нужные либы но при запуске приложения пишет ./X3AP_config: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS64 похоже ей не нравятся 64 битные дрова. как поставить 32 битные чтобы они были по соседству с 64 битными

Сейчас же уже вроде multiarch ?

Давайте обо всём по порядку:

  • Что за программа будет использоваться?
  • Какая видеокарта стоит в компе?

программа — x 3 albion prelude видеокарта radeon hd 6970

Источник

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

Здесь уже не будет ничего нового интересного, лучше загляните сюда: 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

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

Источник

Как запускать 32х разрядные приложения (Linux) в 64х битном окружении?

Под 64 разрядной ОС (Ubuntu 10.04 x86_64) нужно запустить 32х разрядное приложение (CAD пакет Medusa Personal). Немного сомневаюсь, как поступать в таких случаях. При попытке запустить выдает

/opt/medusa4_personal_v5_0/medcolraster/m2d/run/draft: error while loading shared libraries: libtiff.so.3: wrong ELF class: ELFCLASS64

насколько я понимаю, это из за разрядности. Вообще вопрос более общий. Как вообще запускать приложения в таких случаях (не конкретно Медузу)? Доставлять библиотеки 32х? Откуда доставлять и какие?

2 ответа 2

Из репозитариев. Вот взять skype, например. Это стандартная проприетарная программа в rpm-пакете. Под 32-бита работает отлично, под 64-битной системой не запускается с выдачей сообщения об ошибке. Приходится вручную доставлять библиотеки. На разных системах — разные. Но списочек может получиться, например, такой: ia32-libs, lib32asound2, libasound2-plugins. Как видно из названий библиотеки 32-битные. Проблема с проприетарностью лишь та, что просто не все зависимости прописаны.

По медузе решение тоже есть. Необходимо в файле /medusa4/master_project/login добавить строчки с указанием путей к 32-битным библиотекам

Затем сделать ссылку на 32-битную версию библиотеки

Источник

32-битное приложение в Wine64

Привет, Kron4ek , а также все остальные гуру вайна!
Вопрос: могу ли я запустить 32-битное приложение в твоей 64-битной сборке Wine на 64-битной системе?

Исходные данные:
Debian 10 64-bit
wine-4.11-8-proton-amd64.tar.xz
32-битное приложение

amd64 — for 64-bit systems, it can run both 32-bit and 64-bit applications

Что я делаю не так? Чего не хватает?

Да, 32-битные приложения без проблем работают. Но нужно, чтобы в системе были 32-битные библиотеки установлены. То есть, как минимум, нужны 32-битные glibc, freetype и видеодрайвер (на самом деле, зависимостей больше).

Ну и попробуй, любопытства ради, вот так запустить winecfg:

На чистой 64-битной ОС без 32-битных библиотек не получится запустить 32-битные приложения (ни нативные, ни через Wine).

Но нужно, чтобы в системе были 32-битные библиотеки установлены. То есть, как минимум, нужны 32-битные glibc, freetype и видеодрайвер

А, блин, ясно. Пробовал ставить через apt, полсистемы прилетает. Думал, есть возможность все-таки без этого 🙂

Думал, есть возможность все-таки без этого 🙂

Может быть, когда-нибудь сделают прослойку для таких целей, но пока что Wine именно так устроен.

Пробовал ставить через apt, полсистемы прилетает.

Это да, много чего устанавливается.

Понял, спасибо. Тему удалить не могу 🙂 Ну да ладно.

Если хочешь, можешь попробовать мой Wine Standalone со встроенными библиотеками.

С ним, по идее, в систему придется установить не так много библиотек (только базовые).

squashfs установил, если что.

Какой у тебя дистрибутив?

Нет, такая же ошибка.

Я расписал все. Debian 10 64-bit.

Кстати, самый первый раз запускал без установленного squashfs. В /tmp создались временные файлы с /mnt и т.д. Удалить от рута не вышло. Перезагрузился, запустил, теперь так:

От рута чет стремно запускать твою штуковину 🙂

Я расписал все. Debian 10 64-bit.

Точно, невнимательный я 🙂

Кстати, самый первый раз запускал без установленного squashfs. В /tmp создались временные файлы с /mnt и т.д.

Так и должно быть, но странно, что они не удалились потом сами.

Перезагрузился, запустил, теперь так:

Хорошо, значит образ все-таки смонтировался. А эта ошибка из-за того, что у тебя 32-битный glibc не установлен. Базовые бибилотеки все равно нужны.

От рута чет стремно запускать твою штуковину 🙂

От рута и не нужно, она задумана так, чтобы запускать с правами пользователя.

32-битный glibc не установлен. Базовые бибилотеки все равно нужны.

Понятно, ну, в общем, это притянет все то, что ставишь через пакетный менеджер. Не хотел просто в системе сорить всем этим. Ладно, отбой. И спасибо за старания 🙂

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Запись с экрана монитора linux
  • Запись с usb камеры linux
  • Запись с ip камер linux
  • Запись образа на диск в linux mint
  • Запись образа диска на флешку linux