Запуск программ, собранных для архитектуры x86, на Linux-системах с ARM-процессорами
Представляю вашему вниманию Box86 и Box 64
Box86 и Box 64 — это бинарные трансляторы и эмуляторы Linux x86 Userspace для процессоров на архитектуре ARM.
Box 86 позволяет запускать программы x86 Linux (например, игры) на системах Linux, отличных от x86, таких как ARM.
Поскольку Box 86 работает путем прямой трансляции вызовов функций из x86 в хост-систему, хост-система (та, на которой работает Box86) должна иметь 32-разрядные библиотеки. Box86 не включает в себя какой-либо 32-разрядный <-> 64-разрядный транслятор. Однако для запуска 64 битных программ рекомендуется использовать сестринский проект Box 64. В принципе, чтобы запустить Box86, например, на платформе ARM64, вам нужно будет создать Box86 для 32-разрядной версии ARM, а также иметь chroot с 32-разрядными библиотеками.
Box86 и Box64 очень просты в использовании
Установка в систему с использованием интеграции systemd-binfmt позволяет системе автоматически использовать box86/box64 при запуске двоичного файла i386/x86_64. Но это не обязательно. Если systemd не установлен (или если systemd-binfmt недоступен), box все равно можно использовать. Например, после сборки (эта часть описана в COMPILE.md doc из каждого репозитория) на Pandora (там нет systemd), к примеру world of goo можно запустить следующим образом:
box86 ./WorldOfGoo.bin32
Для использования Windows-программ вам понадобится версия wine i386 или x86_64. Проще всего использовать уже собранный двоичный файл. Некоторые можно найти из них в сборке PlayOnLinux или в любом другом удобном для вас месте. Раздобыв tgz с двоичными файлами, извлеките его в свою домашнюю папку (например, ~ / wine), а затем создайте несколько симлинков для его запуска с помощью
sudo ln -s ~/wine/bin/wine /usr/local/bin/wine
sudo ln -s ~/wine/bin/wineserver /usr/local/bin/wineserver
sudo ln -s ~/wine/bine/wineboot /usr/local/bin/wineboot
Если у вас 64 битная сборка, вам также необходимо добавить
sudo ln -s ~/wine/bin/wine64 /usr/local/bin/wine64
Вы также можете установить winetricks, просто следуйте инструкции на его странице GitHub, и он должен работать «из коробки» с последними версиями box86 и box64.
Теперь просто запустите свои игры для Windows с помощью wine, как если бы вы были на ПК с x86…
Большинству игр x86 требуется OpenGL, поэтому на платформах ARM обычно требуется такое решение, как gl4es. (Большинство платформ ARM поддерживают только OpenGL ES и / или их реализация OpenGL сомнительна (см. OpenGL на Android).)
Поддержка DynaRec
Box 86 теперь интегрирует DynaRec (динамический перекомпилятор) для платформы ARM, обеспечивая увеличение скорости в 5-10 раз по сравнению с использованием только интерпретатора. Некоторую информацию о том, как работает Dynarec, можно найти здесь.
Немного про Vulkan
Box86 поставляется вместе с врапером для Vulkan. Если в вашей системе установлен 32-битный драйвер Vulkan, box86 будет использовать его при необходимости. Однако врапер сильно не тестировался из-за ограниченной поддержки Vulkan на оборудовании, которым автор владет в настоящее время. Профили 1.0 и 1.1, с некоторыми расширениями, должны работать. Однако 1.2 может работать нестабильно.
Обратите внимание, что драйвер Vulkan для Pi4 ПОКА НЕ поддерживает dxvk (wine DirectX->Vulkan wrapper). Это не проблема box86, в нем отсутствуют расширения (аппаратная поддержка) и несколько других вещей, из-за которых dxvk не работает на pi4. Что касается Panfrost, PanVK немного сыроват, и автор еще не тестировал dxvk с ним.
Что касается Box64, то он включает в себя библиотеки Vulkan, но обратите внимание, что он был протестирован только с картой RX550, некоторые расширения могут отсутствовать в зависимости от вашей видеокарты. Пример такого теста на вполне конкретных играх будет приведен ниже.
Производительность и бенчмарки
Как мы видим производительность по сравнению с QEMU в десятки раз выше! Ну и чисто ради любопытства сравним с коммерческим аналогом.
Box64 vs Rosetta2 (бенчмарк на основе 7z)
macOS Natif | macOS Rosetta2 | linux Natif | linux Box64 |
---|---|---|---|
47239 | 33746 | 43271 | 24746 |
Вполне себе сносная производительность для проекта написанного любителями!
Ну и вишенка на торте это запуск всеми любимых игр на D2000 ARM Mini-PC.
В ролике засветились Flatout1, Flatout2, HALO, HalfLife 2, Portal 2, Colin McRae Rally и другие, вполне играбельные, даже в наше время, тайтлы. Как установить Steam и Proton можно почитать в описании проектов.
Вот несколько тестов уже с RPI4 со Steam и Proton
От себя добавлю
Я очень люблю игры, особенно когда они запущенны на linux. А особый восторг у меня вызывает когда эти игры вообще запущены на том железе, под которое они изначально не писались и даже не задумывались работать. Поэтому в качестве примера приведу запуск HALF-LIFE 2 и пару-тройку других игр на различных одноплатных ARM компьютерах.
Примечание: HALF-LIFE 2 сама по себе не является бенчмарком, но учитывая мощности чипов, встроенных графических ускорителей, трансляции в неродную архитектуру, и так далее, это все таки показатель быстродействия box86-64. Можно считать что это техническое демо.
HALF-LIFE 2 на ROCK PI 4C выглядит вполне себе здраво учитывая что это компьютер размером с кредитную карточку.
HALF-LIFE 2 даже умудрились запустить на PinePhone Pro!
Celeste показала себя неплохо и выдавала, хоть и не всегда стабильный, но довольно высокий FPS.
Что уж говорить про SHOVEL KNIGHT запущенном на забавном сетапе из Raspbery Pi 4, миниатюрного башенного куллера с RGB подсветкой (!), m2 nvme диском и игровой клавиатурой! Ну разве это не милота в чистом виде? 😍
А если еще к примеру поставить retroarch, то Raspberry Pi 4 вполне сможет скрасить вечерок-другой в компании друзей. Благо мощности чипа вполне хватает чтобы эмулировать ретроконсоли.
HUNTDOWN тоже себя неплохо показал как на RPI4 (30 fps) так и на более мощном ROCKPRO64, с настоящей нестареющей классикой RK3399 на борту, держащей стабильные 60 кадров в секунду.
Cuphead запущенный на PINEBOOK pro показывает вообще какие-то чудеса акробатики в плане FPS. Так что не ретро-играми едиными!
Отвечая на вопрос: Есть ли жизнь на ARM-e?
Да! Определенно! Она довольно обширна и прям таки кипит! Лично мне это чем-то напоминает начало эры игр на десктопном linux. Пока что мало что работает, драйверов нет, игры выдают нестабильный FPS, но жизнь зародилась и бьет ключом! А с приходом таких проектов как box86 и box64 она станет еще ярче и красочнее.
Оставлю также ссылки на оригинальные статьи, чтобы вы тоже могли почитать и составить свое мнение:
https://box86.org/2021/06/game-performances
https://box86.org/2022/03/box86-box64-vs-qemu-vs-fex-vs-rosetta2
https://box86.org/2022/02/box86-box64-are-easy-to-use
https://box86.org/2021/05/arm-gaming
Всем хороших игр и стабильных FPS!