Как это сделано

На этой странице делается попытка документировать, как собирается Fedora Asahi Remix. Полезная информация, которую стоит прочитать перед этим:

В этом документе компоненты, размещенные за пределами инфраструктуры 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.

Мы также поддерживаем несколько инструментов, связанных с экосистемой: apfs-fuse — это драйвер пользовательского пространства, доступный только для чтения, для файловых систем APFS и uxplay — реализация AirPlay2.

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.

Проект и отслеживание ошибок