Мой блог
Поддержка ARM64 в Bottles: запуск Windows-приложений на Linux-устройствах с процессорами ARM
Запуск программного обеспечения, разработанного исключительно для операционной системы Windows, долгое время оставался специфической задачей в мире Linux. Инструмент Bottles (в русскоязычном сообществе часто называемый «Бутылки») завоевал популярность именно благодаря тому, что скрыл громоздкие конфигурационные файлы и технические тонкости Wine за интуитивным и современным графическим интерфейсом. Я неоднократно обращался к этому инструменту в своей работе, поскольку он позволяет быстро создавать изолированные окружения — «бутылки» — под конкретные программы или игры.
Функционал проекта регулярно расширяется. Внутри каждой такой изолированной среды пользователь может буквально в один клик подтягивать необходимые системные библиотеки Windows, включая runtime-компоненты Microsoft .NET Framework или распространяемые пакеты Visual C++. Платформа дает возможность свободно переключаться между несколькими версиями трансляторов Wine и Proton в рамках одного профиля. Важным дополнением стала поддержка слоя UMU (Unified Launcher), которая открыла доступ к запуску игр с использованием Proton за пределами клиента Steam. А встроенный механизм снимков состояния (snapshots) позволяет создавать точки отката перед установкой сторонних патчей или изменением реестра, спасая от необходимости перенастраивать окружение с нуля.
В свежем выпуске разработчики решили выйти за рамки привычной архитектуры x86_64. Тестовый релиз Bottles 67.4 принес экспериментальную поддержку платформ ARM64 в Linux. Распространяется эта версия через новый контейнерный формат пакетов cpak. Процесс внедрения ARM64 был разделен на два связанных выпуска: сначала вышла версия 67.3 с первичной сборкой cpak для ARM, а спустя всего пару часов последовало обновление 67.4, устранившее найденные недоработки и привнесшее свежий раннер Soda 11.0-10.

Ключевые возможности и особенности работы на ARM64
На системах с архитектурой ARM64 инструмент cpak теперь автоматически определяет платформу и подгружает соответствующий бинарный файл. Сам транслятор Soda, выступающий в роли специализированного раннера Wine от команды Bottles, получил полноценную нативную поддержку архитектур ARM64 и ARM64EC. Для запуска классических 32-битных (x86) и 64-битных (x86_64) приложений Windows на процессорах ARM в состав сборки был включен эмулятор FEX.

Сочетание нативной поддержки ARM64EC и транслятора FEX превращает Bottles в реально работающий инструмент для современной техники на базе ARM-процессоров. Это одинаково актуально как для компактных одноплатных компьютеров (SBC), так и для полноценных ноутбуков с ARM-чипами под управлением Linux.
Отдельно отмечу невероятную скорость, с которой разработчики реализовали этот запрос. Публичное обращение с просьбой добавить сборки под ARM64 (AArch64) появилось в репозитории проекта всего за неделю до релиза. Уже через три дня команда подготовила тестовый кандидат, а пользователь под ником TCB13 подтвердил успешный запуск Bottles на своем ARM64-оборудовании. После этого задача была официально закрыта, а итоговые релизы с тегами вышли 7 сентября.
Многих участников сообщества заинтересовало, почему для первого тестирования был выбран именно cpak. Как пояснил Мирко Бромбин (Mirko Brombin) из команды разработки Bottles, cpak оказался первой упаковочной инфраструктурой, где удалось одновременно объединить само приложение, базовые компоненты Wine и нативный конвейер непрерывной интеграции (CI) для архитектуры ARM.
Второй важнейшей составляющей данного обновления стало появление раннера Soda 11.0-10, содержащего ряд критических исправлений. В первую очередь пользователи заметят решение проблемы с вылетом игрового клиента Battle.net при старте. Причина сбоя крополась в подсистеме XInput, которая пыталась инициализироваться при отсутствии идентификатора игры Steam (Steam game ID).
Для любителей и специалистов по виртуальной реальности (VR) в Soda 11.0-10 заготовлена еще одна функция: 64-битные приложения Windows OpenXR теперь способны напрямую связываться с хостовой средой выполнения, такой как Monado или WiVRn. Больше нет необходимости удерживать запущенными клиент Steam или подсистему SteamVR для трансляции VR-нагрузок.
Инструкция по установке и технические нюансы cpak
На текущий момент экспериментальная сборка Bottles под ARM64 поставляется исключительно в формате cpak — OCI-совместимом формате пакетов, развиваемом в рамках проекта Containerpak. Разработчики уже ведут параллельную работу над созданием официальной сборки Flatpak для ARM64, но она станет доступна чуть позже.
Для тестирования Bottles на вашем ARM64-устройстве под управлением Linux достаточно выполнить в терминале следующую команду:
cpak install github.com/bottlesdevs/bottles
Если вы ранее не сталкивались с cpak, стоит пояснить архитектурную суть этого формата. Cpak рассматривает приложения как контейнерные OCI-образы. Каждый такой пакет сопровождается компактным манифестом, в котором четко прописаны права доступа приложения к системе и его зависимости.
Главное отличие cpak от привычного Flatpak заключается в отказе от использования громоздких общих рантаймов и порталов (portals). Исполняемая среда cpak монтирует OCI-образ напрямую в систему, манифест определяет границы песочницы и доступные ресурсы, а сами пакеты устанавливаются напрямую из репозитория Git, без привязки к единому централизованному каталогу или магазину приложений.
Источник: itsfoss.com
