當您打開Linux內核源代碼的maintainer文件,在里面搜索一個名字Jiaxun Yang,您會發(fā)現(xiàn),他是內核多個模塊的maintainer:
您一定會以為Linux內核龍芯架構的maintainer,是一位資深的年長工程師??墒牵酉聛鞮inux閱碼場將向您揭曉的Jiaxun Yang的故事,可能會讓您目瞪口呆。
導言
本期采訪對象:楊嘉勛,中國上海某高中應屆畢業(yè)生,長居于中國杭州。
當Linux閱碼場聯(lián)系到嘉勛的時候,他正好走出高中校園,在完成自己的畢業(yè)旅行。
我們非常幸運地采訪到了嘉勛,并希望通過分享嘉勛的Linux故事,激勵更多優(yōu)秀的人們積極投身操作系統(tǒng)的研發(fā)中來,收獲技術的喜悅和人生的精彩。
1. Linux閱碼場:你是什么時候開始接觸Linux(內核)的?
嘉勛:
接觸Linux應該是小學四五年級的時候,當時沉迷于用虛擬機安裝各種操作系統(tǒng),偶然從網上了解到了Linux操作系統(tǒng),對其開源開放的模式感到好奇,于是下載安裝了Ubuntu。后來越來越著迷,在理解了各種基本操作之后之后就把Linux安裝到筆記本上作為日用操作系統(tǒng),慢慢地積累了不少各種Linux知識。后來初三的時候換了臺聯(lián)想的IdeaPad筆記本,當時遇到無線網卡無法使用的問題,研究了一段時間發(fā)現(xiàn)問題的根源出在內核rfkill組件。當時在不少論壇QQ群求解都無人能回答,就打算自己啃這個硬骨頭,讀起了ideapad-laptop ACPI驅動的代碼。當時我對C語言已經有基本的掌握,但大量不理解的名詞與邏輯仍然是是攔路虎。差不多邊讀代碼邊搜索了一個月,慢慢理解了內核驅動的套路,做了一個patch并提交到upstream。
2. Linux閱碼場:你怎么進入Linux開發(fā)的,為什么選擇這個?
嘉勛:
之后因為偶然的機會搞到了一臺龍芯的機器,想裝Debian系統(tǒng),發(fā)現(xiàn)主線內核對他的支持很差,于是就想著折騰折騰。這一折騰就深似海,一頭鉆進去出不來了。各種寫驅動抓debug交patch。后來也因為在社區(qū)的活動得到了在龍芯生態(tài)里的企業(yè)航天龍夢實習的機會,在師傅陳華才博士的帶領下對Linux的理解深入了不少,一路繼續(xù)玩下去了。至于為什么選擇這個,我覺得是Linux選擇了我~他有問題需要我去解決。我也不是只做Linux開發(fā),平時也會參與一些其他的開源項目或者自己寫點小玩意玩。
3. Linux閱碼場:你在內核領域,都做了哪些事情?
嘉勛:
X86各種平臺驅動隨機修點問題。MIPS這里也是隨機修修補補,整理整理代碼,寫寫驅動,龍芯3A4000 CPU和7A1000橋片在上游的bring up,龍芯KVM的開發(fā)和upstream。實習期間搞了龍芯7A1000的GPU驅動和3A4000的睿頻機制,不過這樣那樣的原因實習期間的工作沒能upstream。
4. Linux閱碼場:你做內核開發(fā)的成就感來自哪里?
嘉勛:
It works。別笑,單單是It works就能給我很大的成就感。我從小就對各種機械,各種工業(yè)產品很感興趣,據說兩三歲的時候看著空調外機的風扇轉動就能發(fā)幾小時呆。我一直希望成為一個去解決各種問題,創(chuàng)造產品的工程師。內核可以說是軟件和硬件的邊界,我從內核俯視可以看到盤根錯節(jié)的電路構建的硬件,仰望可以看到幾代人層層抽象刻畫的用戶態(tài)軟件,能為這對偉大的結晶構建橋梁共同完成整個計算機系統(tǒng),我覺得很榮幸。
5. Linux閱碼場:第一次提交patch的過程,對初學者有什么建議?
嘉勛:
因為我是Loongson64的Maintainer,遇到first patch的機會還是挺多的,最近遇到的比較多的問題是大家對于patch提交前檢測的流程不是很清楚。除了基本的功能性測試以及老生常談的checkpatch.pl之外有些子系統(tǒng)還會有額外的要求,比如涉及DeviceTree的make dt_binding_check。建議大家在提交之前仔細閱讀一下內核的文檔部分,除了子系統(tǒng)要求之外里面對于郵件客戶端的配置以及基本工作流程的介紹都還是很實用的。如果沒有時間壓力的話在提交第一個補丁之前翻閱一下子系統(tǒng)郵件列表的歷史信件也有助于快速搞清楚“潛規(guī)則”,避開常見的坑。
6. Linux閱碼場:未來有什么計劃?
嘉勛:
繼續(xù)上學,繼續(xù)寫代碼玩電腦,如果以后能成為一個工程師參與一些激動人心的項目那再好不過了。
Linux閱碼場隨后在Linux內核源碼中發(fā)現(xiàn)了嘉勛的許多patch:
最早地可以追溯到2017年:
Linux閱碼場無意分享任何勵志故事,更無意烹飪任何心靈雞湯,我們只是希望讓更多的人們相信:“我能行”。我們同時也衷心地祝愿嘉勛同學在Linux這條路上越走越遠,收獲更多的“It works”。