首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
云原生
›
deepin 实现多架构适配的背后,我们做了什么? ...
返回列表
发新帖
deepin 实现多架构适配的背后,我们做了什么?
[复制链接]
发表于 2025-12-9 19:31:54
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
检察原文
* 全文引述 longlong 在 WHLUG 上的演讲,故存在口语化表达。本文仅代表个人观点和态度。
deepin 23 作为 deepin 20 的后继
版本
,最大的改变之一就是添加了多架构支持:从原来只支持 AMD64 架构,到如今支持 AMD64、RISC-V、LoongArch(新天下)、ARM64 多个 CPU 架构平台。
如今 deepin 23 已经
发布
了 AMD64 架构的 Stable 镜像,其他 CPU 架构的镜像还处于生态创建的 Preview
版本
阶段,直到我们以为其质量满意正式版发版尺度,才会
发布
Stable
版本
。
ARM64
ARM64 架构是 deepin 23 最早导入支持的架构,当 23 开始正式构建堆栈的时间,其就作为重要架构支持目的,如今看来也是除了 x86 架构之外生态最好的架构。我们对于 ARM64 架构的支持也得到了互助同伴:飞腾和此芯科技的支持。
主力构建集
群
我们在做 deepin 23 适配的时间,只有一台 FT2000/64
服务器
,当我们体系软件包增长到 3000+ 的时间,如许的构建规模远远不敷以支持构建。而且市面上也不是很好购买 ARM64
服务器
。以是我们发挥了主观能动性,在公司库房寻宝,末了被我找来了一台鲲鹏 920
服务器
,和五台盘古 w510 台式机,作为构建集群。
险些不存在的生态屏蔽
ARM64 的 Linux 生态,险些是比肩 x86 , 无需担心软件是否适配的题目,险些在 x86 上能构建的软件包在 ARM64 上都能正常编译。
通用启动的拦路虎
ARM64 初期的应用场景重要是嵌入式装备,以是用 U-Boot 的较多。但是 U-Boot 在启动 deepin 23 的时间就会有一系列题目,好比须要针对差别的装备利用差别的装备树二进制文件(dtb),这对我们 deepin 23 的主线化带来了寻衅。以是如今我们的装备也仅适配了能支持 UEFI 的飞腾 D2000/D3000、鲲鹏 920 和此芯科技的新品。对于其他的 ARM64 装备大概只能提供有限度的支持,由于针对差别开发板的板形做差别的适配,对于我们的人力物力都是一个巨大的寻衅。但是也欢迎更多的 ARM64 开发板和装备厂商与我们互助,我们努力适配好。
LoongArch
LoongArch(新天下)最初并不在 deepin 23 的目的支持架构范围内,但在 2022 年前后,随着龙芯鼎力放肆推进新天下发行版生态的进程,我们决定实验适配 LoongArch 体系。这一决定的契机源于 Revy 老师寄来的两台 LA50007A2000 呆板。
在我们决定开发新天下发行版之初,便面对着一个题目:硬件从那边来?其时龙芯
发布
的新天下支持硬件仅有龙芯 3A5000 和 7A2000。由于新天下刚刚推出,7A2000 的桥片状态并不稳固,时常发生假死环境(即内核仍在运行,但不相应输入输出)。我们最初并不知情,直到 Revy 老师赠送给我们一台龙芯 3A5000 7A2000 新天下主机,并附带了一份长达三页的 PDF
文档
,详细分析白龙芯硬件的各种题目,这让我们感到担心。我也在 Revy 的影响下购买了一台 3A5000 主板,荣幸的是,这块主板并未出现雷同的题目。
从 Loong Arch Linux 到 deepin Linux
我们决定站在巨人肩膀上,选择成熟度较高的 LoongArch Linux 作为底子,而不是利用尚不完满的 qemu 手动制作 rootfs。在此底子上,我们构建了 rootfs 并启动了 OBS worker ,进而得到了 LoongArch (新天下)的构建本领。同时,龙芯的固件也在不绝改进,假死环境有所改善。
Loongson 3C5000 Power!
本着 “靠着大树好纳凉” 的原则,我们去找我们的兄弟部分友爱互换之后,借来了两台四路 Loongson 3C5000L 服务器,这也是我们最强的构建主力服务器。不外,在一开始的时间,它们没有新天下固件的支持。厥后,我们找龙芯的人要了一份固件,才得以利用(固然,阵列卡依然没法在新天下下正常运行)。
而我们社区本身购买的 3C5000LL 双路服务器则出了一点不测:它出厂就自带新天下固件和 BMC,但在通电之后会以最高转速发出 “龙鸣”,其声音之大一度盖过我们机房全部的服务器,而且其运行也不是很稳固,险些天天都会死机。这让我们感到无奈,只得告急于武汉龙芯的工程师的帮助。在他们的资助下,我们弄清了龙芯服务器发出 “龙鸣” 的缘故原由:“其主板提供了 8 个风扇 4pin 的插座,新的 BMC 会检测 1,2,3,4 位的插座是否毗连正常。假如毗连不正常,BMC 会让风扇以最大功率运行,导致呆板过热。但是,我们购买的主机厂商并不知道这回事,风扇并没有按照序次插在 1,2,3,4 位上,导致了此征象的产生。
更多的 3C5000:厥后,我们通过 UOS 获取了更多的龙芯 3C5000,极大地增强了我们的构建资源。
deepin loong64 启动!
在统统准备完满后。我们手搓了 rootfs ,将 DDE 打包完成,而且做出了第一版的镜像。在龙芯 3a5000 上乐成运行,不外由于第一版本我们并不熟悉龙芯内核的特调,以是是从隔壁的 Loong Arch Linux 借用的内核。而体系软件包层面,根本是我们本身打包的体系源,也有部分是从 Revy 老师那 “偷” 的软件包。
3A6000
性能
飞升
2024 年初,龙芯发布了 3A6000,Revy 老师又第一时间赞助了一块 3A6000 主板给我们。正如他之前给我们的那些早期样品一样,这块主板碰到了各种题目:开机即死机、体系假死、PCIe 不稳固等。不外,随着后期我们购入的 3A6000 主板和华硕的 3A6000 主板题目渐渐得到缓解,体系的稳固性有了很大提升。固然,照旧得吐槽一下龙芯的 7A2000 桥片自带的 GPU,由于缺乏稳固和
功能
完备的驱动,其早期体现非常不稳固,尤其是在外接 4K 表现器时,险些无法表现,后续我们会和龙芯互助,利用官方驱动办理这一题目,恣意等待。
生态创建
在生态创建方面,龙芯的新天下生态可以说是从零开始。UOS 等基于龙芯旧天下的效果无法直接迁移到新天下上,固然 AOSC 的 libLoL 出现缓解了部分题目。为了推进龙芯的生态,我们也要求第一方应用必须能在 loong64 上编译通过。以是,如今各人可以看到,deepin 的 unioncode(IDE) 已经可以或许在 Loong 上正常运行,这无疑为龙芯的开发者生态带来了极大的长处。
然而,我们仍面对一些题目,好比上游对 Loong 补丁的傲慢态度,导致如 neovim 等软件无法在 loong64 上运行。为了办理这个题目,deepin 自主维护了干系补丁,使得 luajit 可以或许在 Loong 上顺遂运行。
如今,我们与各个新天下发行版社区保持着精良的关系,方便获取最新的技能效果并办理疑难题目。好比 23 预装了 libLoL 和在旧天下呆板上启动新天下体系的的支持。
何时 Stable?
拦截我们将 loong64 架构的镜像 stable 的题目在于:
1、如今应用市肆还只是一个空壳,作为一个目的就是开箱即用的发行版来说,这个肯定达不到发版本的尺度。
2、如今构建资源照旧匮乏,没办法做到和 ARM64 划一的构建资源支持,我们如今还在大量利用龙芯台式机作为构建的底子办法。
3、稳固性不满意发版本要求,由于龙架构无论是硬件软件固件都在一个相对快的迭代过程中,很难在某一个时间点去 stable 一个版本,而要求这个版本能稳固的向用户提供服务,以是我们不发 stable 版本,咱一起滚动更新(let‘s roll!)
RISC-V
对于 RV 架构,着实作为个人我加入的不多,deepin 对于 RV 架构的支持,重要在我们的杨同砚完成,此时她还在杭州的 RV 峰会上和各位大佬互换意见。那我就代为先容我们的 RV 适配环境。
板子?食之无味,弃之惋惜
我们对 RV 架构的支持现实是早于 loong64 的,中科院 PLCT 团队在我们做主线化支持之前就已经做好了一套非常早期的版本,而且可以启动到桌面,然而其时我们得到的硬件是全志 D1,其时我拿了一个归去玩,跑起了 Linux 之后就再也不想动它,让它吃灰去了,由于
性能
着实是太弱了,和同样代价的 rk3566 相比,无论是
性能
,生态,都远远不及。为啥我们要做 RV,大概是由于创吧。
着实我们一开始拿到的开发板也不止全志 D1 另有 TH1520:只能说是能用,但是用不了一点。性能依然堪忧。
以是在我们只有板子的状态下,也没法去做适配,只能用 qemu 手搓 rootfs ,跑起来了内核和 tty,但是全
功能
的 dde 由于性能题目,是跑不起来的(吐槽:就算适配了看全志 D1 这个样子,好像也跑不动 dde)
Sg2042 中式暴力美学的 RV 处置惩罚器
厥后 Revy 给我们弄来了两台 Sg2042 的呆板,每一个 Sg2042 利用的是 64 个平头哥 C910 焦点,而这个焦点同样用在 TH1520 的板子上。固然单核很弱,但是耐不住它焦点多啊。咱就靠堆核,也做到和 PC 级别的性能,至少我们可以在 sg2042 上插一个 AMD 信创神卡了:DDE 启动!
由于 sg2042 的出现,我们已经大概够上了批量构建的门槛了,两台 2042 在机房日夜不休的构建下,我们的 rv 生态险些追平 ARM64。由于 RISC-V 在上游继承度广泛较高,纵然没有比力强的硬件出现,rv 仍旧被 Debian 的主线支持,这也极大的方便了我们举行适配。
从条记本到遥控车:探索 RV 的更多形态
而后我们打仗到更多的 RV 装备,(再次感谢各位 RV 厂商的投喂)包罗且不限于条记本,平板,乃至是遥控车这类特殊古怪的玩意。如许我们打仗的装备就不但限于 EVB 了。这些装备固然五花八门然而利用的无非那么几种焦点,各有各的毛病,如今也还没有一个装备能符合我们测试组的要求的。
GPU:RV 生态的拦路虎
我们对于 RV 生态的构建,着实好坏常具有信心的,但是在桌面的支持上我们始终无法忽略 GPU 这个因素。由于 RV 大部分厂商不绝以来,将来也将一连把重心放在嵌入式范畴,有 PCIE 插槽的装备寥寥可数,寄盼望于插一块 AMD 亮机卡就能动员桌面的计划根本上泡汤了。
于是摆在我们面前的题目就是 RV 的板载 GPU,它不但不支持桌面的 GL,只支持 GLES,还没有开源驱动,只有魔改版 mesa,要我们适配它,意味着我们要往体系内里塞一坨不受包管理的脏东西。
于是厥后我们便修复了 RV llvmpipe 试图先抛弃这个残废 GPU 直接利用软件渲染,怎样效果不佳,毕竟 DDE 主打的一个殊效悦目,关闭殊效之后完全没法用。
末了在高人辅导下,我们采取了 GLVND 方案实现了开源驱动和闭源驱动的依赖共存,委曲地把它们都纳入到了包管理,这才有了我们如今稍微正常一些的桌面体验。
嵌入式的范围性
在当前的 RV 装备适配范畴,我们所打仗的大多数产物依然是以开发板的情势存在。这大概是由于对于 RV 技能来说,桌面应用的遍及尚处于早期阶段。因此,这种嵌入式装备的计划理念不绝影响着我们的适配工作,使得适配过程充满了寻衅。这段履历让我们深刻熟悉到,为了推动 RV 技能在桌面环境中的应用,我们须要与厂商更精密地互助,共同探索和办理适配过程中遇题目。同时,也须要行业内的共同积极,以促进 RV 技能的成熟和广泛应用。
以上便是本文全部内容了,
感谢全部在 deepin 适配蹊径提供支持和资助的老师和同伴们。
干系阅读:
(1)deepin 全版本镜像下载(含 deepin V15)
(2)deepin RISC-V 架构镜像(LicheePi 44A、VisionFive2 等)
(3)deepin 多架构适配机型清单
回复
使用道具
举报
返回列表
浏览过的版块
DevOps与敏捷开发
Oracle
区块链
物联网
分布式数据库
Mysql
linux
SAAS
Java
梦见你的名字
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表