【发布时间】:2015-02-20 23:28:23
【问题描述】:
我正在尝试为我自己的服务器开发 linux 内核模块。
我有一个带有 linux 内核 3.4 的 Ubuntu,但我找不到任何用于在 3.x 版本上开发模块的书籍或教程,所有教程和书籍都是针对 2.x 版本的。
并且大部分代码没有在 3.4 版本上编译,特别是内核线程部分。
你知道什么对理解 3.x 模块开发有用吗?
谢谢。
【问题讨论】:
标签: c linux linux-kernel
我正在尝试为我自己的服务器开发 linux 内核模块。
我有一个带有 linux 内核 3.4 的 Ubuntu,但我找不到任何用于在 3.x 版本上开发模块的书籍或教程,所有教程和书籍都是针对 2.x 版本的。
并且大部分代码没有在 3.4 版本上编译,特别是内核线程部分。
你知道什么对理解 3.x 模块开发有用吗?
谢谢。
【问题讨论】:
标签: c linux linux-kernel
在内核如何工作的基础上,2.6.32+ 和 3.x 没有太大区别。但是,是的,函数名称和 API 会不时更改。这就是为什么书籍一旦发行就已经很旧了。这就是为什么我可以推荐http://kernelnewbies.org/。
已经回答了类似的问题:
Documentation about device driver programming on kernel 3.x
Linux Device Drivers 3rd Ed and 3.2 kernel
最好的文档是 Linux 内核源代码本身,因为它变化如此之快。代码中有很多 cmets,你真的应该查看“文档”目录。
将示例移植到更新的版本不是一个很好的练习吗?
非常重要的是跟上主线开发的变化列表:http://kernelnewbies.org/LinuxVersions
如果他们更改 API,他们也会记录转换。查看驱动程序执行与您想要实现的目标类似的事情。它们是如何工作的?他们对 API 更改有何反应? ...
订阅相关的 Linux 内核邮件列表,并向活跃的内核开发人员寻求更大问题的帮助。
【讨论】:
您可以使用 LDD(Linux Device Driver) 作为参考,但它适用于 2.x 内核。您可以加入Eudyptula Challenge 内核开发学习和培训挑战。还记得一个很好的参考总是linux kernel source code
【讨论】: