专访|聚元 PolyOS 操作系统社区 刘迈:破圈 RISC-V

开源之夏专访持续开放中,欢迎已从开源之夏毕业或正在参与开源之夏活动的学生、导师一同加入专访行动,扫描文末二维码填写专访问卷,与大家分享你眼中的开源之夏!
本期采访人物是开源之夏 2023 活动聚元 PolyOS 操作系统社区中选学生刘迈同学,他所承担的项目是为聚元 PolyOS 新增嵌入式图形化支持。
项目链接:https://summer-ospp.ac.cn/org/prodetail/23f370310

# 关于刘迈
OSPP:请简单介绍一下自己。
刘迈:北京邮电大学电子工程学院在读研二,研究生的方向接触过各种嵌入式硬件,例如 Nvidia 的 Orin 和 Xavier NX,需要在这些端侧设备部署优化算法,但是对于硬件和系统层面并没有过多深入。所以,这次开源之夏也给了我一个很好的机会进一步学习。
OSPP:你曾有过开源代码的经验,这次开源之夏和你之前的经历有什么区别?
刘迈:
之前的开源经历:
之前的代码开源来源于一次 SCI 期刊论文发表。我做了目标检测的算法创新,而为了让对论文感兴趣的读者更好的复现算法结果,把算法的训练、测试代码和一些模型权重进行了开源,但是并不涉及到代码仓库的 PR。
本次开源之夏:
这次参与了一个较为成熟的聚元 PolyOS 操作系统社区,对于社区当中的需求进行了实现,并提交了 PR,最后审核代码进行合并。可以说第一次完整体验了参与开源项目的所有流程,让我也得到了学习!
# 参与开源和开源之夏
OSPP:在开源之夏项目申请过程中,你是如何选择开源项目的?有考虑哪些因素?做了哪些准备?
刘迈:
基于 RISC-V 的国产化进程
因为近些年芯片是一个比较热的赛道,国产化芯片的需求比较大,RISC-V 实际上是提供了一个开源的指令集解决方案。

它的用户基础比较大,社区相对比较成熟,在这个基础上进行加工创造,可以很好的解决卡脖子的技术难题,主流的 Linux 系统内核也支持 RISC-V,例如,华为的 openEuler 就是国内首个支持 RISC-V 架构的 Linux 发行版。
我的前期准备
聚元 PolyOS 是在 AloT 嵌入式场景上,基于 RISC-V 构建的定制化 Linux 系统。所以,这次参与社区的开源项目,也算是能参与到技术前沿之中,为其中的难题贡献自己的智慧,在参与项目之前呢,我也做了充足的调研,对于聚元 PolyOS、Yocto和 meta-qt5 进行了一定的了解,以便之后更快的上手项目开发。
为了更好地理解 Yocto 和 meta-qt5 的工作原理,我开始尝试在本地搭建开发环境,并构建 poky 系统作为 Yocto 框架的入门。刚开始的时候,我遇到了一些困难,因为我对于 Yocto 的层和任务的概念还不够清晰,同时 meta-qt5 的配置和使用也让我感到有些迷惑。
在查阅相关文档和博客进行入门之后,才对整体的项目开发有了一个大概的了解。

