在此要特别感谢我们的个人合作网站Linux自由空间站长:小蚁为我们提供。
申明:此系列原作者Ori Pomerantz 翻译:cherami
简介
现在,你想写内核模块。你了解C语言并且已经写过一些普通的程序,现在你想接触真正的动作在哪儿,那个单一的疯狂的可以删除整个文件系统的指针及内核转储意味着重新启动在哪儿。
那么好吧,欢迎来到这个俱乐部。我曾经有一个疯狂的指针删除了DOS (值得庆幸的是,它现在代表 Dead Operating System)下的一个重要的目录,而且我看不出来为什么在Linux下会更安全。
警告: 我是在运行于Pentium的2.0.35 和 2.2.3 版本内核的系统下写下这些并检查那些程序的,对于其中的大部分,它们也会工作于其他的CPU和内核版本下,只要内核的版本是2.0.x 或 2.2.x,但我不能保证任何事。一个例外是11章 , 它们只能工作于x86系统下.
谁应该阅读本书
这个文档是为那些想写内核模块的人而写的。虽然我会在几个地方提及在内核中事情是如何完成的,但这不是我的目的。有足够的好的资料会在那方面做的更好。
这个文档也是为那些知道如何写内核模块但还不适应2.2版内核的人写的.如果你是这类人,我建议你看看附录 A以了解我在更新范例时遇到的所有的差异。那个列表是不全面的但我想它覆盖了大部分的基本功能并且足够让你开始新的工作。
内核是一大块程序,并且我相信程序员应该至少读懂一些内核源代码。说到这,我也相信首先使用系统然后问问题的价值。当我学习一种新的编程语言的时候,我不是从读库代码开始的,而是通过写一些小的`hello, world'程序开始的。我看不出来在内核上应该有什么不同。
注意风格
我喜欢在我的文档加入尽可能多的笑话。我写这是因为我喜欢它,并且我假设你们中的多数也读这也是基于同样的原因。如果你仅仅想接触这些,那么忽略所有的普通文本而去读源代码。我保证我已经将所有的重要的细节放在了注释里面。