在ubuntu下首先查看自己的内核版本信息以及方法:
#uname -r
#uname -a
#uname -srv
下一步根据自己的内核版本去下载相对应的内核源码,可根据一下方法:
#sudo apt-get install linux-source-xxx
#wget kernel.org/pub/linux/kernel/v2.6/linux-2.6.x.tar.gz
下载可下载在/usr/src目录下,其他目录下也可以根据自己的需要
解压下载的内核代码:
#tar xvf linux-2.6.34.tar.bz
在/usr/src下生成自己的内核源代码
然后根据命令:
make mrproper清除多余的不必要的文件
make menuconfig进行设置,一般情况下不用设置,直接exit保存即可
make bzImage进行编译,时间比较长,本人建议在最后加上-j6等来
进行多线程编译,这样会加快你的编译速度,也就是make bzImage -j6
采取6线程编译
make modules编译内核 模块,此过程也是比较长的建议也采取多线
程来编译
如果只是写一个简单的helloworld驱动测试,这些步骤就够了
如果想进行内核的安装和升级还有如下命令:
make modules_install
make install
等命令来进行安装升级ubuntu内核版本
注意事项:
如果在编译加载insmod ./hello.ko的过程中出现
insmod: error inserting './hello.ko': -1 Invalid module format
说明是内核的版本不兼容造成的
这是我编译的结果:
这是我的hello.c文件:
这是我的Makefile文件: