最近工作要在内核态编程,学习了一下自己编译内核,流程如下:
1. #cd /usr/src/
拷贝一份 linux 内核代码
#cp -r linux-2.6.32.12-0.7 zcl-linux-2.6.32.84-0.7
如果系统中没有安装内核代码,则可以去gnu官网上下载一份最新的内核代码
2. cd 到自己的 linux 内核代码目录中
#cd zcl-linux-2.6.32.84-0.7
#make mrproper //删除原来编译产生的垃圾
#make menuconfig //文本界面配置内核编译选项,也可用更原始的 #make config
在弹出界面中选中自己需要编译的模块,比如在
Genral setup--> 中选择 GCOV 功能等,选择完后,退出;
Genral setup 还可以选择编译好的内核 lib 安装路径,Local Version,可在后面填加字符串
这样就可以将编译好的模块安装到不同目录中
3. #vi Makefile
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 16
EXTRAVERSION = .84 //将扩展版本号修改一下,以便和系统中原本内核版本区分
NAME=zhangcunli
2.6 的内核代码编译只需要执行一步即可
#make 但这样编译时间太长,可以按如下步骤执行:
//可以替换为如下步骤:
#make bzImage /*编译大内核*/
或者 male -jn bzImage ,其中 n 的值为 2*cpu核的个数,这样可以加快编译速度
比如,我的电脑有2个cpu,每个cpu都是双核,所以我使用#make -j8 bzImage编译
或者#make zImage 编译压缩形式的内核
#make modules //编译选择的模块,或者使用 make -j8 modules
#make modules_install
将编译出来的模块安装到系统指定目录中
/lib/modules/2.6.32.84-0.7-default 其中 /lib/modules后面的一级目录为自己先前设置版本号
4. 编译成功后,就可以安装内核了
#cp /boot/grub/menu.lst /boot/grub/menu.lst.bak 备份一下grub引导配置文件
#make install