Популярность ARM-архитектуры стремительно растёт как в мобильных устройствах, так и в области настольных систем. Несмотря на это, большинство программного обеспечения на настольных компьютерах традиционно ориентировано на платформу x86-64. В связи с этим возникает естественный вопрос: можно ли эффективно запускать x86-приложения на ARM-десктопах? В 2025 году ситуация всё ещё остаётся актуальной, и в этой статье мы подробно поговорим о современных возможностях эмуляции, её ограничениях и практическом применении на примере Fedora и эмулятора FEX-emu. Основная трудность при запуске x86-64 программ на ARM-устройствах связана с архитектурными различиями процессоров. ARM использует другую систему инструкций, и чтобы выполнить x86-приложения, необходимо либо их перекомпилировать, либо использовать механизм эмуляции, который транслирует машинные инструкции на лету.
В Fedora распространённым решением является проект FEX-emu — эмулятор, специально разработанный для высокопроизводительной трансляции x86-64 под ARM64. Этот инструмент позволяет запускать неподдерживаемые ARM приложения без необходимости их полной адаптации. Установка и базовая настройка FEX-emu достаточно проста. При установке автоматически загружается корневая файловая система Fedora под x86-64, которая необходима для полноценной работы приложений. Важно отметить, что если на вашем ARM-устройстве используется ядро с размером страниц 4K, то некоторые компоненты, описанные в документации Asahi для Fedora, например muvm или binfmt-dispatcher, могут оказаться не нужны, что упрощает настройку.
Однако, для корректной работы стоит удалить пакеты QEMU с суффиксом -static, чтобы избежать конкуренции с FEX-emu за запуск эмулируемых файлов. После установки можно проверить работоспособность эмуляции, запустив в терминале команду uname -m под окружением FEXBash — специальной обёрткой для запуска x86-64 команд. Если всё настроено корректно, команда вернёт значение «x86_64», несмотря на то, что изначальная архитектура системы ARM64. Если появляются ошибки, рекомендуется проверить содержимое каталога /usr/lib/binfmt.d/, где должны находиться только конфигурационные файлы для FEX-emu.
Избыточные или конфликтующие записи могут препятствовать правильной регистрации формата бинарников для эмуляции. Производительность эмуляции — критический параметр, с которым сталкиваются все пользователи x86-программ на ARM. Тестирование на Ampere Altra (ARM v8.2 с ядрами Neoverse N1) показало, что результаты Geekbench 6 для эмулированного процессора соответствуют уровню Intel Atom 2021 года, с результатами около 459 баллов для одного ядра и 4110 для многоядерного режима. Это существенно уступает современным AMD Ryzen и Intel Core, что отражает неизбежные накладные расходы при трансляции инструкций x86.
Одним из факторов ограничения производительности является поддержка ARM CPU только части современных расширенных функций, важных для ускорения эмуляции. Например, Ampere Altra поддерживает лишь криптографические инструкции AES, CRC, SHA и PMULL, а также наборы Atomic operations LSE и TSO. Более новые расширения, такие как SVE или FCMA, отсутствуют, что снижает возможности оптимизации. Разработчики FEX-emu активно работают над улучшением производительности и советуют некоторые пользовательские настройки для повышения скорости работы. Среди них снижение точности вычислений x87 FPU и отключение TSO.
В файле конфигурации FEX-emu это отражается как параметры X87ReducedPrecision = 1 и TSOEnabled = 0 соответственно. Эти изменения уже дают заметный прирост на примере игры Factorio, которая без оптимизации была фактически непригодна для игры при высоком разрешении. Геймерская составляющая занимает важное место в опыте использования x86-эмуляции. В частности, запуск Steam и игр через FEX-emu позволяет протестировать возможности платформы под ARM. Steam можно установить с неофициального RPM-пакета, игнорируя зависимости и архитектуру с помощью специальных параметров rpm при установке.
Запуск клиента через FEXBash позволяет открыть окно Steam и завести логин, после чего можно пытаться запускать игры. Опыт показывает, что без настройки эмуляции на высоких разрешениях текущая производительность неудовлетворительна для современных игр, однако при оптимизациях некоторые старые игры становятся приемлемыми. Примером является Factorio, известная своей требовательностью к процессору. Без изменений конфигурации игра работала на 8-11 FPS в высоком разрешении, что неудобно для геймплея. После настройки параметров FEX-emu FPS повысился до 16-25 со всплесками до 60 на менее загруженных участках карты.
Несмотря на некоторую нестабильность из-за сложности эмуляции, такой результат может быть достаточным для любителей и экспериментов с платформой. Однако работа с инструментами разработки и сборочными системами на эмулируемых x86-бинарях выявила ограничения производительности. Например, сборка прошивки на Ampere Altra под эмуляцией x86 через Ninja (сборочная система) была медленной, что было обусловлено непосредственным запуском x86-интерпретируемых бинари. Замена бинарника Ninja на аутентичный ARM64 исполняемый файл позволила значительно ускорить сборку. Такой пример подчёркивает важность нативных ARM решений для повышения продуктивности.
Подводя итог, стоит ли использовать эмуляцию x86 на ARM-десктопах в 2025 году? Для повседневных задач и запуска критического софта на ARM-устройствах в большинстве случаев рациональнее искать нативные версии или альтернативы. Эмуляция через FEX-emu остаётся полезным инструментом для запуска специфичных программ, несовместимых с ARM, или экспериментов с играми и софтом в условиях ограниченного выбора. С каждым годом производительность эмуляторов растёт, а поддержка новейших ARM-возможностей будет расширяться, что постепенно улучшит впечатления от использования. Тем не менее, при существующих ограничениях и всплесках нагрузки эмуляция x86 на ARM по-прежнему уступает нативной архитектуре, особенно в ресурсоёмких задачах. Поэтому для пользователей, заинтересованных в оптимальной производительности и стабильности, ARM-десктопы лучше рассматриваются как самостоятельная платформа со своей экосистемой программного обеспечения, а не в качестве замены x86 через эмуляцию.
В заключение, 2025 год — время больших перспектив для ARM в сфере настольных систем, где технологии эмуляции играют важную роль в преодолении несовместимости, но не заменяют полностью необходимость развития нативного ПО. С развитием аппаратных возможностей ARM и программных эмуляторов мы можем ожидать, что запуск x86 приложений станет быстрее, стабильнее и доступнее, что откроет новую страницу в использовании архитектурных альтернатив для пользователей и разработчиков.