加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 導(dǎo)言
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

一名上海高中生是如何成長(zhǎng)為L(zhǎng)inux內(nèi)核多個(gè)模塊的maintainer的?

2021/06/28
913
閱讀需 7 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

當(dāng)您打開(kāi)Linux內(nèi)核源代碼的maintainer文件,在里面搜索一個(gè)名字Jiaxun Yang,您會(huì)發(fā)現(xiàn),他是內(nèi)核多個(gè)模塊的maintainer:

 

您一定會(huì)以為L(zhǎng)inux內(nèi)核龍芯架構(gòu)的maintainer,是一位資深的年長(zhǎng)工程師。可是,接下來(lái)Linux閱碼場(chǎng)將向您揭曉的Jiaxun Yang的故事,可能會(huì)讓您目瞪口呆。

導(dǎo)言

本期采訪對(duì)象:楊嘉勛,中國(guó)上海某高中應(yīng)屆畢業(yè)生,長(zhǎng)居于中國(guó)杭州。

當(dāng)Linux閱碼場(chǎng)聯(lián)系到嘉勛的時(shí)候,他正好走出高中校園,在完成自己的畢業(yè)旅行。

我們非常幸運(yùn)地采訪到了嘉勛,并希望通過(guò)分享嘉勛的Linux故事,激勵(lì)更多優(yōu)秀的人們積極投身操作系統(tǒng)的研發(fā)中來(lái),收獲技術(shù)的喜悅和人生的精彩。

1. Linux閱碼場(chǎng):你是什么時(shí)候開(kāi)始接觸Linux(內(nèi)核)的?

嘉勛:

接觸Linux應(yīng)該是小學(xué)四五年級(jí)的時(shí)候,當(dāng)時(shí)沉迷于用虛擬機(jī)安裝各種操作系統(tǒng),偶然從網(wǎng)上了解到了Linux操作系統(tǒng),對(duì)其開(kāi)源開(kāi)放的模式感到好奇,于是下載安裝了Ubuntu。后來(lái)越來(lái)越著迷,在理解了各種基本操作之后之后就把Linux安裝到筆記本上作為日用操作系統(tǒng),慢慢地積累了不少各種Linux知識(shí)。后來(lái)初三的時(shí)候換了臺(tái)聯(lián)想的IdeaPad筆記本,當(dāng)時(shí)遇到無(wú)線網(wǎng)卡無(wú)法使用的問(wèn)題,研究了一段時(shí)間發(fā)現(xiàn)問(wèn)題的根源出在內(nèi)核rfkill組件。當(dāng)時(shí)在不少論壇QQ群求解都無(wú)人能回答,就打算自己啃這個(gè)硬骨頭,讀起了ideapad-laptop ACPI驅(qū)動(dòng)的代碼。當(dāng)時(shí)我對(duì)C語(yǔ)言已經(jīng)有基本的掌握,但大量不理解的名詞與邏輯仍然是是攔路虎。差不多邊讀代碼邊搜索了一個(gè)月,慢慢理解了內(nèi)核驅(qū)動(dòng)的套路,做了一個(gè)patch并提交到upstream。

2. Linux閱碼場(chǎng):你怎么進(jìn)入Linux開(kāi)發(fā)的,為什么選擇這個(gè)?

嘉勛:

之后因?yàn)榕既坏臋C(jī)會(huì)搞到了一臺(tái)龍芯的機(jī)器,想裝Debian系統(tǒng),發(fā)現(xiàn)主線內(nèi)核對(duì)他的支持很差,于是就想著折騰折騰。這一折騰就深似海,一頭鉆進(jìn)去出不來(lái)了。各種寫(xiě)驅(qū)動(dòng)抓debug交patch。后來(lái)也因?yàn)樵谏鐓^(qū)的活動(dòng)得到了在龍芯生態(tài)里的企業(yè)航天龍夢(mèng)實(shí)習(xí)的機(jī)會(huì),在師傅陳華才博士的帶領(lǐng)下對(duì)Linux的理解深入了不少,一路繼續(xù)玩下去了。至于為什么選擇這個(gè),我覺(jué)得是Linux選擇了我~他有問(wèn)題需要我去解決。我也不是只做Linux開(kāi)發(fā),平時(shí)也會(huì)參與一些其他的開(kāi)源項(xiàng)目或者自己寫(xiě)點(diǎn)小玩意玩。

