适配apple M1 下.jpg

在上篇中,我们介绍了deepin适配M1的方案选择,让大家了解了我们在适配前的一些思路。本篇中,我们主要让大家了解一下我们在适配过程中遇到的问题,以及我们如何解决它们的。

适配的三个阶段

经过我们的探索及实践,deepin适配M1的过程大致分为以下三个阶段:

第一阶段:要先能在M1上启动deepin的基础环境,也就是不带桌面的最小系统。这样就可以初步验证适配工作的正确性,同时,方便在实机上进行下一步的适配工作。

第二阶段: 要在这个最小系统上尝试安装桌面环境,并进行相关的适配工作,使其能够启动DDE桌面,直到最终提供完整的deepin桌面环境。

第三阶段:要使用前面适配的经验成果去进行U盘安装镜像的相关适配,实现从U盘启动安装deepin系统。

那么,经历这三个阶段,我们具体要解决哪些适配问题呢?

适配最小deepin环境(仅命令行)

首先,我们基于m1-debian打包M1 Debian rootfs包的脚本,先将debootstrap rootfs环境的源从debian换成deepin,达到这一步的时候可以成功启动,随后便尝试替换apt软件源为deepin V23的Community源,发现系统启动阶段发生了kernel panic。进行了分析、搜索和调试之后,没有任何结果。

在进一步分析和调试之后,最终,将community源换成了CI源后生成rootfs,此时kernel panic报错消失,成功进入deepin系统。猜测是因为上游内核需要的相关库版本较高,而当前Community源的软件包无法满足要求,因此,暂时需要使用CI源进行适配。

在这一阶段,除了Asahi相关包还需要使用m1-debian项目以外,其他debian源均可替换为deepin源,如下图,已经能够启动最小的deepin系统环境了。

deepin-23-base.jpg

适配基本的DDE桌面环境

最开始,在deepin环境中装DDE桌面环境时,会遇到mesa包依赖的问题。因为m1-debian适配的mesa包是基于Debian bookworm环境的,所以无法直接在deepin环境下使用。于是,deepin-m1 SIG决定在deepin环境下重新打包mesa,并独立建仓库。因为都已经独立建仓了,所以在这个阶段便将内核,m1n1, uboot等组件也一并重新打包,并加入仓库。

当解决了这个问题之后,接下来的流程就顺利了一些。装上mesa和DDE桌面环境,并且在解决了一些奇奇怪怪的缺包依赖问题之后,如下图,便能启动我们熟悉的桌面环境了。

deepin-23-desktop.png

不过,在当前的桌面环境之上,声音和GPU硬件加速都是无法使用的。调试期间,我们尝试过各种Asahi Linux中发行版的内核参数及内核编译脚本进行内核的定制适配,遗憾的是,从目前的调试结果来看,我们自行编译的内核依然无法解决上述问题。

当使用m1-debian项目提供的内核后,尽管可以启用GPU硬件加速,但窗管这部分会依旧会出现问题。比如异常白块,dock显示异常。这可能需要进行内核与窗管的适配工作。

deepin-23-gpu-error.png

这方面问题有待我们进一步分析、调试及排查问题根源所在。目前,项目已经公开发布在github上(https://github.com/deepin-community/deepin-m1),感兴趣的开发者可以去试一试。如果希望直接在Mac上安装,也可以直接使用https://ci.deepin.com/repo/deepin/deepin-ports/deepin-m1/deepin.install脚本。

适配U盘安装镜像

由于Mac系统的特殊系统引导结构,在其设备上是无法进行像普通电脑一样直接插U盘,然后从U盘引导安装程序进行系统安装的。但是,m1-debian项目提供了一种制作U盘 LiveCD的方法,并且此种方案可以被稳定使用。这给我们提供了一种适配U盘安装镜像,并从U盘引导安装deepin系统的思路。

首先,要使安装盘系统能够被成功启动,我们需要替换安装镜像的普通内核为Asahi Linux项目专门制作的内核。这需要我们修改镜像制作流程,专门打包一个为Mac M1设计的镜像。主要是在内核制作阶段,替换了使用的内核仓库和内核包。

然后,在适配过程中,还遇到了安装器安装系统失败的问题。报执行"05_context-menus_copy.job"失败的错误。经过排查,发现这是一个临时解决方案的安装钩子,当前安装环境并不需要,反而导致了错误。于是,便在制作镜像流程中将其去除。之后,安装流程便可以正常走完了。

由于Mac系统的特殊系统引导结构,在其设备上是无法进行像普通电脑一样直接插U盘,然后从U盘引导安装程序进行系统安装的。但是,m1-debian项目提供了一种制作U盘 LiveCD的方法,并且此种方案可以被稳定使用。这给我们提供了一种适配U盘安装镜像,并从U盘引导安装deepin系统的思路。

我们要郑重地提醒大家,这个安装镜像还不是完美的,存在一些不可忽视的限制和风险。为了不影响Mac原有的引导和系统分区, 只能使用自定义安装 ,在空闲磁盘区域中安装deepin系统。 全盘安装和高级安装可能会严重损坏引导或Mac系统,导致机器无法正常工作。 这种情况下,只有用另一台Mac设备进行线刷才能恢复。安装器暂时还没有屏蔽全盘安装和高级安装,所以请小伙伴们务必谨慎选择。

关于安装方法,可以参考:https://sourl.cn/FjBRqg

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

deepin-m1 SIG入口:https://www.deepin.org/index/docs/sig/sig/deepin-m1/README

发表评论