欢迎光临散文网 会员登陆 & 注册

Linux内核源码技术学习路线,安排起来~

2022-05-05 18:04 作者:补给站Linux内核  | 我要投稿

陆游给世人留下很经典的一句话”工夫在诗外", 这里我想说一句, 学习内核功夫在代码之外。下面我说一个可操作的"方案“吧。

  1. 首先要搭建一个Linux的学习环境: 建议使用Qemu虚拟机装个标准的Ubuntu Linux,学习简单的Linux使用方法,重要的是学习编译Linux内核。

  2. 从《LNUX设备驱动程序》这本书入手,掌握编写标准的虚拟字符驱动方法,并亲自动写一个,验证通过。

  3. 在基于2)的代码里,对于open/write钩子调用backtrace函数 输出驱动ile_ operations钩子函数的执行上下文,并根据backtrace调用栈, 看每个函数上简单看-下它们长什么样, 如果能分析到这些函数属于那个功能模块(比如syscall, vfs, deie..... 就更好了。

  4. 再从通用的、基础的功能模块开始学起,比如系统调用原理9,中断处理等等..

  5. 第4)点任何知识学习时,建议找相关的参考书帮自己梳理知识脉络,重的是动手修改代码验证自己的理解;比如新增一个系统调用, 注册一个中断处理函数, 看看执行起来是什么样子的。

  6. 经过第5阶段的学习,可以系统学习某些大功能模块的机理了,比如虚拟内存、CFS调度算法,PageCache管理,某个文件系统(比如ext2),网络协议栈t等。

  7. 学会使用kernel的调试工具,比如qemu + gdb调用内核,还有内核自身提供的ftrace, perf等功能都是很好的测量和分析工具

  • 总体思路:看经典书籍理清知识脉络+自己动手分析代码+编写代码验证或使用工具进行验证分析

  • 进阶路径:先从基础的功能模块,再到复杂的子系统学习

最后说说我自己学习内核的过程吧:

  1. 第一阶段是巧遇期(兴趣使然) :第-份工作是与网络相关,自学了《LINUX设备驱动程序》这本书的字符驱动,然后学习了网络驱动部分,然后沿着驱动里面调用的netif nx函数9,将内核协议栈代码看了一个遍。

  2. 第二阶段是应用期(工作需要) :通过项目和自学方式,掌握内存、调度这两个重要的子系统,还有一些调测工具的原理(比如perf, ftrace, backtrace, .... ;然后也向内核社区提交过patch

  3. 第三阶段:应该是整体Linux的方案设计和需求分析工作,这个阶段更好是将内核好的功能,解决客户的痛点问题,给出一个好的解决方案。

最后给大家安排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内核源码技术学习路线,安排起来~的评论 (共 条)

分享到微博请遵守国家法律