当您打开Linux内核源代码的maintainer文件,在里面搜索一个名字Jiaxun Yang,您会发现,他是内核多个模块的maintainer:
您一定会以为Linux内核龙芯架构的maintainer,是一位资深的年长工程师。可是,接下来Linux阅码场将向您揭晓的Jiaxun Yang的故事,可能会让您目瞪口呆。
导言
本期采访对象:杨嘉勋,中国上海某高中应届毕业生,长居于中国杭州。
当Linux阅码场联系到嘉勋的时候,他正好走出高中校园,在完成自己的毕业旅行。
我们非常幸运地采访到了嘉勋,并希望通过分享嘉勋的Linux故事,激励更多优秀的人们积极投身操作系统的研发中来,收获技术的喜悦和人生的精彩。
1. Linux阅码场:你是什么时候开始接触Linux(内核)的?
嘉勋:
接触Linux应该是小学四五年级的时候,当时沉迷于用虚拟机安装各种操作系统,偶然从网上了解到了Linux操作系统,对其开源开放的模式感到好奇,于是下载安装了Ubuntu。后来越来越着迷,在理解了各种基本操作之后之后就把Linux安装到笔记本上作为日用操作系统,慢慢地积累了不少各种Linux知识。后来初三的时候换了台联想的IdeaPad笔记本,当时遇到无线网卡无法使用的问题,研究了一段时间发现问题的根源出在内核rfkill组件。当时在不少论坛QQ群求解都无人能回答,就打算自己啃这个硬骨头,读起了ideapad-laptop ACPI驱动的代码。当时我对C语言已经有基本的掌握,但大量不理解的名词与逻辑仍然是是拦路虎。差不多边读代码边搜索了一个月,慢慢理解了内核驱动的套路,做了一个patch并提交到upstream。
2. Linux阅码场:你怎么进入Linux开发的,为什么选择这个?
嘉勋:
之后因为偶然的机会搞到了一台龙芯的机器,想装Debian系统,发现主线内核对他的支持很差,于是就想着折腾折腾。这一折腾就深似海,一头钻进去出不来了。各种写驱动抓debug交patch。后来也因为在社区的活动得到了在龙芯生态里的企业航天龙梦实习的机会,在师傅陈华才博士的带领下对Linux的理解深入了不少,一路继续玩下去了。至于为什么选择这个,我觉得是Linux选择了我~他有问题需要我去解决。我也不是只做Linux开发,平时也会参与一些其他的开源项目或者自己写点小玩意玩。
3. Linux阅码场:你在内核领域,都做了哪些事情?
嘉勋:
X86各种平台驱动随机修点问题。MIPS这里也是随机修修补补,整理整理代码,写写驱动,龙芯3A4000 CPU和7A1000桥片在上游的bring up,龙芯KVM的开发和upstream。实习期间搞了龙芯7A1000的GPU驱动和3A4000的睿频机制,不过这样那样的原因实习期间的工作没能upstream。
4. Linux阅码场:你做内核开发的成就感来自哪里?
嘉勋:
It works。别笑,单单是It works就能给我很大的成就感。我从小就对各种机械,各种工业产品很感兴趣,据说两三岁的时候看着空调外机的风扇转动就能发几小时呆。我一直希望成为一个去解决各种问题,创造产品的工程师。内核可以说是软件和硬件的边界,我从内核俯视可以看到盘根错节的电路构建的硬件,仰望可以看到几代人层层抽象刻画的用户态软件,能为这对伟大的结晶构建桥梁共同完成整个计算机系统,我觉得很荣幸。
5. Linux阅码场:第一次提交patch的过程,对初学者有什么建议?
嘉勋:
因为我是Loongson64的Maintainer,遇到first patch的机会还是挺多的,最近遇到的比较多的问题是大家对于patch提交前检测的流程不是很清楚。除了基本的功能性测试以及老生常谈的checkpatch.pl之外有些子系统还会有额外的要求,比如涉及DeviceTree的make dt_binding_check。建议大家在提交之前仔细阅读一下内核的文档部分,除了子系统要求之外里面对于邮件客户端的配置以及基本工作流程的介绍都还是很实用的。如果没有时间压力的话在提交第一个补丁之前翻阅一下子系统邮件列表的历史信件也有助于快速搞清楚“潜规则”,避开常见的坑。
6. Linux阅码场:未来有什么计划?
嘉勋:
继续上学,继续写代码玩电脑,如果以后能成为一个工程师参与一些激动人心的项目那再好不过了。
Linux阅码场随后在Linux内核源码中发现了嘉勋的许多patch:
最早地可以追溯到2017年:
Linux阅码场无意分享任何励志故事,更无意烹饪任何心灵鸡汤,我们只是希望让更多的人们相信:“我能行”。我们同时也衷心地祝愿嘉勋同学在Linux这条路上越走越远,收获更多的“It works”。