查看原文
其他

deepin成功适配Apple M1,我们的适配之旅!(上篇)



告诉大家一个令人兴奋的消息:在已经发布的deepin V23 beta版本中,深度操作系统正式适配Apple Mac mini M1啦!


Mac mini M1是苹果于2020年11月发布的迷你电脑主机芯片,它搭载了最高3.2GHz主频的8核M1处理器,带有两个雷电接口,两个USB 3.0 Type A、HDMI 2.0和一个3.5mm耳机接口。由于和同系列的Macbook Air M1、Macbook Pro M1采用了同款处理器,本次适配也为今后这两台机器的移植工作奠定了基础。


今天,我们就带着大家从Apple M1适配方案的选择、适配流程、适配工作准备三个部分,一起了解我们的适配之旅!


适配方案的选择

由于Mac M1机器采用了与普通x86_64兼容机不同的一套引导系统,所以,要移植普通PC的操作系统到它上面,首先就要解决引导系统方案的问题。由于自研一套这样的解决方案过于复杂,需要深入调研Mac M1的引导系统,甚至逆向关键硬件的驱动,最终我们选择使用了基于已经成熟且证明可靠了的Asahi Linux项目来推进我们的适配工作。


Asahi Linux是一个旨在将Linux适配到Apple Silicon平台的项目和社区。在这个社区中,已经有了一些被成功适配了的Linux发行版,例如Alpine Linux、Debian、Fedora、 Gentoo、Ubuntu等。具体可参见:https://github.com/AsahiLinux


适配流程

为了让大家了解我们的适配大致做了哪些工作,首先为大家介绍我们在Apple Silicon平台上使用Asahi Linux项目来安装和启动Linux的流程:



STEP 1

首先,在Mac OS上运行安装脚本。这个安装脚本会拉取安装配置和rootfs安装包,对剩余磁盘空间进行分区,刷写bootloader (m1n1和UBoot)和rootfs,以便后续安装流程的进行。


STEP 2

然后,关机后再启动,进入刷好的启动项。这时,会进行将所安装的Linux发行版设置成默认启动项的工作。


STEP 3

重启电脑后,系统会进入已刷写的bootloader,也就是m1n1。m1n1会根据设定,加载下一个UEFI系统的bootloader,通常是UBoot。UBoot会按照配置文件,决定是直接启动操作系统,还是启动Grub。从这里开始,后续的流程就和普通的UEFI系统类似。


STEP 4

最后,根据不同发行版的安装方式,第一次启动可能会进入配置向导中。比如官方的ArchlinuxARM,会启动到它们特别定制的calamares安装器中。


适配工作准备

针对当前的deepin M1适配项目,deepin社区团队综合考量了Asahi Linux官方安装器和

现有的deepin arm64软件仓库,在结合m1-debian项目及justforlxz之前做过的deepin-m1项目之后,在m1-debian项目的基础之上做了适配工作。


将deepin移植到m1平台,需要完成以下准备:


1. 提供Mac上执行的Linux安装脚本;

2. 搭建提供安装脚本,安装配置及rootfs的文件服务器。(可选http或ftp);

3. bootloader (m1n1+uboot);

4. 带M1 Mac相关驱动的内核;

5. 适配M1 GPU的Mesa;

6. 打包/更新一些关键软件包。



因为Apple M1也是ARM架构,所以我们依旧可以利用现有的deepin arm64仓库。对于上述准备工作提到的关键组件,我们需要进行单独打包建仓。比如M1用的内核和Mesa。目前,deepin-m1项目已经公开发布在GitHub上,感兴趣的朋友可以去试一试。如果希望直接在Mac上安装,也可以直接使用https://ci.deepin.com/repo/deepin/deepin-ports/deepin-m1/deepin.install脚本。


适配M1未来目标

DDE桌面环境是深度操作系统的核心项目之一。如何在Mac M1设备上提供像其他机器一样友好的交互体验,是我们未来适配的核心目标。当前,为了解决启动系统及桌面环境的问题,deepin-m1 SIG已经自行打包了M1相关的组件,并提供了我们的deepin-m1的安装脚本和安装仓库。


当前阶段,尽管已经能够实现在Mac Mini M1上正常启动deepin系统,但还没有达到可以日常使用的阶段,存在着诸多适配问题。例如:系统缺少软件应用,第一次启动无设置向导,声音和GPU硬件加速不可用等问题。目前我们正在积极着手解决这些问题。


我们也衷心希望这次深度操作系统的适配能够为Apple Silicon项目,乃至ARM上的Linux生态注入新活力,也期待对deepin-m1或deepin-arm移植感兴趣的朋友加入我们的SIG,与我们一起,为完善开源软件生态而努力。


deepin-m1 SIG入口:https://github.com/deepin-community/deepin-m1


最后,非常感谢deepin相关SIG的开发者,非常感谢你们在Asahi Linux及m1-debian项目的协助与支持。正是由于你们的贡献开源、参与开源,deepin越来越好。再次谢谢你们!


在下篇中,我们将重点介绍适配过程解决的问题,欢迎大家关注。


撰稿:ArchieMeng

审校:Zeno、dengtongxue、囿马、JasonZhang


往期精选  |  Selection in the past



关于我们

deepin.org

作为国内首个桌面操作系统根社区,深度开源社区一直秉承产品创新、技术开放、过程透明、伙伴共创的理念,坚定地成为连接内部开发者和产品,外部开发者和用户的纽带。致力于打造中国主导、具有国际影响力的桌面操作系统根社区,保障操作系统供应链安全,筑牢数字基础设施安全底座。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存