大三选择向嵌入式方向发展,主要学习linux的驱动开发,期间网上各种资料显示阅读linux内核源码(下面简称内核源码)的重要性,于是我便走上了这条不归路。在这篇文章中,我想讲三个内容,一是阅读内核源码有什么用,二是如何阅读内核源码,三是谈一下我阅读内核源码的经历:
首先声明我对linux内核源码并不精通,也不算熟悉(虽然在简历中我曾写着阅读过linux内核源码(0.11版本)),下面的内容全凭我自身在真正开始学习linux一年多后的经历和感受,与大家分享,如有错误欢迎大家批评指正,但是拒绝脏话、拒绝抬杠。
一、读linux内核源码有什么用?
大家在阅读之前都会思考这个问题,我baidu+google,发现很少有人提问学习内核源码有什么用?提问最多的是如何阅读内核源码,回答者的答案几乎类似(两种方法,第二部分叙述)。但是回答者很少关心你为什么要读内核源码。由此我得出下面2点结论:
1.大家也许也不是很清楚自己为什要读内核源码;
2.大家希望找到一条高效的捷径快速完成与读内核源码;
我当时想要阅读源码其实也没有什么明确的目的,因为当我学习驱动开发时,驱动程序中要包含各种头文件,会遇到各种定义好的结构和接口,阅读别人的驱动程序时,会有注释和说明。但是当自己写驱动程序时,真心是无从下手。我知道驱动要实现那些内核的接口,但是需要包含哪些头文件、要用到那些封装好的结构确实要各种搜索。在这样的背景下,我萌生了阅读内核源码的想法,这样在实现驱动程序时就会很轻松,并憧憬这在完全阅读源码后可以写一个自己的操作系统(目前我仍然憧憬着,这是我的梦想之一)。
做了一些了解后我决定先阅读0.11版本的源码,一是希望可以借此对整个操作系统如何驱动硬件进行工作有一个从宏观到微观的了解,二是希望之后可以写一个自己的操作系统在ARM9上跑起来,这已经有点背离了我最初的目的——为驱动开发做基础。
从开始阅读源码到现在,中间断断续续。不是我不能坚持,因为平时要上课,期末要考试,暑假实习+找工作,只能用零头时间读,时间久了就会不断问自己这样下去有意义吗?工作中会用到吗?这样很容易就会放弃,然后某段时间心血来潮又继续读。
我想大家都将会遇到这样的情况或者已经遇到过。我想说——
坚持阅读内核源码肯定很有用,但是我不知道有什么用,因为我不知道自己能够不能够坚持读完。读完0.11应该没问题,但是0.11和2.6.X的内容差的太多了(完全不一样),现在内核中保留的也许只是0.11的思想。那么读完0.11有什么用,对驱动开发没用,对编程能力没有提高,对行业了解没有帮助......我现在在读2.6.20的源码,但是只是希望可以加深对内核的了解,算是爱好吧。
网上回答如何阅读源码的帖子铺天盖地,但是为什么总是有人不断地提问,这反映了大家的浮躁心理,希望可以找到一条高效的捷径快速完成目标——不可能的,踏踏实实,一步一步的来吧。
|