关于Linux内核的学习,始终找不到合适的入口,比如看书看Linux内核设计与实现,看到第六章内核结构就实在看不动了,太枯燥。
看Linux/Unix系统编程手册,上册看到12章,对系统调用 文件 进程等函数有了大概的了解。看这本书跟Linux内核貌似扯不上太大的关系。
想问下各位,有没有例子多一点,不是那么枯燥的linux内核入门书籍,如果你有更好的入门方法不吝赐教。
欢迎各位过来人指点。
关于Linux内核的学习,始终找不到合适的入口,比如看书看Linux内核设计与实现,看到第六章内核结构就实在看不动了,太枯燥。
看Linux/Unix系统编程手册,上册看到12章,对系统调用 文件 进程等函数有了大概的了解。看这本书跟Linux内核貌似扯不上太大的关系。
想问下各位,有没有例子多一点,不是那么枯燥的linux内核入门书籍,如果你有更好的入门方法不吝赐教。
欢迎各位过来人指点。
刚开始学学 《LDD3》 虽然书本是基于 2.6 系列写的,但是目前还有过过时,原理是一致的。稍微熟悉一点就看看《深入理解 Linux 内核》这本书会告诉一些设计思路,不是单纯的列举代码,对思想的理解很有好处。精通 《Linux 设备驱动开发》也是一本不错的书。看完这几本书之后就不需要专门去看书了,可以买一些其他书做为辅助查阅即可,并不需要认真的去翻,用的时候翻一翻即可。
那么自然不可能看完这几本书就熟悉 Linux 内核了,更为重要的事就是上 Google 查资料,逛技术分析博客,前人针对性的分析各个子模块,不但清晰而且易懂。等你有了一定的理论知识就可以看看 Linux 代码社区动态,翻一下提交者的代码,看他们如何提交代码。
之后你如果想往社区发展,好好的利用 git,熟悉你这个想分析的模块的所有历史记录,最好的办法就是从一次提交开始,分析他的代码,第一次提交都很简单,比如 NVMe 驱动的代码第一次提交才 1000 行,认真看,很容易理解,虽然现在 NVMe 已经上万行,但是他的核心骨架还是当初的 1000 行,理解之后,后面只是在添加各种小的功能。
等你达到这个层次,恭喜你,入门进入一个真正的 Linux 内核开发者,你仍然需要走很长的路,需要踏过前人已经踏过的坑(Linux 的开发有很多讲究),比如删除链表是需要使用有 safe 后缀的 list_for_each_entry_safe
函数,不然不是安全的,比如 bio 的 endio 回调中一定需要使用 spin_lock_irqsave
而不能是普通的 spin_lock
锁,这些都需要慢慢的自己去发现,因为没人会告诉你为什么,你得自己去找原因。
1 回答1.1k 阅读✓ 已解决
865 阅读
这个项目适合你:https://segmentfault.com/a/11...