Компания Collabora, работающая с Valve над открытым стеком, анонсировала предварительную версию SteamOS Holo Core – порта Arch Linux на архитектуру aarch64 для VR-гарнитуры Steam Frame.
SteamOS построена на срезе Arch Linux с набором собственных патчей Valve, и заставить всё это работать на ARM оказалось непросто: официально Arch Linux архитектуру aarch64 не поддерживает. Теперь Collabora опубликовала первые результаты – собранные пакеты, их исходные тексты и контейнеры для разработки. Экспериментировать с Arch Linux на aarch64 может любой желающий:
- Исходные тексты:
gitlab.steamos.cloud/holo/holo-core-aarch64-preview - Собранные пакеты:
holo-packages.steamos.cloud/holo-core-aarch64-preview/mash-20251118 - Контейнер Docker:
registry.gitlab.steamos.cloud/holo/holo-core-aarch64-preview/base-devel
Из блога Collabora:
На данном этапе мы не пересобирали весь мир (все пакеты, доступные в репозиториях Arch Linux). Наша первоначальная цель – предоставить набор пакетов, необходимый для разработки и создания образов для Steam Frame. Даже с таким ограничением, с учётом зависимостей времени выполнения и сборки, счёт всё равно идёт на несколько тысяч пакетов.
Идея этого порта гораздо сложнее, чем простая перекомпиляция и установка избранных пакетов для архитектуры aarch64. Мы пытаемся решить две главные задачи:
- Собирать двоичные файлы из свежих версий пакетов Arch для чужой архитектуры.
- Создать CI-систему, способную собирать двоичные файлы для дистрибутива, у которого пока нет собственной CI-инфраструктуры. Поскольку Arch Linux – дистрибутив с моделью rolling release, эта CI-система должна определять правильные зависимости по мере обновления дистрибутива.
В записи блога подробно разобраны и другие трудности: восстановление корректного порядка сборки, невозможность перескакивать промежуточные версии пакетов (для пересборки rust 1.91 нужен 1.90, для него – 1.89 и так далее), смена SONAME у библиотек, от которых зависит сам pacman, и даже защита upstream-сервисов от ботов и AI-краулеров, мешающая CI скачивать исходники. Инструментарий и CI Collabora пока не опубликовала, но рассчитывает передать наработки в upstream-проект Arch Linux – на пользу всему сообществу открытого кода.
Как собрать пакет aarch64 в предварительной версии
Даже в текущем состоянии порт достаточно зрелый для экспериментов. На хосте aarch64 никакая особая настройка не нужна. Для запуска aarch64-контейнера на x86_64 потребуется эмулятор пользовательского пространства QEMU и конфигурация binfmt – через этот механизм будет запускаться каждая программа внутри контейнера:
sudo pacman -S --noconfirm qemu-user-static qemu-user-static-binfmt
Отдельный нюанс – sudo. Стандартная конфигурация /usr/lib/binfmt.d/qemu-aarch64-static.conf в Arch Linux использует флаги :FP, что блокирует выполнение sudo и других SUID-программ через qemu-aarch64-static и мешает makepkg автоматически ставить сборочные зависимости. Решение – скопировать конфигурацию в /etc/binfmt.d/, добавить флаг C (credentials) и перезапустить systemd-binfmt.service:
sudo cp /usr/lib/binfmt.d/qemu-aarch64-static.conf /etc/binfmt.d/qemu-aarch64-static.conf
sudo sed -i -e "s/:FP$/:FCP/" /etc/binfmt.d/qemu-aarch64-static.conf
sudo systemctl restart systemd-binfmt.service
Collabora предупреждает: такая настройка включает выполнение SUID-программ aarch64 глобально на всём хосте.
Образ base-devel работает с Docker и Podman; в примере для упрощения используется distrobox:
sudo pacman -S --noconfirm distrobox
distrobox create \
--platform linux/arm64 \
--image registry.gitlab.steamos.cloud/holo/holo-core-aarch64-preview/base-devel:latest \
--name builder
Перед созданием контейнера стоит проверить соответствия UID/GID для rootless-режима (grep "$USER" /etc/subuid /etc/subgid) и при необходимости добавить их через usermod. После входа командой distrobox enter builder убедиться в работоспособности можно по /etc/os-release: имя системы – Holo core Aarch64 port (preview), идентификатор – holo-core, версия – mash-20251118.1.
Сборка пакета – клонирование репозитория и запуск makepkg внутри контейнера:
git clone https://gitlab.steamos.cloud/holo/holo-core-aarch64-preview
cd holo-core-aarch64-preview/core-aarch64/c/coreutils/9.9-1
distrobox enter builder -- gpg --import keys/pgp/*.asc
distrobox enter builder -- makepkg --cleanbuild --noconfirm --syncdeps
Процесс небыстрый: на хосте x86_64 каждая программа aarch64 выполняется через эмуляцию. На выходе – готовый пакет для архитектуры aarch64.
Совсем недавно крупное обновление получил интерфейс SteamVR – явно в рамках подготовки к Steam Frame. Всё постепенно складывается в единую картину вокруг нового устройства Valve, хотя дату выхода и цену гарнитуры компания так и не объявила.
