Asahi Linux 7.1 进展报告
Asahi Linux 7.1 进展报告
Asahi Linux 7.1 概述
Asahi Linux 7.1 专注于扩展对 M3 系列的支持,解决由 macOS 27 开发人员测试版引入的关键启动和电源问题,并为硬件视频解码实现自定义固件方案。
macOS 27 兼容性与启动修复
macOS 27 对 APFS 元数据引入了更改,这会导致 Asahi Linux 安装项无法在启动选择器中显示。
Apple 的启动工具要求 APFS 容器内必须有一个 "valid" 的 macOS 安装才能识别可启动卷。Asahi Linux 使用一个包含 m1n1 作为内核的小型 2.5 GB APFS 容器来欺骗 Apple 的工具。在 macOS 27 中,Apple 开始强制执行 APFS 元数据中的特定可启动标志;如果未设置此标志,该卷将从启动磁盘应用程序和启动选择器中隐藏。
要解决此问题,Asahi 安装程序现在会自动为新安装设置此标志。对于受 macOS 27 测试版影响的现有安装,用户可以:
- 再次运行 Asahi 安装程序并选择 "Fix macOS 27 boot picker compatibility" 选项。
- 使用由
chaos_princess开发的独立工具(可在 GitHub 的AsahiLinux/asahi-fix27获取)在 Linux 中修复此问题,前提是该工具在升级到 macOS 27 之前运行。
SMC 固件与紧急关机
macOS 27 中系统管理控制器 (SMC) 固件的更改导致 Asahi Linux 出现紧急关机。
macOS 27 更新了 SMC 固件,将一个电池管理接口从返回 32 位整数更改为返回单个字节。这种 ABI 更改导致 Linux 电源管理驱动程序将电池状态误判为故障,从而触发紧急关机以保护系统。这已在从 7.0.12 版本开始的下游内核中得到修复,该版本现在支持两种固件 ABI。
M3 系列硬件支持
Asahi Linux 已在 M3、M3 Pro、M3 Max 和 M3 Ultra SoC 上取得了显著进展,多个核心组件现已可以使用。
由于 Apple 在 M1 以来在多个硬件模块上保持了一致性,因此大部分 M3 支持是通过 Devicetree 增补和配置文件实现的。主要成就包括:
- 高质量音频: 由于使用了与前几代相同的 I2S 控制器、数值控制振荡器 (NCO) 和放大器芯片,M3 机器上的扬声器和耳机插孔支持现已可以使用。
- CPU 管理: CPU 频率切换和 big.LITTLE 任务调度支持现已启用,从而提高了能效和性能。
- 硬件传感器: 通过 Devicetree 更改,SMC 硬件传感器现已可以使用。
- 核心 SoC 模块: 对于 M3 系列机器,PCIe、WiFi、蓝牙、NVMe、键盘和触控板驱动程序现已可以运行。
Apple 视频解码器 (AVD) 与自定义固件
Asahi Linux 正在为 Apple 视频解码器 (AVD) 实现自定义固件方案,以避免对 Apple 专有 kexts 的依赖。
AVD 是一个 ARM Cortex-M3 核心,用于管理用于解码 AVC (H.264)、HEVC (H.265)、VP9 和 AV1 的固定功能硬件。Apple 将固件和配置数据封装在 AVD 内核扩展 (kext) 中,且不同 SoC 的版本各不相同。为了避免为每个 SoC 版本提取和更新固件的繁琐工作,Asahi 团队正在编写自己的固件。
由于 Cortex-M3 不验证其执行的固件,该团队开发了一个自定义 blob,用于安装中断处理程序并为每个 AVD 版本应用必要的调节参数。这种方法已实现了一个可工作的 V4L2 驱动程序用于 AVC 硬件,支持高达 4K 的 10-bit AVC 编码视频。未来的工作包括实现对 VP9、HEVC 和 AV1 的支持。
m1n1 版本 1.6.0 发布
m1n1 v1.6.0 是一个重大版本,它为 stage 2 构建引入了 Rust 语言要求,并将 GPU 初始化移入启动加载器中。
m1n1 1.6.0 的主要变化包括:
- Rust 集成: Stage 2 构建现在需要 Rust。Apple Device Tree 解析代码已移植到 Rust,并且启动加载器使用针对
aarch64-none-softfloat的no_stdRust。 - GPU 初始化: GPU 初始化现在由 m1n1 处理,而不是由内核驱动程序处理。这简化了 Devicetree 绑定并消除了内核驱动程序处理来自 Apple 硬件初始化数据中的浮点数的需要。
- M3 和未来支持:支持 M3 系列机器的 SPMI 控制器和 PCIe 初始化已在本次发布中添加,并通过改进对非 macOS boot modes 和电源域元数据的处理,为 M4 和 A18 Pro (MacBook Neo) 支持奠定了基础。