在结束前期调研和初步尝试之后,对于以下概念有了更深入的了解。
Yocto Project
BitBake
OpenEmBedded
meta-qt5
这些是我完成进一步开发的基础。
OSPP:请简单介绍一下你所承担的开源项目。
刘迈:
我的开源项目分工
聚元 PolyOS 主要基于 RISC-V 架构和面向嵌入式场景,社区没有针对 RISC-V 架构的图形化支持,因此交给我的内容任务如下:
在聚元 PolyOS 上定制支持图形化的 meta-qt5
目标机器上自带测试例程
在 QEMU 上进行演示
QT 具有几个优点:
跨平台支持
易于使用的图形化界面
高度可定制化
性能强大
如果能够在聚元 PolyOS 中支持 QT5,则是为以后的系统软件二次开发提供了便利。就像搭积木一样,我提供了基础的工具链支持和例程,用户只需要学会 QT,而不需要学习系统级别的代码,就可以实现在聚元 PolyOS 上进行代码二次开发。这就是一个简化开发难度的过程,在往低代码开发上走。
OSPP:在开发过程中遇到的挑战有哪些?是如何克服它们的?
刘迈:
ARM 和 RISC-V 的第一次交锋
尽管之前我在实验室接触过 Linux 系统下程序编译,但是对于系统编译却是第一次。
在编译之前,需要电脑具有较高的性能,我的内存是 16G,存储为整个系统分配了 200G,这样才算比较完整的能够走下来整个流程。因为我使用了 Mac 的虚拟机进行开发,Mac 是 M2 芯片,ARM 架构,主流编译配置是在 x86 架构下通过 Yocto 框架构建嵌入式 Linux 发行版,也导致在编译过程当中,会遇到一些配置包不兼容的问题,需要进行交叉编译或者对一些底层进行改进。
有时候,会因为一些配置文件和软件包下载不下来而焦头烂额,会亲自到成千上百的配置包中寻找我所需要的,进一步下载下来。

当我抽丝剥茧,把其中的一些小问题解决了以后,看到如下的命令行界面能够成功显示,心里其实相当有成就感。

图形化的前夜
但是打开了命令行界面,又遇到了一个小问题,就是聚元 PolyOS 无法打开图形化界面,它本身应该也支持像 Linux 一样的可视化桌面,但是却一直提示我如下错误:

在这个问题上卡了一段时间,也和导师交流了下,当时真的还挺难熬的,因为进入不了图形化界面,我后续的程序开发也就难以进行。最后找到一个方法来巧妙的解决,也就是通过把聚元 PolyOS 镜像作为 VNC 服务端,然后把虚拟机 Ubuntu 系统当作 VNC 客户端,在 VNC Viewer 中访问本地 Localhost 端口,就可以打开系统的图形化界面。
下一步,冲锋
然后通过把 meta-qt5 作为一个 meta-layer 嵌入到系统中,调试相关的 QT5 工具链和依赖支持,最后成功编译出来一个支持 QT5 工具链和例程的系统文件。
在看到提交的 PR 文件已经被合并的时候,心里的自豪感油然而生。

OSPP:请介绍一下你眼中的聚元 PolyOS 操作系统社区。
刘迈:
初识聚元 PolyOS
聚元 PolyOS 社区给我的感觉就是前沿、有创造性。社区一直在积极推动基于 RISC-V 体系架构的定制化系统构建。针对一些常见的需求,都已经有支持或者通过 PR 来招募开发者解决问题。
硬件生态
在硬件板卡上,支持不同的 RISC-V 指令集板卡。例如 Xiangshan、Kendryte 和 VisionFive2 板卡等六种板卡,它们分别对于一些复杂的嵌入式计算任务、AI 部署加速和物联网应用等有很好的支持和优化,在上面部署聚元 PolyOS 是社区扩大影响力的第一步。
软件生态
在软件生态上,集成了如 mnn、ncnn、tensorflow_lite 这样的 ai 框架。并且,也做如寒武纪思元 220 基于 RISC-V 架构下的移植,能够很好的支持一些常见软件和算法的构建和运行,在当前国产化的大潮中独占鳌头。
良好的入门指南
社区对于一些新加入的同学有开发者文档的支持。对新人比较包容,鼓励大家积极参与到开源项目中,贡献自己的一份力。我的导师也会给我及时的帮助,在我遇到一些难度较大的问题时,能够想办法和我一起解决,让我真正感受到了团队作战的魅力。
聚元 PolyOS 操作系统社区
聚元 PolyOS 是面向 RISC-V 体系架构基于 yocto 构建的 AIoT 嵌入式场景 Linux 系统。本系统以 yocto metadata 层为粒度进行定制和组合,并通过 yml 声明硬件描述、应用场景以及打包规则,实现一站式快速构建场景化智能应用镜像。当前支持 6 款 RISC-V 硬件、多款嵌入式智能推理框架以及多内核镜像构建和部署。未来应对 RISC-V 板卡标准不统一、自定义指令造成硬件碎片化、智能操作系统快速构建等挑战。
仓库地址:https://gitee.com/riscv-raios
OSPP:你和导师以及社区其他成员的交流如何,你在其中收获了哪些宝贵的经验和建议?
刘迈:
是导师,也是朋友
我和导师的关系亦师亦友,初次入门的时候,会给我推荐高质量的教学视频和专栏。每次遇到问题难以解决的时候,都会尽力的帮我想办法,在交流效率上非常高,有问题都能得到及时的反馈。在某些关键的代码优化和改进上,甚至也会给我很大的启发,这些都让我很感激,遇到一个好的导师真的可以帮助你加速项目的开发和更高质量的完成任务。


