「龙蜥开发者说」第 18 期来了!开发者与开源社区相辅相成,相互成就,这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的,我们希望在这里让更多人看见技术的力量。本期故事,我们邀请了龙蜥社区开发者王楷元来分享「历时三周,记录如何从 0 到 1 构建龙蜥衍生版」。
欢迎阅读上期故事《给芯片以系统、给系统以社区》。开发者说系长期活动,对于积极投稿、多次分享的童鞋,我们还有神秘大礼鼓励!诚邀开发者们分享真实体验,以文会友、共同学习、一起进步。
本期故事主角:王楷元 龙蜥社区 Distro SIG 成员,一直从事于浪潮信息 KOS 操作系统开发工作,参与龙蜥社区期间,基于 Anolis OS 8.6 构建衍生版 KOS 5.8,也积极参与 BUG 反馈,问题修复,提交多个 PR。
自参加工作开始,我就一头扎进了 Linux 操作系统这片大海,彼时对操作系统的认识和理解都很模糊,只是在上学期间接触过 CentOS,对内核更是知之甚少。但我也很幸运,正赶上所在的 KOS 团队迅速发展,在参与构建过程中,学习了 koji、MBS、pungi 等操作系统构建的开源组件,慢慢认识了操作系统是如何从一行行代码到最终运行于硬件设备之上。
正值国内开源社区发展热潮,很多社区也曾发展的如火如荼,然而大多都是虎头蛇尾。在对国内兴起的几个知名社区了解过程中,我们被龙蜥社区的理念与氛围吸引,基于良好的商业合作,开始与社区伙伴交流,也基于我们的商业需求,最终决定基于 Anolis OS 构建商业衍生版。
一切都是新的开始,从源码下载、仓库搭建到编译构建系统部署,历时三周,基于Anolis OS 8.6 的衍生版 KOS 5.8 第一版测试镜像诞生了!
(图 KOS 构建过程 / 已获作者授权)
在制作第一个龙蜥衍生版的过程中,我印象最深的就是在生成 ISO 镜像后,发现 Arm 版镜像在 GUI 界面安装存在问题。于是,我们开始排查问题,通过报错排查软件包,怀疑与 GTK 相关软件有关,可能是编译环境或构建过程中依赖存在问题导致的,但是经过分析后排除了构建问题。然后我们将关注转向源码,在将 KOS 与 Anolis OS 镜像进行全面对比分析后,发现 zlib 软件包存在差异,通过对源码分析,发现可能是社区在对新架构支持时的修改导致的,同时发现 a8 分支也不是最新的代码。于是我们将该问题反馈社区,在得到社区小伙伴的支持同步更新 zlib 代码后,问题得到了解决。
(图 KOS 首页界面 / 已获作者授权)
KOS 作为一款服务器操作系统,希望充分利用浪潮信息整机厂商的硬件优势,在操作系统层面兼容更多硬件板卡。在兼容适配中,我发现对于 Anolis OS 双内核来说,镜像中每个驱动需要分别适配 ANCK,驱动如何自动匹配内核进行安装存在问题。因此我们跟社区小伙伴沟通,能不能有合理便捷的方案支持厂商 OOT 驱动随内核自动安装,社区对该情况很感兴趣,大家很快通过组会开展交流,确定开发计划和方案。
后续经社区反馈后,我们将该功能集成到 KOS 版本中,并经过实践测试验证,在使用中也对有待优化之处反馈社区,在与社区不断的交流中,我对开源贡献的理解也更加深刻。在测试过程中,我们也将发现的问题提交至社区 BUG 管理平台(https://bugzilla.openanolis.cn/),并开始尝试向社区提交修复补丁,因为以前没有向开源社区提交 PR 的经历,过程中产生了一些困惑,但都得到了社区小伙伴及时热情的答疑,特别感谢他们的支持。随着一个个 PR 合入主线,我每每都有切实参与到龙蜥社区工作中的沉浸感和自豪感。
当然我们也在龙蜥社区发现很多有意思的项目,如 T-One 测试平台,对于我们提升测试质量和效率有很大帮助,在引入 T-One 平台后,我们也将过程中的问题反馈给社区,得到了社区小伙伴及时有效的回答。
从开始参与龙蜥社区,包括发布衍生版、BUG 反馈、PR 提交、技术交流等等,这些与龙蜥社区互动的点滴,如一个个路碑,见证着我们在参与开源社区道路上的成长。每一个 PR 的合入都得到社区的肯定和鼓励,让我们更加有信心和动力继续参与龙蜥社区的建设,也希望各个开发者在社区工作的过程中不断提升自身实力,通过沟通相互学习,在收获自身成长的同时,也为社区贡献更多力量,衷心希望龙蜥社区能继续秉持开源开放的理念,持续吸引更多开发者的加入。
相关链接地址:产品发布 SIG 主页:https://openanolis.cn/sig/SIG-Distro
「人人都可以参与开源」活动链接:https://openanolis.cn/community/activity
浪潮信息 KOS 主页:
更多龙蜥开发者的故事,点击下方图片阅读:
—— 完 ——
加入龙蜥社群
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。