发布时间:2021-10-11 18:09:50来源:CSDN
在搭载M1芯片的苹果设备上运行Linux究竟有多难?
作者|苏宓
出品|CSDN(ID:CSDNnews)
一年前,苹果震撼发布专为Mac设计的首款Soc芯片——M1,为自家的软硬件生态闭环奠定了坚固的基础,而这一突破性创新也于一时之间引得无数开发者竞折腰。
不过,对于苹果从硬件、到软件、再到系统这种将整个生态链握在自家手中的封闭做法,也有不少人认为苹果应该再开放一些,以融合更多的生态。对此,当"如何看待配备M1的MacBookAir"这一问题落到Linux之父LinusTorvalds手中时,其曾回答道:
非常乐意去拥有一台,因为自己也曾是11英寸MacBookAir的长达十年用户,但是现在苹果笔记本对Linux兼容已经不那么友好了,尽管新的MacBookAir几乎完美无瑕,但OS不行。
虽然他等待搭载ARM架构的笔记本电脑运行Linux已许久,但是因为时间、精力等因素,Linus直言没空解决M1Mac运行Linux的问题,且也不想与对Linux不感兴趣的苹果公司“作对”。
由于M1Mac采用了苹果自研的GPU以及相关设备,因此想要在该设备上运行Linux,就必须针对LinuxKernel重写底层支持,这种情况下如果有苹果的开放支持或许一切都变得简单,但当前如果也仅是如果,现实想要在Mac上运行Linux,。不过,即使有一点希望,有开发者也表示愿意一试。
AsahiLinux(https://asahilinux.org/)就是这样的一个项目,它是由知名开发者HectorMartin发起,通过众筹的支持,这个项目已经持续了近一年的时间。
近期,该项目再次传来一个好消息——Linux现在可以在M1Mac上实现“作为基本桌面”的功能,不过还没有GPU加速。

苹果M1上的原生Linux越来越近!
根据AsahiLinux最新发布的9月份进度报告显示,最底层的驱动程序已经并入了Linux内核,当前已经并入5.16版本的Linux内核覆盖了更多的驱动程序,包括PClebindings、PCle驱动、USB-CPD驱动。另外,还有Pinctrl驱动(苹果GPIO引脚控制)、I²C驱动、ASCmailboxdriver、IOMMU4Kpatches、设备电源管理等部件还在审核中。
“有了这些驱动程序,M1Mac实际上可以用作桌面Linux机器!虽然还没有GPU加速,但M1的CPU非常强大,以至于在它们上的软件渲染桌面实际上比在具有硬件加速的RockchipARM64机器上更快。“AsahiLinux的项目负责人HectorMartin说道。
除此之外,在研究过程中,AsahiLinux项目团队发现苹果自研的Soc与其他Soc有着很大的不同,其表示,“在典型的SoC上,驱动程序对底层硬件有深入的了解,并且他们对其精确的布局进行硬编码:多少寄存器、多少引脚、事物如何相互关联等等。这实际上是大多数SoC的要求,因为硬件往往会因代而异,因此驱动程序总是需要更改以支持更新的硬件。
然而,Apple在强调保持硬件接口在SoC各代之间兼容方面是独一无二的——M1中的UART(UniversalAsynchronousReceiver/Transmitter,通用异步收发传输器)硬件可以追溯到最初的iPhone!这意味着我们处于一个独特的位置,可以尝试编写不仅适用于M1,而且可以在未来的芯片上保持不变的驱动程序。这是ARM64世界中一个非常令人兴奋的机会。“
为什么将Linux移植到M1Mac这么难?
如今,AsahiLinux可以在M1Mac上作为一个基本的Linux桌面使用,已是一次不小的突破。
据外媒报道,一家专门从事虚拟化解决方案的初创软件公司Corellium曾尝试将Linux移植到基于M1的PC过程中发现,苹果公司在构建M1时不走寻常路,运用了大量的专有技术。
举例说明,当几乎所有基于64位Arm的系统启动时,它们都通过称为PSCI的接口调用固件,但在M1的情况下,CPU内核从MMIO寄存器指定的地址开始,然后开始运行内核。此外,苹果系统还使用与Arm标准不兼容的专有Apple中断控制器(AIC)。同时,定时器中断连接到FIQ,这是一个晦涩的架构特性,主要用于与Linux不兼容的32位Arm系统。
为了使M1驱动的PC中的各种处理器相互交互,操作系统必须提供一组处理器间中断(Inter-ProcessorInterrupt,IPI)。以前,IPI的处理方式与使用MMIO访问AIC的传统IRQ一样,但在M1的情况下,苹果公司使用处理器内核寄存器来调度和确认IPI,因为它们依赖于FIQ。
Apple的奇特之处还不止于此。例如,苹果公司的Wi-Fi/蓝牙控制器使用基于PCIe的非标准协议连接到SoC。更复杂的是,苹果的PCIe和集成的SynopsysDWC3USB控制器使用该公司专有的输入-输出内存管理单元(IOMMU),称为设备地址解析表(DART)。

这意味在没有官方文档解析、所属的硬件平台是苹果公司专有的情况下,AsahiLinux项目的工程师们想要看透M1芯片蕴藏的奥秘,必须进行大量的逆向工程以及不断的探索工作,其工作量与难度也非常人想象。
不过,这是否意味着该项目已经成功,该团队表示,“仍需要等待下一代芯片如M1X/M2芯片的发布,以确保他们是否成功制作了足够的驱动程序向前兼容以在较新的芯片上启动Linux。”
下一征程——GPU
当前AsahiLinux虽然实现了不小的突破,但该团队也指出,因为缺少驱动程序和完美的设置,当前的AsahiLinux仍然无法使用Thunderbolt、网络摄像头、音频,Wi-Fi支持也还需要大量的工作。
除此之外,更为关键的是,GPU加速也是一个大问题,由于苹果的专有性,它需要独立开发者们构建类似于苹果自己设计的驱动程序。同时,也有一些程序在M1SoC中使用了苹果专有的硬件单元(GPU、视频加速等),如果没有合适的驱动程序,这些应用将无法在Linux下感知到苹果处理器带来的优势。
截止目前,AsahiLinux项目仍然还没有合适的安装程序,除了社区之外的用户无法在基于AppleSilicon的系统上体验原生Linux,但他们也将GPU作为下一个重点突破口。
"一旦我们有了稳定的内核基础,我们将开始发布一个'官方'安装程序,希望能在'冒险者'中看到更广泛的使用。"HectorMartin说道。
参考:
https://asahilinux.org/2021/10/progress-report-september-2021/
https://www.tomshardware.com/news/apple-m1-linux-reveals-system-architecture
