以前就尝试过linux 的内核模块编程,但是一直没有成功,今天再次尝试终于成功了。
我认为配置的两个关键问题是:
- 安装与系统内核相同的内核树
- 编译时选择正确的内核
对于第二个问题比较好解决,在写makefile时通过
uname -r
便可以正确的选择内核,所以难点是正确的安装内核树,按理说,这个也不是什么难题,主要是因为有些发行版默认不安装内核树,或者安装内核树后对内核升级后造成的版本不一致的问题,比如我是安装fedora 17 后就又安装并使用PAE内核,但是并没有安装内核树,因此在编译时总是提示没有相关内核的目录,因此我们最后进入系统后,重新执行安装内核树,这即可以自己编译也可以通过包管理软件安装,如fedora下
sudo yum install kernel-devlel
或者PAE内核
sudo yum install kernel-PAE-devel
这样在编译时便能够成功。