因为想使用26sec相关的东西,所以想下载个新版本的kernel玩玩。
基础知识:
uname -r
2.6.18-164.e15xen
[主版本].[次版本].[发布版本(release)]-[修改版本]
2 . 6 . 18 - 164
次版本为奇数是“测试性质的”如2.3, 2.5
次版本为偶数的“稳定版本”如2.4,2.6
基础设施:
VMWare + CentOS 5.4 2.6.18-164.el5xen
终端:AbsoluteTelnet(编译内核时还是不要用终端,直接进VMware编译,不然终端一挂,编译过程就中断)
相同的主次版本表示使用的函数库差不多,可以直接升级到较高的发布版本。
所以由2.6.18->2.6.34可直接升级。
编译步骤:
1,下载内核源码,最新貌似为2.6.38(2012-04-22),因为上不了网,还是上回下载的2.6.34,就使用34吧。
2,tar -jxvf linux2.6.34.tar.bz2 (gz压缩格式使用-zxvf解压)
3,make menuconfig 配置内核
这次只关注Ipsec,所以在Networking里把Ipsec的所有选项以模块M的形式编进内核即可(默认已经是M)。
*表示编进核心。
其它选项没好好研究过,有空有需要了再看看吧。可以参考《鸟哥私房菜:基础学习》、《Linux内核修炼之道》
4,编译内核,执行make -j2(听说可以加快编译速度)。前两年编过一回内核,大概得40多分钟,现在不知道要多长时间?(1个半小时……)
5,安装内核模块,执行make modules_install
6,安装内核,make install
Linux所谓的安装即是拷贝下文件,修改下配置文件,rpm -ivh安装rpm包时也是同理,所以把相关配置文件和内核文件拷走放到其它2.6内核中即可。
(1),复制内核映像到/boot,编译成功后生成的内核映像文件bzImage放在arch/x86/boot/中,该文件复制到
/boot后重命名为vmlinuxz-<kernal-version>
(2),生成initrd-<kernal-version>.img文件
(3),配置引导程序(一般是/boot/grub/grub.conf,还有一种LILO没遇见过)
7,reboot进入新内核。
上面那些就依葫芦画瓢没什么难度,关键时编译和启动过程出现了问题:
1,ld: unrecognized option '--build-id'
编译不过
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vm

本文介绍了如何编译Linux 2.6.34内核,包括下载新版本内核源码,进行make,make modules_install及make install等关键步骤,适用于对Linux内核感兴趣的开发者。
最低0.47元/天 解锁文章
427

被折叠的 条评论
为什么被折叠?



