Как это сделано
На этой странице делается попытка документировать, как собирается Fedora Asahi Remix. Полезная информация, которую стоит прочитать перед этим:
-
наша страница Отличия, документирующая, где Remix отличается от Fedora Linux и почему
-
Введение в Apple Silicon, в котором рассматриваются некоторые особенности этой платформы
-
Экосистема открытых ОС на Mac с Apple Silicon, в котором объясняется процесс загрузки и то, как устроена ОС
В этом документе компоненты, размещенные за пределами инфраструктуры Fedora, будут отмечены значком ⚠️.
Пакеты
Fedora Asahi SIG поддерживает ряд пакетов, необходимых для включения, интеграции и реализации платформы. Как можно больше из них поддерживается в самой Fedora в группе asahi-sig FAS. Это не вариант для некоторые пакеты ⚠️, и они поддерживаются в copr вместо этого в группе @asahi.
Установка
Fedora Asahi Remix устанавливается с помощью asahi-installer, который запускается из macOS и проводит пользователя через процесс установки. Установка включает изменение размеров разделов, установку урезанной автономной копии macOS и размещение образа Remix на диске; затем система перезагружается в recoveryOS, где второй этап установщика вступает в действие и помогает пользователю настроить параметры безопасности для автономной macOS и заменить её ядро на встроенный m1n1 (который поставляется в пакете m1n1-stage1), который позже будет выступать в качестве загрузчика первого этапа для установленной системы.
Установщик поставляется в пакете asahi-installer-package; его процесс сборки основан на двух предварительно собранных двоичных артефактах macOS (Python и libffi), которые получили исключение FESCo из правила о предварительно собранных бинарных файлах. Исходный пакет asahi-installer также предоставляет python3-asahi_firmware, который используется asahi-scripts для управления прошивкой в пользовательском пространстве.
Процесс загрузки ⚠️
После установки система по умолчанию загружается в Linux. Процесс загрузки начинается с m1n1; его этап 1, который был размещён установщиком, отвечает за поиск и выполнение этапа 2 из раздела EFI. Основное различие между этапом 1 и этапом 2 заключается в том, что первый обновляется редко (так как для этого требуется повторно запустить установщик и пройти recoveryOS), в то время как второй распространяется Fedora в бинарном пакете m1n1 и обновляется вместе с дистрибутивом (через update-m1n1 в asahi-scripts).
Как только инициализация платформы будет завершена, m1n1 найдет u-boot ⚠️ и передаст ему управление. U-Boot действует как загрузчик третьего этапа, выполняя дополнительную инициализацию платформы и обеспечивая минимальную среду предварительной загрузки. По умолчанию U-Boot настроен на предоставление эмулируемой среды UEFI, которая используется для загрузки GRUB. С этого момента процесс загрузки является стандартным для Fedora Linux.
Прошивка
Для работы компьютеров Apple Silicon требуется большое количество бинарных прошивок. Сбор прошивок реализован в asahi-installer. Затем прошивка загружается по мере необходимости в initramfs через dracut-asahi, который является частью asahi-scripts. Также предоставляется пакет asahi-fwupdate (также из asahi-scripts) для применения обновлений прошивки на стороне Linux в случае появления новой прошивки.
Проект Asahi Linux содержит подробную документацию процесса подготовки прошивки, который предназначен для стандартизации между дистрибутивами.
Драйверы ядра и пользовательского пространства ⚠️
Пакет ядра ⚠️ для Fedora Asahi Remix поддерживается как форк kernel-ark, включающий патчи из восходящего дерева Asahi Linux. Asahi Linux также ведёт подробный трекер статуса продвижения каждого компонента в основное ядро.
Драйвер графического процессора также имеет аналог в пользовательском пространстве драйвер asahi в mesa ⚠️. Это тесно связано с драйвером AGX в ядре.
Аудио
У машин на Apple Silicon сложная настройка динамиков, требующая защиты динамиков для безопасности и специальной цепочки DSP для хорошего звучания. Это реализовано пакетом asahi-audio, который использует rust-bankstown-lv2 для улучшения басов, rust-speakersafetyd для защиты динамиков и rust-triforce-lv2 для поддержки микрофонов, а также alsa-ucm-asahi и rust-alsa. PipeWire и WirePlumber также были доработаны для создания правильных виртуальных аудиоустройств и представления их пользователю в понятном виде.
Сенсорный бар
Некоторые Apple Silicon Macbooks имеют Touch Bar вместо первого ряда клавиатуры. В Linux это представлено как обычный (хотя и нестандартного размера) дисплей, и им можно управлять как таковым. Чтобы сделать его полезным, rust-tiny-dfr отображает на нем набор функциональных клавиш, имитируя то, что было бы доступно на физической клавиатуре.
Воспроизведение мультимедиа и кодеки
Fedora Asahi Remix поставляется со встроенной поддержкой контента в кодировке H.264. Это реализовано путём загрузки RPM-пакетов через asahi-installer и их размещения в разделе EFI; затем модуль systemd из fedora-asahi-remix-scripts устанавливает их при первой загрузке.
Мы также предоставляем widevine-installer для автоматического включения воспроизведения Widevine путем загрузки и извлечения необходимых битов из образа ChromeOS.
NVram и загрузочная запись по умолчанию
Системы Apple Silicon хранят некоторые низкоуровневые настройки конфигурации системы в NVram. Мы предоставляем набор пакетов для взаимодействия с этим, но они не устанавливаются по умолчанию, поскольку в настоящее время не существует безопасного способа обеспечить использование одного записывающего устройства (одновременные записи могут быть нерегулярными и привести к повреждению).
Запись загрузки по умолчанию можно изменить с помощью rust-asahi-bless (CLI-утилита) или rust-startup-disk (GUI). Также предоставляются две экспериментальные утилиты для синхронизации настроек Bluetooth (rust-asahi-btsync) и Wi-Fi (rust-wifisync) между macOS и Linux. Все эти инструменты реализованы на основе rust-apple-nvram и rust-asahi-nvram.
Эмуляция
Мы предоставляем полный стек эмуляции, который позволяет запускать приложения x86/x86-64, включая Steam. Начиная с Fedora Linux 42, часть этого функционала была интегрирована в основную Fedora Linux. В рамках этой работы мы также включаем rust-binfmt-dispatcher, который предоставляет простой диспетчер для binfmt_misc, динамически выбирающий наилучший интерпретатор во время выполнения и предлагающий пользователю установить необходимые зависимости.
Интеграция экосистемы Apple
Мы поддерживаем пакеты стека libimobiledevice, который реализует протоколы и инструменты для связи с устройствами Apple. В частности, сюда входит idevicerestore, который можно использовать для перевода ноутбука на Apple Silicon в режим DFU с другой системы Linux (вместо необходимости использовать другой Mac с Apple Configurator 2). Другие компоненты этого стека: libimobiledevice, libimobiledevice-glue, libtatsu, libplist, libusbmuxd и usbmuxd.
Внутренние механизмы, специфичные для Remix ⚠️
Мы поддерживаем ряд пакетов, которые специфичны для реализации Remix:
-
asahi-platform-metapackage(источник, https://copr.fedorainfracloud.org/coprs/g/asahi/fedora-remix-scripts/ [copr]) предоставляет метапакет, который объявляет все другие зависимости пакетов платформы Asahi -
asahi-repos(источник, copr) предоставляет определения репозитория Yum для наших пакетов, предоставленных corp(ом) -
calamares-firstboot-configs(исходный код, copr) предоставляет конфигурацию Calamares, используемую для установщика при первой загрузке в версии KDE -
fedora-asahi-remix-appstream-metadata(источник, copr) предоставляет метаданные AppStream, специфичные для Remix, которые необходимы для поддержки обновлений между основными выпусками через PackageKit -
Пакет
fedora-asahi-remix-release(исходный код, copr) предоставляет брендинг дистрибутива для Remix; Fedora Asahi Remix имеет одобрение товарного знака от Совета Fedora на использование текущего названия и брендинга (включая использование логотипа Fedora) -
fedora-asahi-remix-scripts(источник, https://copr.fedorainfracloud.org/coprs/g/asahi/fedora- remix-scripts/[copr]) предоставляет различные служебные сценарии и сервисы systemd, используемые в Remix
Инфраструктура
Установочные образы ⚠️
Установочные образы Fedora Asahi Remix создаются с использованием Kiwi из нашего описаний Kiwi и находятся за пределами инфраструктуры Fedora.
Мы используем экземпляры AWS EC2 для сборки и загрузки их в AWS S3, запускаемые AWS Lambda (выполняется ежедневно). Мы используем другой Lambda для создания манифеста для этих ежедневных сборок, которые используются установщиком Asahi.
Мы размещаем наш веб-сайт на AWS S3 с использованием AWS Cloudfront; мы используем ещё один Lambda для обработки инвалидации CDN. Сайт автоматически развёртывается из репозитория GitLab; здесь же находится вручную поддерживаемый манифест установщика для релизных образов (в отличие от ежедневных сборок). Lambdas также автоматически развёртываются через Gitlab Pipelines с использованием AWS Chalice.
Документация
Наш сайт документации генерируется с помощью Antora из репозитория и интегрирован в веб-сайт документации Fedora.
Проект и отслеживание ошибок
Мы поддерживаем трекер планирования проекта и трекер ошибок.
Want to help? Learn how to contribute to Fedora Docs ›