演示了在配备 Apple M1 芯片的设备上使用 GNOME 启动 Linux 环境

由 Asahi Linux 和 Corellium 项目推动的实现对 Apple M1 芯片的 Linux 支持的举措已经达到了可以在采用 Apple M1 芯片的系统上运行的 Linux 环境中运行 GNOME 桌面的程度。 屏幕输出使用帧缓冲区进行组织,并使用 LLVMPipe 软件光栅器提供 OpenGL 支持。 下一步将是使显示协处理器能够输出高达 4K 的分辨率,其驱动程序已经进行了逆向工程。

Project Asahi 已在主 Linux 内核中实现了对 M1 SoC 的非 GPU 组件的初步支持。 在演示的Linux环境中,除了标准内核的功能之外,还使用了与PCIe、内部总线的pinctrl驱动程序和显示驱动程序相关的几个附加补丁。 这些附加功能使得提供屏幕输出并实现 USB 和以太网功能成为可能。 尚未使用图形加速。

有趣的是,为了对 M1 SoC 进行逆向工程,Asahi 项目没有尝试反汇编 macOS 驱动程序,而是实现了一个在 macOS 和 M1 芯片之间运行的虚拟机管理程序,并透明地拦截和记录芯片上的所有操作。 SoC M1 难以在第三方操作系统中实现对该芯片的支持的特征之一是在显示控制器 (DCP) 中添加了协处理器。 macOS 显示驱动程序的一半功能转移到指定协处理器一侧,通过特殊的 RPC 接口调用协处理器的现成函数。

爱好者已经解析了对此 RPC 接口的足够调用,以使用协处理器进行屏幕输出,以及控制硬件光标并执行合成和缩放操作。 问题在于 RPC 接口依赖于固件,并且随 macOS 的每个版本而变化,因此 Asahi Linux 计划仅支持某些固件版本。 首先,将为 macOS 12“Monterey”附带的固件提供支持。 无法下载所需的固件版本,因为固件是在将控制权转移到操作系统之前的阶段由 iBoot 安装的,并使用数字签名进行验证。

演示了在配备 Apple M1 芯片的设备上使用 GNOME 启动 Linux 环境
演示了在配备 Apple M1 芯片的设备上使用 GNOME 启动 Linux 环境


来源: opennet.ru

添加评论