Run 32 bit on 64 bit linux

How to Run 32-bit Apps in 64-bit Linux

Most Linux distributions have 64-bit versions for x86_64 processors, such as the AMD Athlon II or the Intel Xeon. Since these distributions maintain their own package repositories, they usually provide binary packages for all of their supported applications. If you are completely content with your out-of-box Linux installation, you may never need to run a 32-bit program.

Some commercial Linux software, particularly games, only provide 32-bit versions. In these rare cases, you will need to configure your 64-bit machine to run 32-bit software.

Install the 32-bit libraries

Because x86_64 processors are designed over x86 technology, they are still able to support 32-bit programs without any hardware emulation, like what you would need to run x86 programs in a PowerPC or Sparc environment. In Linux, all you need to do is install the necessary software libraries to run the 32-bit software. Fortunately, many Linux distributions package these libraries for you. In Ubuntu, for example, the package is called ia32-libs. To install it, just open a terminal window and type:

You can also install it graphically from within Synaptic.

Once installed, applications like Skype and games like World of Padman should work without further configuration.

GTK Issues

When running 32-bit programs in a 64-bit environment, Ubuntu still looks for the default GTK engines. This will cause you to receive an error such as this: “wrong ELF class”. This type of error can be particularly annoying in applications like Chromium, the new open source version of the Google Chrome browser.

Ubuntu does actually install the default 32-bit version of the GTK engines in /usr/lib32/gtk-2.0, but what I discovered in my case was that GTK themes like the one I was using, qtcurve, were not found in this directory. The result was really ugly GTK programs.

The quick solution was to do the following:

1. Find the 32-bit package of the theme you are using. In my case, I searched ubuntu packages.

2. Download the package and extract its contents like you would a normal compressed file.

3. Find the library file for the theme. For qtcurve it was found at “

4. Copy the library to the lib32 directory:

For Chromium this was all that was required because the Chromium startup script was already configured to look in “/usr/lib32/gtk-2.0”. If the startup script of the program you are running does not look there but instead looks to /usr/lib/gtk-2.0, you will need to modify the startup script or export an environment variable before starting it by opening a terminal window and typing:

If there is no startup script for the program, you could create one with the above environment variable set.

If All Else Fails

I have found some applications refuse to behave nicely in a 64-bit environment under any normal circumstances, even with ia32-libs installed. The only viable alternative besides chucking your 64-bit machine or chucking the software is to run it in a chroot environment. This literally installs an entire 32-bit version of your operating system within a directory on your computer. It will take more space than simply installing a few libraries, but it ensures that all of the 32-bit components, including 3D graphics kernel modules, are installed.

Читайте также:  Astra linux не работает мышь

Tavis J. Hampton is a freelance writer from Indianapolis. He is an avid user of free and open source software and strongly believes that software and knowledge should be free and accessible to all people. He enjoys reading, writing, teaching, spending time with his family, and playing with gadgets.

Our latest tutorials delivered straight to your inbox

Источник

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

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

Читайте также:  Pdf ридер с возможностью редактирования

После создания окружения, создаем конфигурационный файл для его запуска:
# 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

Источник

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

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

Читайте также:  Jet smart filters wordpress

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

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector