專訪|聚元 PolyOS 操作系統(tǒng)社區(qū) 劉邁:破圈 RISC-V

開源之夏專訪持續(xù)開放中,歡迎已從開源之夏畢業(yè)或正在參與開源之夏活動(dòng)的學(xué)生、導(dǎo)師一同加入專訪行動(dòng),掃描文末二維碼填寫專訪問卷,與大家分享你眼中的開源之夏!
本期采訪人物是開源之夏 2023 活動(dòng)聚元 PolyOS 操作系統(tǒng)社區(qū)中選學(xué)生劉邁同學(xué),他所承擔(dān)的項(xiàng)目是為聚元 PolyOS 新增嵌入式圖形化支持。
項(xiàng)目鏈接:https://summer-ospp.ac.cn/org/prodetail/23f370310

# 關(guān)于劉邁
OSPP:請(qǐng)簡(jiǎn)單介紹一下自己。
劉邁:北京郵電大學(xué)電子工程學(xué)院在讀研二,研究生的方向接觸過各種嵌入式硬件,例如 Nvidia 的 Orin 和 Xavier NX,需要在這些端側(cè)設(shè)備部署優(yōu)化算法,但是對(duì)于硬件和系統(tǒng)層面并沒有過多深入。所以,這次開源之夏也給了我一個(gè)很好的機(jī)會(huì)進(jìn)一步學(xué)習(xí)。
OSPP:你曾有過開源代碼的經(jīng)驗(yàn),這次開源之夏和你之前的經(jīng)歷有什么區(qū)別?
劉邁:
之前的開源經(jīng)歷:
之前的代碼開源來源于一次 SCI 期刊論文發(fā)表。我做了目標(biāo)檢測(cè)的算法創(chuàng)新,而為了讓對(duì)論文感興趣的讀者更好的復(fù)現(xiàn)算法結(jié)果,把算法的訓(xùn)練、測(cè)試代碼和一些模型權(quán)重進(jìn)行了開源,但是并不涉及到代碼倉庫的 PR。
本次開源之夏:
這次參與了一個(gè)較為成熟的聚元 PolyOS 操作系統(tǒng)社區(qū),對(duì)于社區(qū)當(dāng)中的需求進(jìn)行了實(shí)現(xiàn),并提交了 PR,最后審核代碼進(jìn)行合并??梢哉f第一次完整體驗(yàn)了參與開源項(xiàng)目的所有流程,讓我也得到了學(xué)習(xí)!
# 參與開源和開源之夏
OSPP:在開源之夏項(xiàng)目申請(qǐng)過程中,你是如何選擇開源項(xiàng)目的?有考慮哪些因素?做了哪些準(zhǔn)備?
劉邁:
基于 RISC-V 的國(guó)產(chǎn)化進(jìn)程
因?yàn)榻┠晷酒且粋€(gè)比較熱的賽道,國(guó)產(chǎn)化芯片的需求比較大,RISC-V 實(shí)際上是提供了一個(gè)開源的指令集解決方案。

它的用戶基礎(chǔ)比較大,社區(qū)相對(duì)比較成熟,在這個(gè)基礎(chǔ)上進(jìn)行加工創(chuàng)造,可以很好的解決卡脖子的技術(shù)難題,主流的 Linux 系統(tǒng)內(nèi)核也支持 RISC-V,例如,華為的 openEuler 就是國(guó)內(nèi)首個(gè)支持 RISC-V 架構(gòu)的 Linux 發(fā)行版。
我的前期準(zhǔn)備
聚元 PolyOS 是在 AloT 嵌入式場(chǎng)景上,基于 RISC-V 構(gòu)建的定制化 Linux 系統(tǒng)。所以,這次參與社區(qū)的開源項(xiàng)目,也算是能參與到技術(shù)前沿之中,為其中的難題貢獻(xiàn)自己的智慧,在參與項(xiàng)目之前呢,我也做了充足的調(diào)研,對(duì)于聚元 PolyOS、Yocto和 meta-qt5 進(jìn)行了一定的了解,以便之后更快的上手項(xiàng)目開發(fā)。
為了更好地理解 Yocto 和 meta-qt5 的工作原理,我開始嘗試在本地搭建開發(fā)環(huán)境,并構(gòu)建 poky 系統(tǒng)作為 Yocto 框架的入門。剛開始的時(shí)候,我遇到了一些困難,因?yàn)槲覍?duì)于 Yocto 的層和任務(wù)的概念還不夠清晰,同時(shí) meta-qt5 的配置和使用也讓我感到有些迷惑。
在查閱相關(guān)文檔和博客進(jìn)行入門之后,才對(duì)整體的項(xiàng)目開發(fā)有了一個(gè)大概的了解。

在結(jié)束前期調(diào)研和初步嘗試之后,對(duì)于以下概念有了更深入的了解。
Yocto Project
BitBake
OpenEmBedded
meta-qt5
這些是我完成進(jìn)一步開發(fā)的基礎(chǔ)。
OSPP:請(qǐng)簡(jiǎn)單介紹一下你所承擔(dān)的開源項(xiàng)目。
劉邁:
我的開源項(xiàng)目分工
聚元 PolyOS 主要基于 RISC-V 架構(gòu)和面向嵌入式場(chǎng)景,社區(qū)沒有針對(duì) RISC-V 架構(gòu)的圖形化支持,因此交給我的內(nèi)容任務(wù)如下:
在聚元 PolyOS 上定制支持圖形化的 meta-qt5
目標(biāo)機(jī)器上自帶測(cè)試?yán)?/p>
在 QEMU 上進(jìn)行演示
QT 具有幾個(gè)優(yōu)點(diǎn):
跨平臺(tái)支持
易于使用的圖形化界面
高度可定制化
性能強(qiáng)大
如果能夠在聚元 PolyOS 中支持 QT5,則是為以后的系統(tǒng)軟件二次開發(fā)提供了便利。就像搭積木一樣,我提供了基礎(chǔ)的工具鏈支持和例程,用戶只需要學(xué)會(huì) QT,而不需要學(xué)習(xí)系統(tǒng)級(jí)別的代碼,就可以實(shí)現(xiàn)在聚元 PolyOS 上進(jìn)行代碼二次開發(fā)。這就是一個(gè)簡(jiǎn)化開發(fā)難度的過程,在往低代碼開發(fā)上走。
OSPP:在開發(fā)過程中遇到的挑戰(zhàn)有哪些?是如何克服它們的?
劉邁:
ARM 和 RISC-V 的第一次交鋒
盡管之前我在實(shí)驗(yàn)室接觸過 Linux 系統(tǒng)下程序編譯,但是對(duì)于系統(tǒng)編譯卻是第一次。
在編譯之前,需要電腦具有較高的性能,我的內(nèi)存是 16G,存儲(chǔ)為整個(gè)系統(tǒng)分配了 200G,這樣才算比較完整的能夠走下來整個(gè)流程。因?yàn)槲沂褂昧?Mac 的虛擬機(jī)進(jìn)行開發(fā),Mac 是 M2 芯片,ARM 架構(gòu),主流編譯配置是在 x86 架構(gòu)下通過 Yocto 框架構(gòu)建嵌入式 Linux 發(fā)行版,也導(dǎo)致在編譯過程當(dāng)中,會(huì)遇到一些配置包不兼容的問題,需要進(jìn)行交叉編譯或者對(duì)一些底層進(jìn)行改進(jìn)。
有時(shí)候,會(huì)因?yàn)橐恍┡渲梦募蛙浖螺d不下來而焦頭爛額,會(huì)親自到成千上百的配置包中尋找我所需要的,進(jìn)一步下載下來。

當(dāng)我抽絲剝繭,把其中的一些小問題解決了以后,看到如下的命令行界面能夠成功顯示,心里其實(shí)相當(dāng)有成就感。

圖形化的前夜
但是打開了命令行界面,又遇到了一個(gè)小問題,就是聚元 PolyOS 無法打開圖形化界面,它本身應(yīng)該也支持像 Linux 一樣的可視化桌面,但是卻一直提示我如下錯(cuò)誤:

在這個(gè)問題上卡了一段時(shí)間,也和導(dǎo)師交流了下,當(dāng)時(shí)真的還挺難熬的,因?yàn)檫M(jìn)入不了圖形化界面,我后續(xù)的程序開發(fā)也就難以進(jìn)行。最后找到一個(gè)方法來巧妙的解決,也就是通過把聚元 PolyOS 鏡像作為 VNC 服務(wù)端,然后把虛擬機(jī) Ubuntu 系統(tǒng)當(dāng)作 VNC 客戶端,在 VNC Viewer 中訪問本地 Localhost 端口,就可以打開系統(tǒng)的圖形化界面。
下一步,沖鋒
然后通過把 meta-qt5 作為一個(gè) meta-layer 嵌入到系統(tǒng)中,調(diào)試相關(guān)的 QT5 工具鏈和依賴支持,最后成功編譯出來一個(gè)支持 QT5 工具鏈和例程的系統(tǒng)文件。
在看到提交的 PR 文件已經(jīng)被合并的時(shí)候,心里的自豪感油然而生。

OSPP:請(qǐng)介紹一下你眼中的聚元?PolyOS 操作系統(tǒng)社區(qū)。
劉邁:
初識(shí)聚元 PolyOS
聚元 PolyOS 社區(qū)給我的感覺就是前沿、有創(chuàng)造性。社區(qū)一直在積極推動(dòng)基于 RISC-V 體系架構(gòu)的定制化系統(tǒng)構(gòu)建。針對(duì)一些常見的需求,都已經(jīng)有支持或者通過 PR 來招募開發(fā)者解決問題。
硬件生態(tài)
在硬件板卡上,支持不同的 RISC-V 指令集板卡。例如 Xiangshan、Kendryte 和 VisionFive2 板卡等六種板卡,它們分別對(duì)于一些復(fù)雜的嵌入式計(jì)算任務(wù)、AI 部署加速和物聯(lián)網(wǎng)應(yīng)用等有很好的支持和優(yōu)化,在上面部署聚元 PolyOS 是社區(qū)擴(kuò)大影響力的第一步。
軟件生態(tài)
在軟件生態(tài)上,集成了如 mnn、ncnn、tensorflow_lite 這樣的 ai 框架。并且,也做如寒武紀(jì)思元 220 基于 RISC-V 架構(gòu)下的移植,能夠很好的支持一些常見軟件和算法的構(gòu)建和運(yùn)行,在當(dāng)前國(guó)產(chǎn)化的大潮中獨(dú)占鰲頭。
良好的入門指南
社區(qū)對(duì)于一些新加入的同學(xué)有開發(fā)者文檔的支持。對(duì)新人比較包容,鼓勵(lì)大家積極參與到開源項(xiàng)目中,貢獻(xiàn)自己的一份力。我的導(dǎo)師也會(huì)給我及時(shí)的幫助,在我遇到一些難度較大的問題時(shí),能夠想辦法和我一起解決,讓我真正感受到了團(tuán)隊(duì)作戰(zhàn)的魅力。
聚元 PolyOS 操作系統(tǒng)社區(qū)
聚元 PolyOS 是面向 RISC-V 體系架構(gòu)基于 yocto 構(gòu)建的 AIoT 嵌入式場(chǎng)景 Linux 系統(tǒng)。本系統(tǒng)以 yocto metadata 層為粒度進(jìn)行定制和組合,并通過 yml 聲明硬件描述、應(yīng)用場(chǎng)景以及打包規(guī)則,實(shí)現(xiàn)一站式快速構(gòu)建場(chǎng)景化智能應(yīng)用鏡像。當(dāng)前支持 6 款 RISC-V 硬件、多款嵌入式智能推理框架以及多內(nèi)核鏡像構(gòu)建和部署。未來應(yīng)對(duì) RISC-V 板卡標(biāo)準(zhǔn)不統(tǒng)一、自定義指令造成硬件碎片化、智能操作系統(tǒng)快速構(gòu)建等挑戰(zhàn)。
倉庫地址:https://gitee.com/riscv-raios
OSPP:你和導(dǎo)師以及社區(qū)其他成員的交流如何,你在其中收獲了哪些寶貴的經(jīng)驗(yàn)和建議?
劉邁:
是導(dǎo)師,也是朋友
我和導(dǎo)師的關(guān)系亦師亦友,初次入門的時(shí)候,會(huì)給我推薦高質(zhì)量的教學(xué)視頻和專欄。每次遇到問題難以解決的時(shí)候,都會(huì)盡力的幫我想辦法,在交流效率上非常高,有問題都能得到及時(shí)的反饋。在某些關(guān)鍵的代碼優(yōu)化和改進(jìn)上,甚至也會(huì)給我很大的啟發(fā),這些都讓我很感激,遇到一個(gè)好的導(dǎo)師真的可以幫助你加速項(xiàng)目的開發(fā)和更高質(zhì)量的完成任務(wù)。


