Linux内核开发应该怎么学?(附带学习路线)
学习linux内核,这个可不像学一门语言,c或者java一个月或者3月你就能精通掌握。学习linux内核是需要一步一步循序渐进,掌握正确的linux内核学习路线对学习至关重要,本篇文章就来分享学习linux内核的一些建议吧。
了解操作系统基本概念。如果不会,可以学习《操作系统:设计与实现》Andrew S.Tanenbaum 写的那本。以MINIX为例子讲解操作系统的概念。非常推荐。
有了操作系统的基本概念以后,可以了解Linux的机制了。推荐《Linux内核设计与实现》Robert Love 写的。这本书从概念上讲解了Linux有什么,他们是怎么运行的。这本书要反复认真看透。
有了Linux内核的了解,还需要具体研究Linux内核源码。经典的就是《深入理解Linux内核》Daniel P. Bovet 写的。学习这本书的时候,要对着内核代码看着学。这本书学起来相当费力了,那么多多代码要研究。不过这本书如果学明白了,恭喜你,Linux内核你已经很熟悉了。
如果要开发设备驱动,可以学习《linux设备驱动程序》O'Reilly出版社的。这本作为驱动的入门是很好的资料。另外还有一本《精通Linux 驱动程序开发》也是不错的教材,可以参考着看。学习驱动,免不了要学习一些硬件的协议和资料,研究哪个就找到相应的硬件文档,把硬件的工作原理搞明白。这些就不细说了。
网络部分,学些Linux网络部分就学习《深入理解LINUX网络技术内幕》。这本书把Linux的网络部分讲的非常清晰透彻。但是通常不做这方面的工作研究,也不用研究这么深,毕竟现在相关职位较少。
现在Linux相关的工作,多集中在一些嵌入式开发领域,arm,mips等,要学习以下这些体系架构的的资料,了解CPU的设计和工作方式。ARM就看对应的芯片手册,讲的很细致。MIPS就看 《see mips run》,有一二两版,两版内容有些差异,推荐都看。
补充一点经验。不要认为Linux很庞大,很复杂,就觉的很难学。任何东西认真学下来都是能学会的,看你都恒心和毅力了。另外,不要走弯路,不要看市面上讲什么Linux0.11的那些书,直接学你要学的东西。就像学C语言看什么谭浩强一样,弯路走了,力气没少花,还严重影响学习效果。
关于linux内核学习路线,再多说几句
这里给大家分享零声教育的Linux内核源码课程,对标腾讯T9级别。
主要从
进程管理专题
内存管理专题
网络协议栈专题
设备驱动管理专题
文件系统及内核组件专题
全方面系统全面的讲解底层原理开发技术:
最新Linux内核大纲
进程管理专题

内存管理专题

网络协议栈专题

设备驱动管理专题

文件系统及内核组件专题


【文章福利】小编推荐自己的Linux内核技术交流群:【891587639】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!前100名进群领取,额外赠送一份价值699的内核资料包(含视频教程、电子书、实战项目及代码)


适合于
1. 从事业务开发多年,对底层原理理解不够深入的在职工程师
2. 从事嵌入式方向开发,想转入互联网开发的在职工程师
3. 从事Qt/MFC等桌面开发,薪资多年涨幅不大的在职工程师
4. 从事非开发岗位(算法岗,运维岗,测试岗),想转后台开发岗位的在职工程师
5. 工作中技术没有挑战,工作中接触不到新技术的在职工程师
6. 自己研究学习速度较慢,不能系统构建知识体系的开发人员
7. 了解很多技术名词,但是深入细问又不理解的工程师
8. 计算机相关专业想进入大厂的在校生(本科及以上学历,有c/c++基础)




学习模式:
128小时录播课,持续9个月,每周晚上腾讯课堂8点到10点直播公开课
课前预习资料课后思考实践作业
班主任督学作业统计博客统计
老师答疑工作问题课程问题
奖学金机制最高1000元公开透明
这些内容,分些时间,分步计划学习,就会成为Linux高手了