昨天回应了文章以后,有些朋友私下请教我一些问题。这边我再多分享一些心得。
其实在台湾做真正的kernel研发没几间公司有。就我所知就Qnap, MTK, Marvell,再来就
是一些ic design house会写自己的driver,像是Realtek之类的。Driver需求其实很高。
所以长期来看想做纯kernel的研发,在台湾机会很少。扯远了。来谈谈怎么增进自己的
Kernel/Driver能力。
1) C语言要弄熟,就K&R。
2) 订阅Linux kernel mailing list,如:Linux-kernel, Linux-usb, Linux-arm...阅读
mailing list你可以知道最新的发展,还有send patch的rule是什么。往后遇到问题,也
可以直接用gmail查询,不用再到网络上查。重要的人物像是Linus或者是某个subsystem的
maintainer你也可以直接对他的mail做filter,之后就可以到label底下watch他的动态。
还有就是对岸的Chinaunix的内核版也是不错的。
可以阅读kernel source底下的:
Documentation/SubmittingPatches
查询怎么用:scripts/checkpatch.pl
How to send patches:
http://www.tuxradar.com/content/newbies-guide-hacking-linux-kernel
3) 订阅LWN, 包含Daily news, bi-weekly news。如果没有花钱不会有weekly,但至少两
个礼拜看一次不会lag太多。也会知道最新的版本和大家讨论的问题。对了,如果要知道
最新的version可以订阅 linux-kernel-announce@vger.kernel.org ,这个会比Linus本
人的announce还要快,估计Linus是把announce commit放到git repositories以后
script自动就会送出mail announcement。
4) 要了解distribution Kernel怎么build或者怎么build uptream kernel之后安装到自
己的PC上面。比方说我自己是用Ubuntu当作工作机,所以有时候会测试Ubuntu Kernel和
Upstream Kernel做bisect找bug。
怎么build mainline kernel的debian packages:(build好以后可以直接装deb档,deb档
的优点是可以用dpkg -P xxx or apt-get purge 反安装,不像传统的make install管理
上不方便)
https://wiki.ubuntu.com/KernelTeam/GitKernelBuild
怎么build Ubuntu kernel:
https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel
个人是认为至少要会两种arch的流程比方说x86(pc) & arm。x86是平常自己使用的架构,
arm也许是工作上或者是兴趣自己研究。但唯有真正的使用自己build的kernel才会有感觉
Kernel改进什么,什么地方有bug。
什么?闲太慢?!
你可以使用ccache or distcc加快build code的速度尤其是ccache非常实用。
用apt-get install ccache,之后修改Makefile