3. Linux閱碼場(chǎng):你在內(nèi)核領(lǐng)域,都做了哪些事情?

嘉勛:

X86各種平臺(tái)驅(qū)動(dòng)隨機(jī)修點(diǎn)問(wèn)題。MIPS這里也是隨機(jī)修修補(bǔ)補(bǔ),整理整理代碼,寫(xiě)寫(xiě)驅(qū)動(dòng),龍芯3A4000 CPU和7A1000橋片在上游的bring up,龍芯KVM的開(kāi)發(fā)和upstream。實(shí)習(xí)期間搞了龍芯7A1000的GPU驅(qū)動(dòng)和3A4000的睿頻機(jī)制,不過(guò)這樣那樣的原因?qū)嵙?xí)期間的工作沒(méi)能upstream。

4. Linux閱碼場(chǎng):你做內(nèi)核開(kāi)發(fā)的成就感來(lái)自哪里?

嘉勛:

It works。別笑,單單是It works就能給我很大的成就感。我從小就對(duì)各種機(jī)械,各種工業(yè)產(chǎn)品很感興趣,據(jù)說(shuō)兩三歲的時(shí)候看著空調(diào)外機(jī)的風(fēng)扇轉(zhuǎn)動(dòng)就能發(fā)幾小時(shí)呆。我一直希望成為一個(gè)去解決各種問(wèn)題,創(chuàng)造產(chǎn)品的工程師。內(nèi)核可以說(shuō)是軟件硬件的邊界,我從內(nèi)核俯視可以看到盤(pán)根錯(cuò)節(jié)的電路構(gòu)建的硬件,仰望可以看到幾代人層層抽象刻畫(huà)的用戶態(tài)軟件,能為這對(duì)偉大的結(jié)晶構(gòu)建橋梁共同完成整個(gè)計(jì)算機(jī)系統(tǒng),我覺(jué)得很榮幸。

5. Linux閱碼場(chǎng):第一次提交patch的過(guò)程,對(duì)初學(xué)者有什么建議?

嘉勛:

因?yàn)槲沂荓oongson64的Maintainer,遇到first patch的機(jī)會(huì)還是挺多的,最近遇到的比較多的問(wèn)題是大家對(duì)于patch提交前檢測(cè)的流程不是很清楚。除了基本的功能性測(cè)試以及老生常談的checkpatch.pl之外有些子系統(tǒng)還會(huì)有額外的要求,比如涉及DeviceTree的make dt_binding_check。建議大家在提交之前仔細(xì)閱讀一下內(nèi)核的文檔部分,除了子系統(tǒng)要求之外里面對(duì)于郵件客戶端的配置以及基本工作流程的介紹都還是很實(shí)用的。如果沒(méi)有時(shí)間壓力的話在提交第一個(gè)補(bǔ)丁之前翻閱一下子系統(tǒng)郵件列表的歷史信件也有助于快速搞清楚“潛規(guī)則”,避開(kāi)常見(jiàn)的坑。

6. Linux閱碼場(chǎng):未來(lái)有什么計(jì)劃?

嘉勛:

繼續(xù)上學(xué),繼續(xù)寫(xiě)代碼玩電腦,如果以后能成為一個(gè)工程師參與一些激動(dòng)人心的項(xiàng)目那再好不過(guò)了。

Linux閱碼場(chǎng)隨后在Linux內(nèi)核源碼中發(fā)現(xiàn)了嘉勛的許多patch:

最早地可以追溯到2017年:

Linux閱碼場(chǎng)無(wú)意分享任何勵(lì)志故事,更無(wú)意烹飪?nèi)魏涡撵`雞湯,我們只是希望讓更多的人們相信:“我能行”。我們同時(shí)也衷心地祝愿嘉勛同學(xué)在Linux這條路上越走越遠(yuǎn),收獲更多的“It works”。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

專業(yè)的Linux技術(shù)社區(qū)和Linux操作系統(tǒng)學(xué)習(xí)平臺(tái),內(nèi)容涉及Linux內(nèi)核,Linux內(nèi)存管理,Linux進(jìn)程管理,Linux文件系統(tǒng)和IO,Linux性能調(diào)優(yōu),Linux設(shè)備驅(qū)動(dòng)以及Linux虛擬化和云計(jì)算等各方各面.