昨天回應了文章以後,有些朋友私下請教我一些問題。這邊我再多分享一些心得。
其實在台灣做真正的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