2.6.39发布了-最近关于内核开发的一些感受

发布时间:2026/7/5 3:52:37
2.6.39发布了-最近关于内核开发的一些感受 linux kernel 2.6.39终于发布了感觉从rc1到rc7挺长时间了这是一个值得纪念的内核版本。当然只是对于我而言是值得纪念的一个内核版本从39-rc1开始决定正式参与内核的开发了从刚开始不成熟地改了几个format的错误到后来改了几处函数错误再到后来为驱动核心写了注释一点点进步了也越来越专业了。可以说我为开源做贡献之路是从39这个版本开始的值得纪念。其实感受之前也写过以前一直觉得内核是个神圣的东西只能每天以一种朝神的姿态去读它去读懂它从来没想到过去改个一句半句的想都不敢想觉得那完全是不可能的事情而这毕业后一年的工作时间进步真的是太大了在学校的时候每天总是有这样的事那样的事有这样的作业那样的作业其实真正安心下来看代码的时间不多有时候容易浮燥没有大块大块的时间去研究一个东西而在上班的这段时间里本来就做linux 驱动的工作每天都是在做自己喜欢的事情看自己喜欢的代码大块大块的时候虽然有时也会被一些蛋疼的事情打断但是总体来说重心还是在这个上面。虽然有时间工作的内容有些简单毕竟有时候做驱动只是加一些board device,有时候或许看了好几天的一个模块在改的时候就改几行或者改几个参数就OK了但是重要的不是结果不是这个设备工作了正常工作了而是对这个设备的理解对这个驱动的理解对driver core的理解对linux kernel整个系统的理解。所以有时候工作了一样长的时间做了一样的一些工作有做的好的有做的不好的人。而且做了同样的事情人跟人得到的收获也不一样。比如做一个简单的按键的驱动或者触摸屏的驱动可以按照前人加过的代码照着改一改能工作了OK工作做完了下次做的时候还是一样的步骤。最后呢这玩意是个啥是怎么工作起来的不了了之这样反而会觉得工作没有乐趣没有一点意思。而相反在这样的设备工作以后你可以进一步看看它是怎么样工作的驱动核心是怎么样把它们驱动起来的输入核心代码是怎么样实现的这样的一层层的核心代码是怎么样才让你在写一个设备的驱动的时候如此简单地就完成了工作都了解了在做别的输入设备驱动的时候even在做其它设备驱动的时候也许就得心应手了因为你理解了输入核心理解了驱动核心久而久之也许对整个系统也了如执掌了完全可以做优化整个系统的工作了。这是我的理解在平时的工作中我经常从做一个简单模块的时候尽量理解得深入一些这反而增加了不少工作的乐趣。可喜可贺。另外在理解得深入的前提下我觉得要有一颗为开源做贡献的心虽然有时候也会有私心因为看着自己的patch被apply也会有一些小小的虚荣心成就感当然这也是应该的没有自己心理上的满足没有成就感就没有动力。像前几天在做关于nand flash驱动的时候看了看mtd core发现了一个问题当时很兴奋那天晚上回来就马上提交了一个patch今天被apply了哈哈。以前总是会觉得kernel那么大找出个错误多不容易啊咋能那么容易就提一个patch呢其实很容易在平时看它的时候当然前提是要读代码在读的时候也许就发现错误了在调试的时候也许就发现错误了也许这个bug你fix掉后就被采纳了呢。做内核开发我觉得必须要有激情有时候发现一个bug我会弄到大半夜去提这个patch有时候真是生怕被别人抢先fix掉了这个bug这是一个充满激情的地方在邮件队列里有的是不分日夜在那里为内核提交patch的大牛们要向他们学习学习这种激情。不知不觉扯远了本来是想说说39内核的昨天linus加了39的tag后意味着39正式发布了然后还发了一个邮件说接下来两周 要去日本参加活动39不能再delay了本想发个rc8的还是先发个39然后打开40的merge window吧希望在回来前不会有大麻烦。就这样39就发布了听起来并不是那么的神圣吧哈哈。本来这个文章是想写写今天发patch的一个体会的现在才开始写只能当作PS了哈哈。前天发了一个关于drivers/mtd/mtdcore.c的patch发了两个一个被apply了一个没有Artem说第二个在他的l2 tree里面merge不了因为proc函数被别人重写过了我去他的tree看了一下发现果然如此我的patch是基于linus的tree发的果然很过时然后就想把他的l2 tree 给clone下来改一改再提个patch但是clone一个tree实在是太费劲的真是很不容易于是我只把那一个文件拿了下来。然后1 mkdir temp_kernel23 cd temp_kernel45 git init67 mkdir -p drivers/mtd/89 cp mtdcore.c temp_kernel/drivers/mtd/1011 git add *1213 git commit -m init1415 vi temp_kernel/drivers/mtd/mtdcore.c #然后就是一顿改1617 git diff #看看改的有没有问题18 git commit -a #写点注释1920 git format-patch -s -12122 git send-email --from Wanlong Gao wanlong.gaogmail.com --to Artem ***mail --cc linux-kernelvger.kernel.org 0001-****这样就发出去了patch跟直接在linus tree上改的一样这样也很方便非常方便免去了clone整个tree的麻烦因为各个维护者的tree实在是太多了要是都clone下来还要每天在改之前pull一下那就是一个e梦啊。这是一个不错的方法哦哈哈。提patch的同学可以看看。题外话昨天39内核发布后今天40的window一打开疯子一样的一顿pull 啊晚上回来更新了一下linus tree更新了快两个M的代码疯狂的kernel hackers。