ubuntu 编译内核模块过程
1、下载内核源文件
?sudo apt-cache search linux-source
?可以看到和当前操作系统统一版本的源码,例linux-source-2.6.32
?安装源码sudo apt-get install linux-source-2.6.32
?然后解压压缩包
?cd /usr/src,可以看到linux-source-2.6.32.tar.bz2
?解压内核源码文件,sudo tar jxf linux-source-2.6.32.tar.bz2 -C .
?解压完成,在/usr/src/目录下,产生linux-source-2.6.32文件夹
?
2、初始化内核文件部分脚本
?
?
?2.1 sudo make prepare (防止错误 类似include/linux/mmzone.h:18:26: error: linux/bounds.h: 没有该文件或目录)
??
?如果碰到 ?make: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'.? Stop.
?sudo make localmodconfig 或者 sudo make menuconfig 或 sudo make oldconfig
?
?2.2 sudo make scripts?? (防止错误? /bin/sh: scripts/mod/modpost: not found )
?
?
?
3、添加模块源文件
?3.1 添加.c文件
??
?
3.2 添加Makefile
???
obj-m := hello.o?
4、进行编译
?? make -C /usr/src/linux-source-2.6.32/ M=$(pwd) modules
?
5、加载内核模块
?? sudo insmod hello.ko
?
如果发生错误:?? insmod: error inserting 'hello.ko': -1 Invalid module format??
说明使用的版本是不正确的
?
不妨试试 make -C /lib/modules/`uname -r`/build M=$(pwd) modules
?
?
?
??
?
?
?
?