自己学的很杂,可惜都不是很精,不敢提及自己技术上的竞争力
但有个优点我自己很佩服我自己,即愿意为某个问题死磕到底
比如以前为了能安装 hackintosh,没日没夜折腾了半个月
或是以前为了让2006年的笔记本跑 i3wm,花了一个星期自己把显卡驱动适配到最新的 xorg(十分阴间的 sis 显卡,这个用过的人应该不多吧)
反映在工作上就是,截至目前我所遇到的问题最终都能解决
(当然希望这不是个 flag) :)
在开源世界的海洋里,Fedora 作为 Linux 发行版中的一艘巨轮,而 Fedora-V Force(FVF,多啦V盟)小队则是勇敢的航海家,专注于 RISC-V 构架下的 Linux 内核和 Fedora 发行版的移植与构建,也包括固件的开发工作。FVF 小队不仅为用户带来了丰富的 RISC-V 软硬件生态体验,还为 RISC-V 在 Linux 商业领域的成长注入了新的动力。今天,我们的主角,便是 FVF 小队的新星船员,64ilp32 果实能力拥有者 —— 张松松。让我们和他一起回顾寻找 RISC-V One Piece 大宝藏的历程吧!在 2024 RISC-V 中国峰会上,张松松正在向与会者介绍 Fedora for RV64 在多种硬件平台上的运行情况。此前,他还在 Open Hours 上分享过在 Fedora 构建 32 位 RISC-V 生态的见解(详情:https://youtu.be/A_qbHGuVK0A?t=1384),张松松计划会在未来参与更多的技术交流活动。初入开源:从 64ilp32 开启的精彩航程
张松松最开始切入的项目是 64ilp32,一般而言,在 RISC-V 的通用规范里面,64 位的架构会使用 64 位指针,32 位指针更多的被使用在 32 位架构上,64ilp32 则是一个在 64 架构上,使用 32 位指针的混合方案。他解释到:“64ilp32 是在 64 位架构上缩短指针和长整数的大小,比如在 4G 内存以下的设备上,64 位的指针没什么意义,反而会浪费一半的内存和缓存。所以即想要 RV64 指令架构的情况下,又想要如同32位一样的内存占用,64ilp32 就是这种既要又要的选择。”这也意味着,如果能将 Fedora 移植到 64ilp32,厂商同时可以利用 Fedora 的庞大软件生态,并享受到 64ilp32 带来的内存和性能双重优势。
在最初所需工具尚未成熟的情况下,他将 Fedora 移植到 RV32,为未来的 64ilp32 兼容奠定了基础。然而,移植 Fedora 到 RV32 并不是一帆风顺,最困难的莫过于处理成千上万的软件包依赖关系。
在开始阶段,所有的 rpm 软件包都不可用,需要具体分析每个依赖链条,决定如何‘破坏’这些链条以便逐步编译。为了一个包的编译成功,张松松不得不进行精细的路径调整。为了编译出可以在 RISC-V 上运行的 rpm & rpmbuild 环境,他专门编写了两个关键工具。其中一个采用 Linux From Scratch(LFS)方法生成 rpm & rpmbuild 环境,同时增添了 rpm 的支持;另外一个是读取 yaml,自动化编译大量的 Fedora 基础包,确保 Fedora for RV32 的复现。此外,面对某些软件包(如 rpm 和 audit 等)缺乏对 RV32 架构支持的挑战,他更是积极地进行手动移植,向社区提交多个 PR,为开源社区做出了实质性的贡献。得益于 64ilp32 兼容 32 位 RISC-V,张松松在 RV32 上的工作,成为了 Fedora for 64ilp32 适配的重要过渡阶段和前提基础。
张松松还积极参与到了将传统 64 位和 64ilp32 的 LVGL 音乐播放器 demo 移植到 CanMV-k230d 的工作,这一过程当中,他在 demo 中加入了性能监视器和动态/静态内存占用,使得两块 CanMV-k230d 在刷入镜像后能够自动运行 LVGL 音乐播放器,方便对比两个架构下的性能和内存差异。为了进一步展现 64ilp32 的优势,他基于传统 64 位和 64ilp32 编写了一系列的性能测试模块,结果显示,在 64ilp32 内核+32 位 rootfs 的环境下,内核链表的性能提升达到了20%,而内存占用又下降了30%。
走向成熟:Fedora for RV64 维护日常
Fedora for RV32 项目让张松松切实体会了搭建完整 Linux 发行版的挑战与成就,而 Fedora for RV64 项目则大大强化了他的调试能力。在该项目中,他投入了大量精力,从协助将 Fedora 38 维护到 Fedora 41,到确保其成功运行在各类开发板上,他都发挥了重要作用。然而,适配的过程并不总是顺利。由于不同厂商的开源政策和上游知识产权问题,某些关键组件,如 GPU,通常不公开源代码,这迫使他们不得不包含预编译的 blob。而这些 blob 与 Fedora 环境的兼容性问题就像是“水土不服”,“在我适配某个设备以运行 Fedora 上的 GNOME 时,花费了一周的时间,只能在不断的推测和验证中前行。”张松松回忆道。为 Fedora 打包的过程中,他也时常遇到了软件不支持 RISC-V 的挑战。幸运的是,随着 RISC-V 的发展,这种情况逐渐减少。作为一个庞大社区,Fedora 上游有许多鲜为人知的软件包,为了保持 Fedora for RV64 仓库的完整性,甚至一些只有几十个 star 的小众软件包的问题也需要解决。这经常迫使张松松直接阅读源代码,逐一攻克难题。截止目前,在 Fedora 41 的版本发布中,他已累计提交了 63 个 PR,通过无数次与社区的深入交流和沟通,持续完善这一系统。FVF小队合影:来不及了,快上船!
作为 Fedora 在 RISC-V 生态中的重要推动力量,张松松的贡献至关重要。而像他一样厉害的年轻开发者在 FVF 小队还有很多个。FVF 小队由红帽软件(北京)有限公司首席软件工程师、RISC-V 国际基金会大使、Fedora RISC-V 架构的核心领导者傅炜创建,致力于创造更完美的 Fedora 发行版并推动 RISC-V 的 Linux 开源软件生态。在张松松的技术成长中,傅炜大使以其丰富的经验和深厚的技术指导扮演了重要的引导角色。他帮助张松松跨入 Fedora 项目的大门,并在不断探索与创新的过程中给予坚定支持。与其他成员相互协作,共同攻克技术难题。FVF 小队为成员提供了技术交流、资源共享的平台,在这里,像张松松这样的成员能够充分发挥自己的技术专长,同时从其他成员身上获取灵感和支持。傅炜大使强烈呼吁,对 Linux 开源世界感兴趣和对 RISC-V开放架构感兴趣的同学们,赶快加入到 FVF 小队中来,一起学习成长,成为知名项目的 Maintainer!