龙蜥开发者说:社区首个支持LoongArch架构的操作系统构建之路
「龙蜥开发者说」第 9 期来了!开发者与开源社区相辅相成,相互成就,这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的,我们希望在这里让更多人看见技术的力量。本期故事,我们邀请了龙蜥社区开发者张文龙来分享「社区首个支持 LoongArch 架构的操作系统构建之路」。
欢迎阅读上期故事《龙蜥开发者说:首次触电,原来你是这样的龙蜥社区?| 第 8 期》。开发者说系长期活动,对于积极投稿、多次分享的童鞋,我们还有神秘大礼鼓励!诚邀开发者们分享真实体验,以文会友、共同学习、一起进步。
本期故事主角:张文龙,「 龙蜥社区 2021 年度突出贡献奖」获得者;龙蜥社区 LoongArch SIG 核心成员,负责 Anolis OS LoongArch 版本移植开发工作,专注于 LoongArch 架构下服务器操作系统及云计算生态建设。
回想起来,我从开始接触 Linux 到现在已经有好几年了。最早我的工作仅限于写写代码、跑一些服务或者为 Linux 做一些安全加固,从来没有考虑过自己使用的操作系统是怎么来的,毕竟 CentOS 等主流 Linux 系统可以免费使用,谁还会想着去重新构建一套呢,所以我也就抱着“已经有成品,何必再造轮子”的想法就这样一直工作着。但随着操作系统的迅速发展,国内自主指令集的诞生,新架构下的操作系统也提上议程。
以前使用 Linux,基本上是在 x86 架构下,但后来由于日常工作环境需要,所以要切换到 MIPS,再到现在的 LoongArch 架构下。相比之下,MIPS、LoongArch 的生态环境明显是比不过 x86 的。一开始使用的时候我很不习惯,因为以前在 x86 上能够安装并正常使用的各种软件包,现在在 MIPS、LoongArch 环境下却不能使用。因为刚开始使用,所以很不习惯,会有一种“摔键盘”的冲动,但冷静下来又不得不接受这样的现状。慢慢地我就想,既然我改变不了使用 MIPS、LoongArch 的现状,自己为什么不能尝试做做改变呢?
很快我就转变思路,从没有现成的就自己创造开始,到逐渐主动去尝试自行进行移植开发,从新鲜到习惯,有种“自己动手丰衣足食”的感觉。比如 MIPS,从零开始,边用边学,MIPS 寄存器、汇编、指令集,开始为 MIPS 造轮子、拓生态。“逢山开路、遇水架桥”,慢慢地可以直接安装的软件包变多了,生态也起来了。后来我们推出了自主 LoongArch 指令集,由于有了 MIPS 相关移植经验,拓宽 LoongArch 生态便没那么发愁了。
像在城市中铺路、像在河流上架桥、像把白纸写满黑字,新架构下生态建设速度明显加快。大概用了半年多的时间,LoongArch 架构下我们内部推出了基于 Debian 的桌面操作系统 Loongnix 20、基于 CentOS 的服务器操作系统 Loongnix Server 8.3 和基于 Alpine 的轻量级 Linux 发行版,直到现在 kernel、gcc、ffmpeg、golang 等核心组件已经在上游社区稳步推进,而且周边好多软件也逐步进入社区,LoongArch 架构下操作系统及云计算生态水平已经基本对齐并超过 MIPS,相信不久的将来,LoongArch 会在上游社区遍地开花。
(图/部分可在LoongArch下运行的云计算相关的组件)
仔细回顾,与其说以前是从事操作系统相关工作,不如说我好像只是一个部分环节的参与者,实际上并没有走过完整的流程。现在想想,第一次真正走完操作系统构建全套流程是从参与龙蜥社区 LoongArch SIG 组之后才开始的,这给了我一个很好的机会,让我尝试从 0 到 1 去做一个系统。记得最初要给社区提供一个 LoongArch 架构的最小编译环境,这个过程完全跟以往在 x86 平台下的操作系统重构不一样,要做的是一个全新指令集的编译环境,刚开始社区 LoongArch 架构下一个软件包都没有,有种无从下手的无力感,但后来静下心来查找资料、整理思路,自己梳理了构建流程,从构建 LFS(Linux From Scratch) 开始,到移植开发操作系统软件包、软件源创建、解依赖、软件签名,再到做 rootfs、最小 iso、qcow2,整个过程做了个遍,一步步实现了操作系统从 0 到 1 的转化。
(图/LoongArch 版本发布)
其实刚开始做的时候挺痛苦,因为最初所有工作不能并行,都是一环套一环,好多工作需要只能一个人参与,遇到问题只能自己去查资料,这方面的资料又不是很多,个别问题一卡好几天,只能硬着头皮自己做,直到后来其他人才慢慢参与了进来。Anolis LoongArch 版本也慢慢地从刚开始一片荒漠的样子,进步到可以使用,从最初的一个 rootfs 环境,到后来的预览版,再到正式版,就这样第一个支持 LoongArch 的社区操作系统诞生。
到现在为止,参与到龙蜥社区已经有一段时间了,在这里我能够感受到自身成长的速度,明白需要学习的还有很多,也非常感谢社区对我过去工作的认可。一路走来,深切的感受到这是一个比较开放的大家庭,希望能有更多的开源爱好者能参与进来,也希望大家能在使用 LoongArch 架构的同时积极为社区贡献自己的一份力量。如果发现有不支持的软件,也能积极地参与移植开发,并贡献自己的代码到龙蜥社区或者上游社区,共建 LoongArch 生态大家园,为早日实现多架构同源异构添砖加瓦,这样一个真正的支持自主指令集的操作系统才能越发蒸蒸日上。
(图/获得龙蜥社区 2021 年度「突出贡献奖」)
欢迎大家加入 LoongArch SIG 共建,SIG 地址:
https://openanolis.cn/sig/LoongArch
龙芯开源社区:
http://www.loongnix.cn/zh/龙芯容器镜像仓库:
https://cr.loongnix.cn/searchLoongnix 操作系统新闻发布:
http://www.loongnix.cn/zh/loongnix/
更多龙蜥开发者的故事,可阅读往期开发者说:
【1】首次触电,原来你是这样的龙蜥社区?| 第 8 期
【3】我的操作系统之路,坚持从实践中来,到实践中去 | 第6期
【5】学无止境的 Linux ,以及我的第一个定制版本发布之路 | 第4期
【6】聊一聊我技术生涯的“三次迭代” | 第 3 期
【7】从入坑到入门 | 第 2 期
—— 完 ——
加入龙蜥社群
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。欢迎开发者/用户加入龙蜥社区(OpenAnolis)交流,共同推进龙蜥社区的发展,一起打造一个活跃的、健康的开源操作系统生态!
关于龙蜥社区
龙蜥社区(OpenAnolis)由企事业单位、高等院校、科研单位、非营利性组织、个人等在自愿、平等、开源、协作的基础上组成的非盈利性开源社区。龙蜥社区成立于 2020 年 9 月,旨在构建一个开源、中立、开放的Linux 上游发行版社区及创新平台。
龙蜥社区成立的短期目标是开发龙蜥操作系统(Anolis OS)作为 CentOS 停服后的应对方案,构建一个兼容国际 Linux 主流厂商的社区发行版。中长期目标是探索打造一个面向未来的操作系统,建立统一的开源操作系统生态,孵化创新开源项目,繁荣开源生态。
目前,Anolis OS 8.6 已发布,更多龙蜥自研特性,支持 X86_64 、RISC-V、Arm64、LoongArch 架构,完善适配 Intel、兆芯、鲲鹏、龙芯等芯片,并提供全栈国密支持。
欢迎下载:
https://openanolis.cn/download
加入我们,一起打造面向未来的开源操作系统!
https://openanolis.cn