破圈重塑
如果一定要給新入門的開源小白提一些建議的話,就是在參與項(xiàng)目之前一定要和導(dǎo)師有充分的交流,了解項(xiàng)目的開發(fā)細(xì)節(jié),如果之前做過類似的項(xiàng)目,可以在此基礎(chǔ)上,進(jìn)行適當(dāng)?shù)臄U(kuò)展,在自己技能樹的基礎(chǔ)上,拓展邊界,破開技術(shù)圈層,這樣才可以以最低的成本把看似難以解決的挑戰(zhàn)和難題迎刃而解
OSPP:今后是否打算繼續(xù)參與開源社區(qū)或開源項(xiàng)目?為什么?
劉邁:今后當(dāng)然會(huì)繼續(xù)參加開源。這次活動(dòng)有幸參加了聚元 PolyOS 社區(qū)的項(xiàng)目,并且也能夠通過提 PR,將自己的功能進(jìn)行實(shí)際的上線。一下子為四個(gè)倉庫提了 PR,還是很有成就感的,后續(xù)會(huì)積極維護(hù)這個(gè)項(xiàng)目,也希望認(rèn)識(shí)更多熱愛開源的小伙伴。
# 寄語
OSPP:對(duì)于新手入門開源項(xiàng)目有什么建議呢?
劉邁:新手入門項(xiàng)目不要一口吃一個(gè)胖子,接觸完全不熟悉的技術(shù),應(yīng)該是從熟悉的技術(shù)入手,通過相對(duì)較少的學(xué)習(xí)路徑,進(jìn)入一個(gè)相對(duì)較新的領(lǐng)域,完成自己能力邊界的拓展,是一個(gè)逐漸破圈的過程,在這個(gè)過程中,你也可以收獲到很強(qiáng)的成就感。
OSPP:社區(qū)的導(dǎo)師對(duì)你評(píng)價(jià)很高,完成任務(wù)代碼量也很大,你是如何做到高質(zhì)量完成任務(wù)的?
劉邁:其實(shí)和開源社區(qū)導(dǎo)師交流的過程,第一步在于清晰詳細(xì)的了解項(xiàng)目需求,以此為基礎(chǔ),來進(jìn)一步完成項(xiàng)目。如果有問題難以解決,需要從多個(gè)角度思考問題,甚至于跳出你本身開發(fā)的代碼,思考部署機(jī)器的差異和積極借鑒前人的思路。如果還是解決不了,要積極的和社區(qū)導(dǎo)師和相關(guān)開發(fā)人員進(jìn)行溝通,通過團(tuán)隊(duì)的力量來重點(diǎn)擊破疑難問題。
OSPP:據(jù)了解,你所在的高校學(xué)生參與開源的熱情相對(duì)來說還是比較高的,你對(duì)高校學(xué)生參與開源怎么看?
劉邁:北京郵電大學(xué)對(duì)于人才的培養(yǎng)因材施教,對(duì)于像我一樣學(xué)習(xí)工科的同學(xué)來說,不同的同學(xué)都可以找到自己喜歡的技術(shù)方向并深入進(jìn)去,大家對(duì)于技術(shù)有著異于平常的熱情。據(jù)我了解,之前參與開源的同學(xué)有的已經(jīng)成為開源之夏校園布道師,在為開源之夏擴(kuò)大影響力貢獻(xiàn)自己的一份力。我對(duì)于高校學(xué)生參與開源的想法是,要積極的參與產(chǎn)業(yè)界的項(xiàng)目,通過將自己的所學(xué)付諸實(shí)踐,而不是停留在枯燥無味的理論學(xué)習(xí)階段,發(fā)現(xiàn)真實(shí)的需求并加以解決,真正的為公司和社區(qū)解決生產(chǎn)過程中的一些難題。
OSPP:有什么話想對(duì)計(jì)劃參加開源之夏活動(dòng)的學(xué)弟學(xué)妹們說?
劉邁:開源對(duì)于很多人來說都是第一次。要勇于邁出第一步,這不僅是可以參與到實(shí)際產(chǎn)業(yè)界的生產(chǎn)過程當(dāng)中,也可以為自己的履歷增添色彩。在申請(qǐng)項(xiàng)目的時(shí)候,不要停留在理論分析的表層,而是需要深入分析,從代碼實(shí)現(xiàn)、優(yōu)化等層面給出可操作的建議,這樣的申請(qǐng)書在導(dǎo)師眼里往往是眼前一亮。通過你前期的調(diào)研和資料搜集,加以適當(dāng)?shù)募夹g(shù)實(shí)現(xiàn),才是一篇高質(zhì)量的項(xiàng)目申請(qǐng)書。
END
專欄編輯:大夢(mèng)
校對(duì):校大山、劉邁
制圖:GoodWhite

專欄投稿請(qǐng)聯(lián)系開源小助手:kaiyuanzhixia 或?qū)诰庉嫞篐ungryfish34(備注“專欄投稿”加速通過),或填寫下方專訪信息收集問卷。
