[Community News] deepin适配Apple M1,我们经历了什么?(下篇)
Tofloor
poster avatar
deepin小助手
Super Moderator
OM
2023-07-05 18:24
Author

适配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

Reply Favorite View the author
All Replies
1 / 2
To page
阿尼樱奈奈
Moderator
2023-07-05 18:24
#1

applaud like

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

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

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

这一段重复了

Reply View the author
xuqi
deepin testing team
2023-07-05 21:45
#3
  • Nice~👍
Reply View the author
wcs4221
deepin beta test group
2023-07-06 01:48
#4

proud

Reply View the author
三好市民
deepin
2023-07-06 02:00
#5

光作为旁观者,看这个经过,就感觉是经历了九九八十一难,开发确实不容易

Reply View the author
jiutian123
deepin
2023-07-06 07:30
#6

为啥去适配?

Reply View the author
流浪的加菲
deepin
2023-07-06 17:20
#7

“上游内核需要的相关库版本较高”、“mesa包依赖的问题”,其实目前有些软件也是因为这类问题,没法跟随上游更新到最新版sad

Reply View the author
爱开发
deepin
2023-07-06 17:25
#8

人力和物力不放在构建自己的生态上,自己系统问题还一大堆。还做别的事情。是觉得经费拿得太容易了吗?

Reply View the author
W2J
deepin
2023-07-06 19:53
#9

根社区就是根系纵横发达,炼化共同土壤,结局就是互相交错互相营养,走向繁荣。

从SIG的尝试和成功拓展,我是学到了思路。

Reply View the author
JasonZhang
deepin
2023-07-06 21:20
#10
爱开发

人力和物力不放在构建自己的生态上,自己系统问题还一大堆。还做别的事情。是觉得经费拿得太容易了吗?

你好,朋友,

这是咱们sig组的一起共同努力的成功,并不是你说想的那样,你可以对我们所做的工作指出问题,我们也接受,但是如果对sig组一起的努力结果做这样的一个草率评价,我个人认为有些不太合理,甚至带有一些恶意

Reply View the author
trutheeker
deepin
2023-07-07 17:32
#11

买个apple装linux也是。。。。。。。。。。

Reply View the author
也无风雨也无晴,归去
deepin
2023-07-07 21:57
#12
It has been deleted!
也无风雨也无晴,归去
deepin
2023-07-07 21:57
#13
It has been deleted!
也无风雨也无晴,归去
deepin
2023-07-07 21:58
#14
It has been deleted!
也无风雨也无晴,归去
deepin
2023-07-07 22:00
#15
It has been deleted!
177******21
deepin
2023-07-07 23:28
#16
爱开发

人力和物力不放在构建自己的生态上,自己系统问题还一大堆。还做别的事情。是觉得经费拿得太容易了吗?

希望深度能在最大程度上把windows给替代了,做出来一个真正优秀的操作系统,目前还难以作为实际、广泛的生产工具和办公环境。

在这个阶段去适配mac的设备,没啥实际意义,相关工作人员花1秒也是浪费时间。。。

Reply View the author
WangZhongyun
deepin
2023-07-08 18:13
#17
177******21

希望深度能在最大程度上把windows给替代了,做出来一个真正优秀的操作系统,目前还难以作为实际、广泛的生产工具和办公环境。

在这个阶段去适配mac的设备,没啥实际意义,相关工作人员花1秒也是浪费时间。。。

各自有自己的需求,就像在windows大行其道的环境下,开发国产linux系统令人不可思议。开发适配其它的系统也自然有他们的需求动力。

Reply View the author
pengxuanang
deepin
2023-07-08 18:34
#18
爱开发

人力和物力不放在构建自己的生态上,自己系统问题还一大堆。还做别的事情。是觉得经费拿得太容易了吗?

生态问题还得软件厂商来一起努力才能适配呀,如果装机量不够系统层面想搞软件厂不干不照样白搭

Reply View the author
danally0822
deepin
2023-07-08 18:59
#19

请问什么时候适配龙芯的CPU?准备配一台纯国产的电脑.

Reply View the author
我只是来看看
deepin
2023-07-08 19:22
#20

先把v23做好吧,适配这个确实没啥意义!

Reply View the author
1 / 2
To page