破圈重塑
如果一定要给新入门的开源小白提一些建议的话,就是在参与项目之前一定要和导师有充分的交流,了解项目的开发细节,如果之前做过类似的项目,可以在此基础上,进行适当的扩展,在自己技能树的基础上,拓展边界,破开技术圈层,这样才可以以最低的成本把看似难以解决的挑战和难题迎刃而解
OSPP:今后是否打算继续参与开源社区或开源项目?为什么?
刘迈:今后当然会继续参加开源。这次活动有幸参加了聚元 PolyOS 社区的项目,并且也能够通过提 PR,将自己的功能进行实际的上线。一下子为四个仓库提了 PR,还是很有成就感的,后续会积极维护这个项目,也希望认识更多热爱开源的小伙伴。
# 寄语
OSPP:对于新手入门开源项目有什么建议呢?
刘迈:新手入门项目不要一口吃一个胖子,接触完全不熟悉的技术,应该是从熟悉的技术入手,通过相对较少的学习路径,进入一个相对较新的领域,完成自己能力边界的拓展,是一个逐渐破圈的过程,在这个过程中,你也可以收获到很强的成就感。
OSPP:社区的导师对你评价很高,完成任务代码量也很大,你是如何做到高质量完成任务的?
刘迈:其实和开源社区导师交流的过程,第一步在于清晰详细的了解项目需求,以此为基础,来进一步完成项目。如果有问题难以解决,需要从多个角度思考问题,甚至于跳出你本身开发的代码,思考部署机器的差异和积极借鉴前人的思路。如果还是解决不了,要积极的和社区导师和相关开发人员进行沟通,通过团队的力量来重点击破疑难问题。
OSPP:据了解,你所在的高校学生参与开源的热情相对来说还是比较高的,你对高校学生参与开源怎么看?
刘迈:北京邮电大学对于人才的培养因材施教,对于像我一样学习工科的同学来说,不同的同学都可以找到自己喜欢的技术方向并深入进去,大家对于技术有着异于平常的热情。据我了解,之前参与开源的同学有的已经成为开源之夏校园布道师,在为开源之夏扩大影响力贡献自己的一份力。我对于高校学生参与开源的想法是,要积极的参与产业界的项目,通过将自己的所学付诸实践,而不是停留在枯燥无味的理论学习阶段,发现真实的需求并加以解决,真正的为公司和社区解决生产过程中的一些难题。
OSPP:有什么话想对计划参加开源之夏活动的学弟学妹们说?
刘迈:开源对于很多人来说都是第一次。要勇于迈出第一步,这不仅是可以参与到实际产业界的生产过程当中,也可以为自己的履历增添色彩。在申请项目的时候,不要停留在理论分析的表层,而是需要深入分析,从代码实现、优化等层面给出可操作的建议,这样的申请书在导师眼里往往是眼前一亮。通过你前期的调研和资料搜集,加以适当的技术实现,才是一篇高质量的项目申请书。
END
专栏编辑:大梦
校对:校大山、刘迈
制图:GoodWhite

专栏投稿请联系开源小助手:kaiyuanzhixia 或专栏编辑:Hungryfish34(备注“专栏投稿”加速通过),或填写下方专访信息收集问卷。
