Как это сделано
На этой странице делается попытка документировать, как собирается Fedora Asahi Remix. Полезная информация, которую стоит прочитать перед этим:
-
наша страница Отличия, документирующая, где Remix отличается от Fedora Linux и почему
-
https://github.com/AsahiLinux/docs/wiki/Introduction-to-Apple-Silicon [Введение в Apple Silicon], в котором рассматриваются некоторые особенности этой платформы
-
https://github.com/AsahiLinux/docs/wiki/Open-OS-Ecosystem-on-Apple-Silicon-Macs [Откртыая экосистема ОС на Apple Silicon], где объясняется процесс загрузки и структура ОС
В этом документе компоненты, размещенные за пределами инфраструктуры Fedora, будут отмечены значком ⚠️.
Пакеты
Fedora Asahi SIG поддерживает ряд пакетов, необходимых для включения, интеграции и реализации платформы. Как можно больше из них поддерживается в самой Fedora в группе asahi-sig
FAS. Это не вариант для некоторые пакеты ⚠️, и они поддерживаются в copr вместо этого в группе @asahi
.
Установка
Fedora Asahi Remix устанавливается с помощью установщика asahi
, который запускается из macOS и помогает пользователю пройти процесс установки. Установка предполагает изменение размеров разделов, установку урезанной автономной копии macOS и размещение образа Remix на диске; затем система перезагружается в RecoveryOS, где второй этап установщика берет на себя управление и помогает пользователю настроить параметры безопасности для автономной macOS и заменить ее ядро на встроенное m1n1 (которое входит в пакет m1n1-stage1), который позже будет выступать в качестве загрузчика первого этапа для установленной системы.
Установщик поставляется в пакете asahi-installer-package
; его процесс сборки основан на двух предварительно созданных двоичных артефактах macOS (Python и libffi), которые получили исключение FESCo для предварительно созданной политики. Исходный пакет установщика asahi
также предоставляет python3-asahi_firmware
, который используется в скриптах asahi
для управления прошивкой в пользовательском пространстве.
Процесс загрузки ⚠️
После установки система по умолчанию загружается в Linux. Процесс загрузки начинается с m1n1
; это 1 этап, который был помещен установщиком, отвечает за поиск и выполнение этапа 2 из раздела EFI. Основное различие между этапом 1 и этапом 2 состоит в том, что первый обновляется редко (поскольку этот процесс требует повторного запуска установщика и прохождения RecoveryOS), а второй распространяется Fedora в бинарном пакете m1n1
и обновляется вместе с дистрибутив (через update-m1n1
в скриптах asahi
).
Как только инициализация платформы будет завершена, m1n1
найдет u-boot
⚠️ и передаст ему управление. U-Boot действует как загрузчик третьего этапа, выполняя дополнительную инициализацию платформы и обеспечивая минимальную среду предварительной загрузки. По умолчанию U-Boot настроен на предоставление эмулируемой среды UEFI, которая используется для загрузки GRUB. С этого момента процесс загрузки является стандартным для Fedora Linux.
Прошивка
Для работы компьютеров Apple Silicon требуется большое количество встроенных программ. Сбор прошивок реализован в установщик asahi
. Затем прошивка загружается по мере необходимости в initramfs через dracut-asahi
, который является частью скрипты asahi
. Также предоставляется пакет asahi-fwupdate (также с скрипты asahi
) для применения обновлений прошивки на стороне Linux в случае появления новой прошивки.
В проекте Asahi Linux есть подробная документация процесса подготовки прошивки, который предназначен для стандартизации между дистрибутивами.
Драйверы ядра и пользовательского пространства ⚠️
пакет ядра ⚠️ для Fedora Asahi Remix поддерживается как ветвь kernel- ark, включая патчи из исходного дерева Asahi Linux. Asahi Linux также поддерживает https://github.com/AsahiLinux/docs/wiki/Feature-Support [подробное отслеживание] статуса восходящей передачи для каждого компонента.
Драйвер графического процессора также имеет аналог в пользовательском пространстве драйвер asahi в mesa ⚠️. Это тесно связано с драйвером AGX в ядре.
Аудио
Машины Apple Silicon имеют сложную настройку динамиков, которая требует защиты динамиков для обеспечения безопасности и специальной цепи DSP для хорошего звучания. Это реализовано asahi-audio
, который использует rust- bankstown-lv2
для улучшения басов и rust-speakersafetyd
для защиты динамиков, а также https://src.fedoraproject.org/rpms/alsa- ucm-asahi[alsa-ucm-asahi
] и rust-alsa
. PipeWire и WirePlumber также были усовершенствованы для создания правильных виртуальных аудиоустройств и представления их пользователю в понятной форме.
Сенсорный бар
Некоторые Apple Silicon Macbooks имеют Touch Bar вместо первого ряда клавиатуры. В Linux это представлено как обычный (хотя и нестандартного размера) дисплей, и им можно управлять как таковым. Чтобы сделать его полезным, rust-tiny-dfr
отображает на нем набор функциональных клавиш, имитируя то, что было бы доступно на физической клавиатуре.
Воспроизведение мультимедиа и кодеки
Fedora Asahi Remix поставляется со встроенной поддержкой контента в кодировке H.264. Это реализуется путем установщик asahi
загрузки RPM-пакетов и помещения их в раздел EFI; модуль systemd в скрипты fedora-asahi-remix
затем устанавливает их при первой загрузке.
Мы также предоставляем widevine-installer
для автоматического включения воспроизведения Widevine путем загрузки и извлечения необходимых битов из образа ChromeOS.
NVram и загрузочная запись по умолчанию
Системы Apple Silicon хранят некоторые низкоуровневые настройки конфигурации системы в NVram. Мы предоставляем набор пакетов для взаимодействия с этим, но они не устанавливаются по умолчанию, поскольку в настоящее время не существует безопасного способа обеспечить использование одного записывающего устройства (одновременные записи могут быть нерегулярными и привести к повреждению).
The default boot entry can be changed using rust-asahi-bless
(a CLI tool) or rust-startup-disk
(a GUI). Two experimental tools are also provided to sync Bluetooth (rust-asahi-btsync
) and Wi-Fi (rust-wifisync
) settings between macOS and Linux. All of these tools are implemented on top of rust-apple-nvram
and rust-asahi-nvram
.
Эмуляция
Мы предоставляем эмулятор box64
, который может запускать некоторые программы x86_64..
Интеграция экосистемы Apple
We maintain packages for the libimobiledevice stack, which implements protocols and tools to communicate with Apple devices. Among other things, this includes idevicerestore
, which can be used to DFU an Apple Silicon laptop from another Linux system (instead of having to rely on another Mac with Apple Configurator 2). Other components of this stack are libimobiledevice
, libimobiledevice-glue
, libplist
, libusbmuxd
, and usbmuxd
.
Remix-specific plumbing ⚠️
Мы поддерживаем ряд пакетов, которые специфичны для реализации Remix:
-
asahi-platform-metapackage
(источник, https://copr.fedorainfracloud.org/coprs/g/asahi/fedora-remix-scripts/ [copr]) предоставляет метапакет, который объявляет все другие зависимости пакетов платформы Asahi -
asahi-repos
(источник, copr) предоставляет определения репозитория Yum для наших пакетов, предоставленных corp(ом) -
сalamares-firstboot-configs
(источник, copr) предоставляет конфигурацию Calamares, используемую для установщика при первой загрузке в версии KDE -
fedora-asahi-remix-appstream-metadata
(источник, copr) предоставляет метаданные AppStream, специфичные для Remix, которые необходимы для поддержки обновлений между основными выпусками через PackageKit -
fedora-asahi-remix-release
(source, copr) provides the distribution branding for the Remix; Fedora Asahi Remix has trademark approval from the Fedora Council to use its current name and branding (which includes the use of the Fedora logo) -
fedora-asahi-remix-scripts
(источник, https://copr.fedorainfracloud.org/coprs/g/asahi/fedora- remix-scripts/[copr]) предоставляет различные служебные сценарии и сервисы systemd, используемые в Remix
Инфраструктура
Установочные образы ⚠️
Установочные образы Fedora Asahi Remix создаются с использованием Kiwi из нашего описаний Kiwi и находятся за пределами инфраструктуры Fedora.
We are using AWS EC2 instances to perform builds and upload them to AWS S3, triggered by an AWS Lambda (which runs daily). We use another Lambda to generate the manifest for these daily builds to be consumed by the Asahi Installer.
We host our website on AWS S3, fronted by AWS Cloudfront; we use another Lambda to handle CDN invalidation. The website is automatically deployed from its GitLab repository; this is also where the manually-maintained installer manifest for release images (as opposed to dailies) lives. The Lambdas are also automatically deployed via Gitlab Pipelines using AWS Chalice.
Документация
Our documentation site is generated with Antora from its repository, and is integrated into the Fedora Docs Website.
Проект и отслеживание ошибок
Мы поддерживаем трекер планирования проекта и трекер ошибок.
Want to help? Learn how to contribute to Fedora Docs ›