Запуск 32 битных приложений на 64 linux: Запуск 32-х битных приложений в 64-х битной системе Ubuntu Linux
Возможен ли запуск 64-битных приложений в 32-битной операционной системе?
В настоящее время широко распространены 64-битные ОС [1]. Но и 32-битные ОС еще присутствуют на рынке в достаточно большом количестве. Многие современные программные средства разрабатываются исключительно для работы в 64-битном режиме, так как для обеспечения работоспособности программы и в 32-битной, и в 64-битной ОС требуются дополнительные трудозатраты и, соответственно, стоимость разработки повышается.
Для пользователей 32-битной ОС иногда возникает необходимость использовать программные средства, предназначенные только для 64-битной ОС. Что же делать, если пользователь не готов отказаться от 32-битной ОС как основной рабочей системы?
Для различных ОС существуют свои особенности, связанные с запуском 64-битных приложений в 32-битном окружении. При запуске 64-битного приложения непосредственно в 32-битном окружении теряется преимущество, связанное с возможностью использования большего количества оперативной памяти. Для поддержки 64-битных приложений ваш процессор должен обладать 64-битной архитектурой. Рассмотрим некоторые наиболее популярные ОС.
В Mac OS X ядро является гибридным. Оно позволяет одинаково работать любым приложениям в независимости от того, являются ли они 32- или 64-битными. Единственное отличие гибридного ядра от полноценного 64-разрядного — это невозможность использовать в системе больше 32 ГБ оперативной памяти. Поэтому на данный момент нет совершенно никакой разницы между загрузкой в 32- и 64-битном режимах. А вот в будущем разница обязательно появится по мере увеличения объемов использования ОЗУ и появления новых технологий.
Для ОС семейства Linux и 32-битных ОС семейства Windows запуск 64-битных приложений в 32-битном окружении осуществляется с применением технологий виртуализации [2]. Существует ряд специализированных программных продуктов, позволяющих установить виртуальную гостевую 64-битную OC, в которую вы сможете инсталлировать требуемое вам приложение и осуществить его запуск. При этом, если устанавливаемая ОС платная, то вы вынуждены будете ее купить.
Виртуализация
Виртуальная машина — программное обеспечение, эмулирующее работу аппаратного обеспечения некоторой платформы со всеми его компонентами (процессор, память, жесткий диск, usb-шина, привод оптических дисков, видео и сетевые адаптеры и т.д.). Виртуальная машина позволяет устанавливать и запускать несколько гостевых систем (ОС, запускаемые на виртуальных машинах) в рамках одной хост-системы (ОС, установленная на аппаратном обеспечении) одновременно. Перечень операционных систем, устанавливаемых на виртуальные машины, разнообразен и зависит от конкретной системы виртуализации.
Вот некоторые популярные решения:
Oracle VirtualBox — универсальная бесплатная виртуальная машина. VirtualBox — очень простой, мощный и бесплатный инструмент для виртуализации, развивающийся благодаря поддержке знаменитой корпорации Oracle. Он распространяется бесплатно, с открытым исходным кодом. VirtualBox позволяет устанавливать в качестве «гостевой» практически любую современную операционную систему, будь то Windows, Mac OS или любой из многочисленных представителей семейства Linux.
VMware Workstation — для серьёзных задач. VMware Workstation — мощная, платная, максимально-надёжная программа для виртуализации, которая поддерживает работу с Windows и Linux. Для виртуализации Mac OS данная машина не предназначена.
QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ.
Аппаратная виртуализация
Для запуска гостевой 64-битной виртуальной машины в 32-битном окружении необходимо, чтобы процессор обладал 64-битной архитектурой и поддерживал технологии аппаратной виртуализации, такие как Intel VT-x и AMD-V. Иногда их необходимо вручную включить в BIOS вашей системы.
Облачные вычисления
Все эти решения требует определенной производительности от системы, и не всегда есть возможность добиться оптимальной работы требуемого вам приложения.
В настоящее время широко развиваются технологии облачных вычислений [3]. Они позволяют развернуть любые ОС на удаленных серверах и запускать на них ваши приложения. При этом никаких ограничений на вашу 32-битную систему не накладывается, все расчеты производятся на удаленных машинах. Например, это Microsoft Azure, с помощью которой можно развернуть множество ОС и исполнять различные, в том числе и высокопроизводительные, приложения.
Часто вопрос о запуске 64-битных приложений на устаревающих 32-битных машинах стоит перед геймерами. Существуют специализированные облачные решения и для таких задач. Например, NVIDIA GRID. GRID воспроизводит 3D игры на облачных серверах, мгновенно кодирует каждый кадр и передает результаты на любое устройство с проводным или беспроводным высокоскоростным подключением к сети Интернет.
Заключение
Мы видим, что запуск 64-битных приложений в 32-битной ОС возможен, но связан с определенными трудностями. Так как некоторые решения являются платными, необходимо оценить, какая технология подходит вам больше.
Дополнительные ссылки
bit — Запуск 32-разрядного приложения на 64-битном Ubuntu [dубликат]
для системы, которая всегда будет храниться в автономном режиме, как правило, лучше всего использовать один из надежных оффлайн методов управления, представленной в некоторых других ответов. Это потому, что они облегчают уже-ведение установленных пакетов в курсе, а не просто установку кучка пакетов один раз.
однако, в отдельных случаях, когда вы просто хотите быстро установить пакеты в системе, которая не имеет подключения к Интернету (и у вас есть возможность скачать их на другой машине и привезу), вы можете сделать это. Основная сложность состоит в определении того, что вам нужно, так как часто есть другие пакеты, от которых она зависит, и которая, следовательно, должна быть установлена раньше, или одновременно, установки пакета.
этот ответ мотивируется дублировать вопрос G++ в Ubuntu 14.04 и используются при необходимости установки g++ в качестве основного примера.
я подчеркиваю, что этот метод не должен применяться длительно в качестве альтернативы то, что, по крайней мере, облегчает автоматическое определение и установка необходимых обновлений безопасности. Не подключаясь к сети снижает вероятность нападения значительно, но некоторые ошибки безопасности могут быть использованы с помощью данных из любого источника.
хотя этот метод может показаться сложным, как правило, занимает всего несколько минут. Для пакетов с большим количеством зависимостей, это может занять больше времени. Для установки метапакетов, которые тянут на очень большое количество зависимостей (например, ubuntu-desktop на минимальную систему), это может занять гораздо больше времени, чтобы скачать все необходимое .deb файлы и этот метод вряд ли подойдет.
определения необходимых зависимостей
можно смоделировать установки, чтобы определить, какие другие пакеты, необходимые для удовлетворения зависимостей пакета. Прохождение -s флаг apt-get (прежде чем указать какие-либо действия) это.
apt-get -s install g++
я опустил на [F11], так как это только имитация, так что права root не нужны.
если вы действительно хотите установить все самые распространенные инструменты для построения пакетов, а не просто g++, Вы предпочтете:
apt-get -s install build-essential
выход (ибо [от f13]) будет выглядеть так:
NOTE: This is only a simulation!
apt-get needs root privileges for real execution.
Keep also in mind that locking is deactivated,
so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
g++-4.8 libstdc++-4.8-dev
Suggested packages:
g++-multilib g++-4.8-multilib gcc-4.8-doc libstdc++6-4.8-dbg
libstdc++-4.8-doc
The following NEW packages will be installed:
g++ g++-4.8 libstdc++-4.8-dev
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Inst libstdc++-4.8-dev (4.8.2-19ubuntu1 Ubuntu:14.04/trusty [amd64])
Inst g++-4.8 (4.8.2-19ubuntu1 Ubuntu:14.04/trusty [amd64])
Inst g++ (4:4.8.2-1ubuntu6 Ubuntu:14.04/trusty [amd64])
Conf libstdc++-4.8-dev (4.8.2-19ubuntu1 Ubuntu:14.04/trusty [amd64])
Conf g++-4.8 (4.8.2-19ubuntu1 Ubuntu:14.04/trusty [amd64])
Conf g++ (4:4.8.2-1ubuntu6 Ubuntu:14.04/trusty [amd64])
это говорит о том, что установить g++ на моей системе, мне нужны пакеты g++, g++-4.8, и [f17 в].
судя по результатам моделирования, как правило, лучше, чем просто глядя зависимостей пакета (или предполагая, что то, что вам нужно такое же, как и выше), потому что:
вы, возможно, уже установлены некоторые зависимости. Зависимости (т. е., пакеты, пакет нужно установить или работы) сами по себе могут иметь зависимости, что вы уже не установили. [dиода d17]получать пакеты[!dиода d17]
когда вы знаете, какие пакеты вам нужны, вы можете их скачать. Я предлагаю использовать для этого запуска, потому что загрузки SSL-шифрованием, который помогает предотвратить повреждение файлов.
это не просто защита от случайных или умышленных манипуляций злоумышленник; он также помогает предотвратить случайное повреждение файла, который является гораздо более распространенной проблемой для загруженных файлов. Есть еще один вид это не мешает: когда загружает файл только частично, но вы думаете, что это закончено. Установка пакета обычно с apt-get или в центре программного обеспечения не требует https, поскольку его хэш сверяется с цифровой подписью список хэшей. Если вы в конечном итоге положить эти пакеты в кэше пакета и используя [зг19], чтобы установить их, что будет происходить. Но если вы в конечном итоге того, чтобы установить вручную загруженные пакетами с dpkg -i, что не будет сделано.
Вы можете искать пакет, вписав свое имя под пакеты в и G++ в Ubuntu 14.04 и нажать кнопку «Найти пакет». Например, поиск [клавиши f21] приносит вам на GCC-4.8 страницы исходный пакет.
выберите название вашего релиза убунту. Вы работаете 14.04, так что это надежный Тар. Кодовые имена для всех версий Ubuntu перечислены на GCC-4.8 страницы пакета с исходным кодом. Нажмите кнопку вправо треугольника для просмотра загрузки пакета.
для некоторых пакетов можно расширить списки загрузок с более чем одним до. Вы можете увидеть:
это не просто защита от случайных или умышленных манипуляций злоумышленник; он также помогает предотвратить случайное повреждение файла, который является гораздо более распространенной проблемой для загруженных файлов. безопасности, обновления для системы безопасности поставляются после освобождения; есть еще один вид это не мешает: когда загружает файл только частично, но вы думаете, что это закончено. предложенные обновления, которые доступны для установки, но не в стадии тестирования и не рекомендуется для общего использования; Установка пакета обычно с apt-get или программного обеспечения не требует https, поскольку его хэш сверяется с цифровой подписью список хэшей. Если вы в конечном итоге положить эти пакеты в кэше пакета и используя [зг19], чтобы установить их, что будет происходить.
например, вот что доступно для Firefox в 14.04:
[!d31]
как правило, вы хотите пакеты в безопасности или обновлений, если они существуют, и в противном случае пакеты в релизе.
после того как вы расширить список пакетов, находим файл .deb для вашей архитектуры. В debs названы name_version_architecture.deb. Наиболее распространенные архитектуры:
безопасности, обновления безопасности, поставляемые после освобождения; 32-разрядный ПК/Mac (так называемый [f25 привод датчика], также для обоих)
например, чтобы получить пакет g++-4.8 для 64-разрядной версии Ubuntu, вы можете скачать g++-4.8_4.8.4-1ubuntu15_amd64.deb.
[размером d57]устанавливаем пакеты[!размером d57]
если пакеты получены, являются безопасность, что apt-get с install действие бы автоматически получить и установить (если ваша система была подключенных к сети), тогда вы можете положить пакеты в [f30 С] и просто выполните эту команду:
sudo apt-get install g++
если эта система не была подключена к Интернету, то это будет, наверное, тот случай, когда все пакеты были извлечены из обновления карман. Независимо от того, являются ли системы не подключены к Интернету, это также почти всегда в том случае, если нет пакетов в любой другой карманы были показаны на launchpad. (По сути, только ситуации это не является, если вы установили Альфа-или бета-версии системы и не обновили его.)
[d63, как]в конкретном случае установки g++, я хотел бы использовать [f32 из].[!d63, как] [d64 С]В тех случаях, когда это не сработает или вы ожидаете, что это не установите пакеты, поставив их в пустую папку и работает:[!d64 с] sudo dpkg -Ri /path/to/folder
или вы можете назвать пакеты по отдельности. Этот пример предполагает пакеты в текущем каталоге (т. е., что вы cdЭд в каталог, содержащий их):
sudo dpkg -i package1.deb package2.deb ...
, если числа установленных пакетов очень мала никогда вы знаете точный порядок, в котором они должны быть установлены для зависимостей, чтобы быть удовлетворенным, это значительно эффективнее использовать эти методы, чем вручную установить каждый пакет по отдельности.
как запустить 64-битную программу на 32-битной машине [dубликат]
При условии, что ваше аппаратное обеспечение поддерживает 64-битные, что делает:
CPU op-mode (s): 32-разрядный, 64-битный
blockquote>
, и пакет был готов использовать многоархиво, что также верно:
dpkg -I viber.deb
new debian package, version 2.0. <--- here
size 57046082 bytes: control archive=8024 bytes.
0 bytes, 0 lines 0
1210 bytes, 29 lines control
9475 bytes, 33 lines * copyright
7404 bytes, 85 lines md5sums
39 bytes, 2 lines * postinst #!/bin/bash
800 bytes, 35 lines * preinst #!/bin/bash
500 bytes, 24 lines * prerm #!/bin/bash
Package: viber
Version: 4.2.2.6
Section: non-free/net
Priority: extra
Architecture: amd64 <---- and here
вы могли бы просто установить необходимые 64-битные библиотеки и двоичные файлы, которые зависят от пакета (это ничто, больше о что позже), что вам нужно запустить приложение с виртуальным нулевым эффектом. В моем случае я просто установил пакет просто:
$ sudo dpkg --add-architecture amd64
## adding 64-bits architecture package, in my system I didn't need to
## but it's likely you have
$ sudo apt-get update # this downloads the package list for amd64 arch
$ sudo dpkg -i viber.deb
Selecting previously unselected package viber.
(Reading database ... 268703 files and directories currently installed.)
Preparing to unpack viber.deb ...
Unpacking viber (4.2.2.6) ...
Setting up viber (4.2.2.6) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for mime-support (3.56) ...
Processing triggers for desktop-file-utils (0.22-1) ...
И затем начал работать в проблемах …
Менеджеры пакетов решили, что они не должны перечислять какую-либо зависимость для их пакет,
Installed-Size: 141336
Conflicts: Viber (<< 4.2.2.6)
Replaces: Viber (<< 4.2.2.6)
Maintainer: Viber Media Inc <[email protected]>
, который им действительно нужен:
ldd /opt/viber/Viber | grep 'not found'
libXcomposite.so.1 => not found
libxslt.so.1 => not found
libxml2.so.2 => not found
libgstreamer-0.10.so.0 => not found
libgstapp-0.10.so.0 => not found
libgstbase-0.10.so.0 => not found
libgstinterfaces-0.10.so.0 => not found
libgstpbutils-0.10.so.0 => not found
libgstvideo-0.10.so.0 => not found
libsqlite3.so.0 => not found
, поэтому вы должны найти и установить библиотеки, отсутствующие вручную! Это легко, если вы знаете правильные инструменты. apt-file
пригодится здесь, также http://packages.ubuntu.com функциональность «Поиск содержимого пакетов» также прекрасна. Но я пошел дальше и искал их:
Эти файлы уже установлены в моей системе, вам нужно всего лишь скопировать имя пакета, то есть перед двоеточием, заканчивающимся на amd64
. Вы должны скопировать имена пакетов в том виде, в каком они есть:
dpkg -S $(ldd /opt/viber/Viber | awk '{print $3}' | grep -vP 'not|viber')
libc6:amd64: /lib/x86_64-linux-gnu/libpthread.so.0
libc6:amd64: /lib/x86_64-linux-gnu/libdl.so.2
libc6:amd64: /lib/x86_64-linux-gnu/librt.so.1
libstdc++6:amd64: /usr/lib/x86_64-linux-gnu/libstdc++.so.6
libc6:amd64: /lib/x86_64-linux-gnu/libm.so.6
libgcc1:amd64: /lib/x86_64-linux-gnu/libgcc_s.so.1
libc6:amd64: /lib/x86_64-linux-gnu/libc.so.6
libx11-6:amd64: /usr/lib/x86_64-linux-gnu/libX11.so.6
libxext6:amd64: /usr/lib/x86_64-linux-gnu/libXext.so.6
zlib1g:amd64: /lib/x86_64-linux-gnu/libz.so.1
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/libGL.so.1
libxrender1:amd64: /usr/lib/x86_64-linux-gnu/libXrender.so.1
libglib2.0-0:amd64: /lib/x86_64-linux-gnu/libglib-2.0.so.0
libglib2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
libxcb1:amd64: /usr/lib/x86_64-linux-gnu/libxcb.so.1
libglapi-mesa:amd64: /usr/lib/x86_64-linux-gnu/libglapi.so.0
libxdamage1:amd64: /usr/lib/x86_64-linux-gnu/libXdamage.so.1
libxfixes3:amd64: /usr/lib/x86_64-linux-gnu/libXfixes.so.3
libx11-xcb1:amd64: /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1
libxcb-glx0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0
libxcb-dri2-0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0
libxcb-dri3-0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0
libxcb-present0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-present.so.0
libxcb-sync1:amd64: /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1
libxshmfence1:amd64: /usr/lib/x86_64-linux-gnu/libxshmfence.so.1
libxxf86vm1:amd64: /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
libdrm2:amd64: /usr/lib/x86_64-linux-gnu/libdrm.so.2
libpcre3:amd64: /lib/x86_64-linux-gnu/libpcre.so.3
libffi6:amd64: /usr/lib/x86_64-linux-gnu/libffi.so.6
libxau6:amd64: /usr/lib/x86_64-linux-gnu/libXau.so.6
libxdmcp6:amd64: /usr/lib/x86_64-linux-gnu/libXdmcp.so.6
Я не установил их, которые я получил с помощью ldd /opt/viber/Viber | grep 'not found' | awk '{printf "%s$\n", $1}' | apt-file search -x -a amd64 -f - | sed 's/\:/:amd64:/'
:
$ ldd /opt/viber/Viber | grep 'not found' | awk '{printf "%s$\n", $1}' | apt-file search -x -a amd64 -f - | sed 's/\:/:amd64:/'
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstapp-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstinterfaces-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstpbutils-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstvideo-0.10.so.0
libgstreamer0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstbase-0.10.so.0
libgstreamer0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
libsqlite3-0:amd64: /usr/lib/x86_64-linux-gnu/libsqlite3.so.0
libxcomposite1:amd64: /usr/lib/x86_64-linux-gnu/libXcomposite.so.1
libxml2:amd64: /usr/lib/x86_64-linux-gnu/libxml2.so.2
libxslt1.1:amd64: /usr/lib/x86_64-linux-gnu/libxslt.so.1
apt-file
было дразнить, чтобы дать мне 64-битные пакеты, поэтому мне пришлось сделать sudo apt-file -a amd64 update
, чтобы заставить его иметь 64-битный список файлов.
Теперь, позвольте мне объяснить, что все перечисленное:
-
ldd /path/to/binary
: читает двоичный файл и сообщает вам, какие библиотеки, символы и т. д. -
dpkg -S
: найдите, какие пакеты предоставляют определенный установленный файл. -
awk
,sed
иgrep
: изменяют текстовый поток для обработки только интересных частей или отображения желаемого результата. -
|
,$(...)
: первый позволяет мне передать вывод команды другому, а позже позволяет мне выполнить / оценить команду перед тем, как основные выполняются.
TL; dr просто устанавливает эти пакеты:
sudo dpkg --add-architecture amd64 ## adding 64-bits architecture package
sudo apt-get update
sudo apt-get install libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer0.10-0:amd64 libgstreamer0.10-0:amd64 libsqlite3-0:amd64 libxcomposite1:amd64 libxml2:amd64 libxslt1.1:amd64 libc6:amd64 libdrm2:amd64 libffi6:amd64 libgcc1:amd64 libgl1-mesa-glx:amd64 libglapi-mesa:amd64 libglib2.0-0:amd64 libpcre3:amd64 libstdc++6:amd64 libx11-6:amd64 libx11-xcb1:amd64 libxau6:amd64 libxcb1:amd64 libxcb-dri2-0:amd64 libxcb-dri3-0:amd64 libxcb-glx0:amd64 libxcb-present0:amd64 libxcb-sync1:amd64 libxdamage1:amd64 libxdmcp6:amd64 libxext6:amd64 libxfixes3:amd64 libxrender1:amd64 libxshmfence1:amd64 libxxf86vm1:amd64 zlib1g:amd64
Вам также необходимо установить 64-битное ядро.
Запустите 64-битное приложение на 32-битной системе (Ubuntu) Flip Linux
Все вопросы, которые я видел, относятся к запуску 32-битного приложения в 64-битной системе.
Я запускаю Ubuntu 12.04 32 бит (на самом деле элементарная ОС Luna, которая основана на нем), и я пытаюсь запустить 64-битное приложение, которое отказывается открывать. Бег:
(где 64bit_app.run
– это 64-битное приложение, которое я пытаюсь запустить) приводит к:
который переводится как « невозможно выполнить / запустить / открыть двоичный файл ».
Должен ли я его запустить? Возможно ли запустить 64-битное приложение в 32-битной системе? Если да, то как?
Вы не можете сделать это непосредственно в Linux на x86_64 с 32-битным ядром. Для работы 64-битного кода требуется 64-битное ядро. (Примечание: ядро. У вас может быть 32-битная пользовательская среда, работающая на 64-битном ядре, и установите поддержку для 64-битных двоичных файлов. Насколько это легко зависит от дистрибутива. Пример здесь для Debian.)
Некоторое программное обеспечение для виртуализации может это сделать (с ограничениями на тип используемого процессора), и эмуляторы тоже могут это сделать. Но для запуска изначально вам понадобится 64-битное ядро.
Поскольку у большинства 64-битных дистрибутивов есть 32-разрядная поддержка (по умолчанию или по установке), это то, что вы должны использовать, если вам нужно запускать как 64-битные, так и 32-битные двоичные файлы в одной и той же ОС.
Расширение ответа @ Mat:
Да, какое-то программное обеспечение для виртуализации может это сделать. Основным препятствием для обработки является то, что в 32-битной среде 64-битные функции процессора недоступны, а также возможности 64-битного ядра недоступны. Это даже в том случае, если ваш процессор имеет 64-битную поддержку (с 2003 года все они есть).
В вашем вопросе подразумевается, что вы хотите запустить 64-битное приложение в своей собственной системной среде. Если это действительно ваше намерение, это исключает все решения на основе виртуальных машин. Единственное, что мне известно, это эмуляция ядра qemu. Так:
qemu-x86_64 ./your_64bit_app
Он запускает ваше приложение в вашей текущей системе с вашим текущим ядром с вашими текущими переменными среды . Конечно, это не очень быстро, он должен подражать вашему процессору.
Он может эмулировать только приложения linux x86-64.
Большинство 64-разрядных архитектур являются расширениями для 32-разрядных. Они новее и совершенно разные, поэтому, очевидно, 32-битная архитектура не знает, что такое 64-разрядная копия. Они не знают, что такое новые функции, какие новые регистры существуют … Даже если они знают, у них нет доступа к новым регистрам и функциям. В результате 32-разрядное ядро не может сохранять 64-битные контексты. Все это делает невозможным запуск 64-разрядных приложений на 32-битной системе.
Тесно разработанное 64-битное 32-разрядное ядро может запускать 64-разрядные приложения, но для этого требуется 64-разрядный код для экономии контекста, что делает его не чистым 32-разрядным ядром.
Вы можете запустить 64-разрядную ОС внутри эмулятора или 64-битную гостевую виртуальную машину внутри 32-разрядного хоста с VT-x. Но технически вы работаете в другой 64-битной системе. По-прежнему невозможно запустить 64-битный код непосредственно на 32-разрядном ядре Linux
Тонкости взаимодействия 32 и 64-битных программ
Aug 18, 2006 · Comments
Wow64
Wow64 это сокращение от «Windows on Windows64». Так обозначается эмулятор 32-битного, x86-совместимого окружения, позволяющего запускать 32-битные приложения на 64-битных версиях Windows. Соответствующий раздел в MSDN (http://windowssdk.msdn.microsoft.com/en-us/library/ms775191.aspx) хорошо описывает отличия между окружением 32-битных и 64-битных приложений. Я же хотел бы рассказать о нескольких, очевидных и не очень, особенностях взаимодействия 32 и 64-битных приложений.
Wow64 перехватывает все переходы между 32-битным кодом приложения и ядром системы, что включает в себя как вызовы сервисов ядра, так и обратные вызовы 32-битного кода из ядра. Для этого 64-битные версии Windows включают в себя специальные версии 32-битных Ntdll.dll, User32.dll и Gdi32.dll, которые передают управление Wow64 вместо обычного системного вызова. В свою очередь Wow64 переключается в 64-битный режим, преобразует переданные 32-битные указатели в 64-битные и выполняет системный вызов. По окончанию вызова, Wow64 выполняет обратное преобразование возвращаемых значений. Также перехватываются исключения и обратные вызовы (callbacks). Таким образом, 32-битное приложение полностью изолируется от системы и других 64-битных приложений.Одним из следствий подобной изоляции является запрет на смешивания 32-битного и 64-битного кода в рамках одного процесса. 64-битный код может вызывать системные сервисы, минуя Wow64, что, в свою очередь, может нарушить целостность внутренних структур Wow64. С очевидными последствиями.
Наиболее неприятное следствие этого запрета – невозможность использования 32-битных in-process COM объектов 64-битными процессами. Это может стать серьезной проблемой при переносе 32-битного приложения в 64-битное окружение в случае, если исходные коды используемых in-process COM компонентов недоступны.
32-битные и 64-битные процессы по-прежнему могут использовать все существующие средства межпроцессного взаимодействия. Wow64 берет на себя все заботы по преобразованию указателей.
Как я уже писал ранее, Wow64 включает в себя файловый редиректор (file system redirector), который скрывает от 32-битных программ каталог «%windir%\System32», переправляя все запросы в «%windir%\SysWow64». В этом каталоге находятся 32-битные версии 64-разрядных компонентов из «%windir%\System32». Фактически «%windir%\SysWow64» это копия «%windir%\System32» 32-битной версии Windows.
Подобный дизайн обладает неожиданным побочным эффектом – несмотря на то, что система не накладывает ограничений на запуск 64-битных приложений из 32-битных, 32-битные приложения не имеют возможности напрямую запустить приложение установленное в «%windir%\System32». Так, например, открыв окно 32-битного «cmd.exe» нельзя так просто переключиться в 64-битный «cmd.exe». Конечно же, существует способы бороться с этой проблемой, однако все они опираются на использование специфичных для 64-битной системы механизмов, о существовании которых большинство 32-битных приложений не подозревает.
И последнее ограничение на сегодня — 64-битные версии Windows требуют, чтобы все драйвера в системе были 64-битными. На первый взгляд это не должно быть проблемой, однако это касается и драйверов принтеров, что автоматически затрагивает большинство программ PDF-генераторов. 32-битный драйвер виртуального принтера, который используется для генерации PDF, не работает на 64-битной системе. Точно также не работают старые версии эмуляторов различных устройств и некоторые программы для записи CD/DVD.
Резюме. 32-битные приложения на удивление хорошо интегрируются в 64-битную систему. Особенно если учесть, что 32 и 64-битный бинарный код не совместим даже на Amd64, не говоря уже об Itanium (IA-64). Тем не менее, обеспечение совместимости добавит (и уже добавило) головной боли разработчикам.
Ubuntu прекращает формирование пакетов для 32-разрядной архитектуры x86 — Open Source — Новости
Спустя два года с момента прекращения формирования 32-разрядных установочных образов для архитектуры x86 разработчики Ubuntu приняли решение о полном завершении жизненного цикла данной архитектуры в дистрибутиве. Начиная с осеннего выпуска Ubuntu 19.10 пакеты в репозитории для архитектуры i386 больше формироваться не будут.
Последней LTS-веткой для пользователей 32-разрядных систем x86 станет Ubuntu 18.04, поддержка которой продлится до апреля 2023 года (по платной подписке до 2028 года). Все официальные редакции проекта (Xubuntu, Kubuntu, Lubuntu и т.п.), а также производные дистрибутивы (Linux Mint, Pop_OS, Zorin и т.п.) будут лишены возможности поставки версий для 32-разрядной архитектуры x86, так как собираются из общей пакетной базы c Ubuntu (большинство редакций уже прекратили поставку установочных образов для i386).
Для обеспечения запуска существующих 32-разрядных приложений, которые невозможно пересобрать для 64-разрядных систем (например, многие игры в Steam остаются только в 32-разрядных сборках), в окружении Ubuntu 19.10 и более новых выпусках предлагается использовать отдельное окружение с Ubuntu 18.04, установленное в контейнере или chroot, или упаковать приложение в snap-пакет с runtime библиотеками core18 на базе Ubuntu 18.04.
В качестве причины прекращения поддержки архитектуры i386 упоминается невозможность сопровождения пакетов на уровне других поддерживаемых в Ubuntu архитектур из-за недостаточного уровня поддержки в ядре Linux, инструментарии и браузерах. В частности, последние наработки в области повышения безопасности и средства защиты от фундаментальных уязвимостей больше не разрабатываются своевременно для 32-разрядных систем x86 и становятся доступны только для 64-разрядной архитектуры.
Кроме того, поддержание пакетной базы для i386 требует больших ресурсов на разработку и контроль качества, которые не оправдывают себя из-за незначительной пользовательской базы, продолжающей применять устаревшее оборудование. Число систем i386 оценивается в 1% от общего числа установленных систем. Большинство ПК и ноутбуков с процессорами Intel и AMD, выпущенные за последние 10 лет, без проблем могут быть переведены на использование 64-разрядного режима. Оборудование, которое не поддерживает 64-разрядный режим, уже настолько устарело, что не обладает необходимыми вычислительными ресурсам для выполнения последних выпусков Ubuntu Desktop.
>>> Подробности
anonymous
Проверено: Shaman007
()
Судьба 32 битных Убунту.
Многие за прошедшие годы поднимали серьёзную тему. Нужно уже бросать 32 бита в современном мире и сконцентрировать силы и время на 64 битах. Но то одно, то другое и находились доводы оставить в покое 32 бита, а не отправить их на покой. Официально Canonical представила план-черновик, как и когда мы будем прощаться со старым наследием.
Вопрос очень серьёзный, так как кроме мира десктопа есть ещё сервера, образы для облачных сред и т.д. Хорошо что Убунту в этом вопросе не одна и папа Debian GNU/Linux в релизе 9 Stretch тоже будет занят этим вопросом.
Если написать 32 vs 64 и закрыть ладошкой цифру слева, то исчезнет половина. Что даст отказ? Огромная инфраструктура в виде сборочных серверов, тестирующих и проверяющих качество созданных пакетов и ISO образов. Приплюсуйте занятое место на официальных репозиториях и зеркалах.
Итак, планы таковы.
Начиная с Ubuntu 16.10 и по Ubuntu 17.10, Canonical:
- поддержит 32 битные программы в 64 битных системах (дебиан технология MultiArch)
- продолжит создавать 32 битную версию установщиков для образов десктопа и netboot
- продолжит создавать 32 битное ядро
- продолжит создавать 32 битные образы для облачных сред
- прекратит создавать 32 битные ubuntu-desktop.iso
- прекратит создавать 32 битные ubuntu-server.iso
В Ubuntu 18.04 LTS Canonical:
- поддержит 32 битные программы в 64 битных системах (дебиан технология MultiArch)
- прекратит создавать 32 битную версию установщиков для образов десктопа и netboot
- прекратит создавать 32 битное ядро
- прекратит создавать 32 битные образы для облачных сред
- прекратит создавать 32 битные ubuntu-desktop.iso
- прекратит создавать 32 битные ubuntu-server.iso
В Ubuntu 18.10 и далее Canonical:
- прекратит поддерживать 32 битные программы в 64 битных системах (дебиан технология MultiArch)
- Запуск 32 битных приложений, созданных ранее, возможно в snap пакетах, контейнерах, виртуальных машинах.
Планы хороши, но тяжело представить масштаб работ разработчиков по избавлению от 32 бит окончательно. Навскидку приходят на ум такие 32 битные программы, чьи 64 бита мы никогда и не видели толком:
- WINE. Программа, которая не эмулятор, но транслятор WinAPI функций обладает 64 битной версией, но там столько проблем, что во всех линукс дистрибутивах шла именно 32 битная версия.
- Skype. У него ужасная поддержка линукс систем и он был для нас только 32 битным.
- Steam. Платформа дистрибьюции игр.
Если у вас 64 битная система, то попробуйте сэмитировать удаление 32 битных программ sudo apt-get --simulate purge `dpkg --get-selections | grep i386 | awk '{print $1}'`
Много решило отвалиться за годы наставленного?
Лично двумя руками ЗА переход, только вот чуток страшно от того, что давно в виртуальных машинах у меня трудятся Ubuntu Server LTS в 32 битной редакции, так как 64 бита внутри виртуальной среды мне много лет назад ничего не давали. Придётся спасти конфы и переставить систему с нуля, сервер за сервером. Но это будет не скоро и время есть.
Как сами относитесь к таким планам? Есть ли у вас 32 битные версии линукс систем?
Дата последней правки: 2016-06-29 08:37:17
Можно ли запускать 64-битные приложения в 32-битной ОС?
В настоящее время очень распространены 64-битные операционные системы. Но 32-битные ОС по-прежнему присутствуют на рынке в довольно очевидных количествах. Многие современные программные инструменты разработаны для работы только в 64-битном режиме, поскольку обслуживание как 32-битных, так и 64-битных операционных систем требует дополнительных затрат.
Пользователям 32-битной ОС иногда необходимо использовать программное обеспечение, предназначенное только для 64-битной ОС. Итак, что делать пользователю, если он / она не готов прекратить использование 32-битной ОС в качестве основной рабочей? система?
В разных операционных системах есть особенности, связанные с запуском 64-битных приложений в 32-битной среде.Во-первых, при запуске 64-битных приложений в 32-битной среде вы теряете преимущество использования большего объема оперативной памяти. Кроме того, для поддержки 64-битных приложений ваш процессор должен иметь 64-битную архитектуру. Давайте посмотрим на некоторые из самых популярных ОС.
В Mac OS X ядро гибридное. Он позволяет запускать любое приложение независимо от его скорости передачи данных. Единственное отличие гибридного ядра от полноценного 64-битного — это невозможность использовать в системе более 32 ГБ ОЗУ.Так что на данный момент нет абсолютно никакой разницы между загрузкой в 32-битном и 64-битном режимах. Но в будущем эта разница станет более заметной в связи с увеличением использования оперативной памяти и дальнейшим развитием технологий.
Для семейства операционных систем Linux и 32-разрядной ОС Windows технология виртуализации используется для запуска 64-разрядных приложений в 32-разрядной среде. Существует ряд специализированных программных продуктов, которые позволяют вам установить виртуальную гостевую 64-битную ОС, в которой вы сможете установить и запустить необходимое приложение.А если операционная система не бесплатная, придется ее покупать.
Виртуализация
Виртуальная машина — это программное обеспечение, которое имитирует работу аппаратной платформы со всеми ее компонентами (процессор, память, жесткий диск, USB, оптический привод, видео и сетевые адаптеры и т. Д.). Виртуальная машина позволяет одновременно устанавливать и запускать несколько гостевых систем (ОС, работающих на виртуальных машинах) в рамках одной хост-системы (ОС, установленной на оборудовании).Список операционных систем, которые можно установить на виртуальные машины, сильно различается и зависит от конкретной системы виртуализации.
Вот несколько популярных решений:
Oracle VirtualBox — универсальная бесплатная виртуальная машина. VirtualBox — очень простой, мощный и бесплатный инструмент для виртуализации, разработанный при поддержке известной корпорации Oracle. Это бесплатное программное обеспечение с открытым исходным кодом. VirtualBox позволяет установить в качестве «гостевой» практически любую текущую операционную систему, будь то Windows, Mac OS или любой из многочисленных представителей семейства Linux.
VMware Workstation — для серьезных задач. VMware Workstation — это мощная, платная и самая надежная программа для виртуализации, которая поддерживает ОС Windows и Linux. Но эту программу нельзя использовать для виртуализации в Mac OS.
QEMU — это бесплатная программа с открытым исходным кодом, которая эмулирует различные аппаратные платформы.
Аппаратная виртуализация
Существуют определенные требования к 64-битной гостевой виртуальной машине для работы в 32-битной среде: процессор должен иметь 64-битную архитектуру и поддерживать технологии виртуализации оборудования, такие как Intel VT-x и AMD-V.Иногда их необходимо включить вручную в BIOS вашей системы.
Облачные вычисления
Все эти решения требуют от системы определенной производительности, и не всегда возможно достичь оптимальной производительности в желаемом приложении.
Развитие технологий облачных вычислений идет полным ходом. Они позволяют развертывать любую ОС на удаленных серверах и запускать оттуда приложения. При этом никаких ограничений на вашу 32-битную систему накладывать не будет, так как все вычисления производятся на удаленных машинах.Одним из таких примеров является Microsoft Azure, которую можно использовать для развертывания большого количества операционных систем и запуска различных приложений, в том числе высокопроизводительных.
Часто геймеры сталкиваются с проблемой запуска 64-битных приложений на устаревших 32-битных машинах. Для этих задач также существуют специализированные облачные решения. Например, NVIDIA GRID. GRID запускает 3D-игры на облачных серверах, мгновенно кодирует каждый кадр и передает результаты на любое устройство с проводным или беспроводным высокоскоростным подключением к Интернету.
Заключение
Итак, мы видим, что запуск 64-битных приложений на 32-битной ОС возможен, но есть определенные трудности. А поскольку некоторые решения являются платными, вам решать, какая технология лучше всего подходит для вас.
.
Как запускать 32-битные программы Windows на 64-битной Ubuntu 18.04 LTS — Linux Hint
Wine — это программное обеспечение для Linux, которое делает уровень совместимости Windows доступным для Linux. С Wine вы можете запускать большинство программ Windows в Linux. Wine — это не какой-либо эмулятор. Полная форма WINE — это W ine I s N или преобразователь E . Поскольку это не эмулятор, он не занимает много памяти для запуска приложений Windows. Приложения Windows работают так же, как и любые другие приложения Linux.
В этой статье я покажу вам, как запускать 32-битные приложения Windows в 64-битной версии Ubuntu 18.04 LTS. Давайте начнем.
Вы должны убедиться, что официальные источники программного обеспечения Ubuntu 18.04 LTS main, limited, Universe и multiverse включены.
Вы можете проверить, включены ли они, в приложении Software & Updates в Ubuntu 18.04 LTS.
Чтобы открыть Software & Updates , перейдите в меню приложений в Ubuntu 18.04 LTS и найдите его. Теперь щелкните значок, как показано на скриншоте ниже.
Убедитесь, что все элементы в отмеченном разделе на скриншоте ниже отмечены в приложении «Программное обеспечение и обновления».
Включение Multi Arch в Ubuntu 18.04 LTS:
Если у вас установлен Ubuntu 18.04 LTS, он должен быть 64-битным, поскольку в Ubuntu 18.04 LTS нет 32-битного установщика. Поэтому, если вы установите Wine без включения мультиархитектуры, оно будет запускать только 64-битное приложение Windows.
Вот почему вам необходимо включить 32-битную архитектуру в Ubuntu 18.04 LTS, чтобы установить 32-битную версию Wine.
Выполните следующую команду, чтобы добавить поддержку 32-разрядной архитектуры в Ubuntu 18.04 LTS:
$ sudo dpkg —add-architecture i386
Установка PlayOnLinux:
PlayOnLinux — это графический интерфейс Wine. Это упрощает установку, использование и управление программами Windows в Linux. С PlayOnLinux вы можете установить несколько версий Wine (как 32-разрядную, так и 64-разрядную версию) и использовать разные версии Wine для разных приложений Windows.
Каждое приложение Windows будет изолировано. Таким образом, изменение в одном приложении Windows не может повредить другие приложения Windows. Даже если в установочном файле нужного программного обеспечения есть вирусы, он не повлияет на другие приложения Windows, которые вы установили с помощью PlayOnLinux. PlayOnLinux — действительно отличное приложение для пользователей Linux.
PlayOnLinux доступен в официальном репозитории пакетов Ubuntu 18.04 LTS. Так что установить легко.
Сначала обновите кеш репозитория пакетов APT в Ubuntu 18.04 LTS-машина с помощью следующей команды:
Кэш репозитория пакетов APT должен быть обновлен.
Теперь установите PlayOnLinux в Ubuntu 18.04 LTS с помощью следующей команды:
$ sudo apt установить playonlinux
Как видно из отмеченного участка на скриншоте ниже, wine32 и wine64 будут установлены вместе с PlayOnLinux. Теперь нажмите y , а затем нажмите
PlayOnLinux должен быть установлен.
Запуск PlayOnLinux:
Теперь, когда PlayOnLinux установлен, вы можете найти его в Application Menu вашего компьютера Ubuntu 18.04 LTS. Нажмите здесь.
Должен запуститься PlayOnLinux .
Установка 32-разрядного приложения Windows в Ubuntu 18.04 LTS:
Теперь вы можете установить 32-битные и 64-битные приложения Windows на Ubuntu 18.04 LTS с PlayOnLinux и Wine . В этом разделе я покажу вам, как запустить 32-разрядное приложение Windows в Ubuntu 18.04 LTS. Процесс установки 64-битного приложения Windows такой же. Вы легко можете сделать это самостоятельно.
Я собираюсь загрузить установочный файл для 32-разрядной версии текстового редактора Notepad ++ с официального сайта Notepad ++ (https://notepad-plus-plus.org) и установить его в Ubuntu 18.04 LTS с помощью PlayOnLinux и Wine, просто чтобы показать вам, что это работает идеально.
Теперь, чтобы установить приложение Windows, щелкните Установить в главном окне PlayOnLinux , как показано на снимке экрана ниже.
Вы должны увидеть следующее окно. В PlayOnLinux есть шаблон для установки некоторых распространенных приложений Windows. Это гарантирует, что эти перечисленные приложения будут работать в PlayOnLinux. Этот шаблон определяет, какую версию Wine использовать, какие библиотеки установить в качестве зависимостей и так далее.
Если приложение, которое вы хотите установить, присутствует в списке, просто выберите его и нажмите кнопку Установить . Затем следуйте указаниям мастера.
Если приложение, которое вы хотите установить, не указано здесь, что иногда может иметь место, щелкните Установить программу, не указанную в списке , как отмечено на снимке экрана ниже.
Notepad ++ доступен в списке, но я просто хочу показать вам, как он работает, если программы, которую вы хотите установить, нет в списке.
Теперь нажмите Далее .
Щелкните Next еще раз.
Щелкните Далее .
Выберите Установите программу на новый виртуальный диск и нажмите Далее .
Введите имя вашего виртуального диска и нажмите Next . Оно должно быть уникальным для каждого приложения.
Теперь вы можете установить эти флажки, чтобы использовать другую версию Wine, если хотите, или настроить Wine, или установить библиотеки, если ваше приложение зависит от них.Notepad ++ — простое приложение. Так что я могу оставить их без внимания. По завершении нажмите Далее .
Выберите для 32-битной установки Windows при установке 32-битного приложения. Вы также можете выбрать другой для 64-битных приложений. Теперь нажмите Далее .
Создание виртуального диска займет некоторое время.
Теперь нажмите Обзор .
Выберите установочный файл, который вы используете для установки программного обеспечения в Windows.
Теперь нажмите Далее .
Теперь должна начаться установка Notepad ++. Вы бы установили его так же, как и в Windows.
После завершения установки вам необходимо создать ярлык. Выберите из списка файл, который запускает ваше приложение Windows, и щелкните Далее .
Введите имя ярлыка и нажмите Далее .
Теперь, если вы не хотите добавлять еще один ярлык, просто выберите Я не хочу создавать еще один ярлык и нажмите Далее .
Ярлык должен быть создан.
Теперь вы можете выбрать ярлык и нажать Run , как отмечено на скриншоте ниже, чтобы запустить приложение Windows.
Как видите, 32-разрядный Notepad ++ работает на Ubuntu 18.04 LTS с Wine.
Вот как вы запускаете 32-битные приложения Windows в 64-битной операционной системе Ubuntu 18.04 LTS. Спасибо, что прочитали эту статью.
.