昨天偶去Linux内核网站(http://www.kernel.org)上逛时,发现最新的Linux Kernel稳定版已经是2.6.35.1,近来内核版本更新好快哦。下图中的stable就是稳定版的意思:
于是决定找个时间编译升级下CentOS 5.5的内核,CentOS 5.5所带的内核还是2.6.18.x系列,有点老了。因为之前偶编译过LFS与Gentoo,编译内核有一些经验了,所有这次还比较顺利。本次编译的系统是32位的,64位的稍有不同。下面的笔记在虚拟机与物理机中都验证通过,所有操作全部以root权限在终端进行。
下面是本次编译升级了到今天为止最新的稳定版内核2.6.35.1版的笔记总结:
编译前的准备工作:
要成功地创建一个内核,需要安装下列组件:
yum groupinstall “Development Tools” #这样做会确定你拥有编译时所需的一切工具。
yum install ncurses-devel #这样才能让 make *config 这个指令正确地执行。
yum install qt-devel #如果你用 make xconfig 而不是 make gconfig 或 make menuconfig,才需要这样做。
1、下载新内核源码包:
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.1.tar.bz2
tar jxvf linux-2.6.35.1.tar.bz2
cd linux-2.6.35.1
2、下载内核标准配置文件:
wget http://www.macd11.com/code/config
mv config .config
3、编译内核:
make dep
注:选择编译进去内核的模块,默认回车即可。这一步如果系统时间不正确会提示“警告:检测到时钟错误。您的创建可能是不完整的。”的警告。解决方法:把时间改正确或者运行下面的命令再makefind . -type f -exec touch {} \;
make bzImage
make modules
make modules_install
make install
4、解压修改内核:
cp /boot/initrd-2.6.35.1.img /tmp/
cd /tmp/
mkdir newinitrd
cd newinitrd/
zcat ../initrd-2.6.35.1.img |cpio -i
rm -fr /tmp/initrd-2.6.35.1.img
vim init
找到这2段一样的,去掉其中1段重复的:
echo “Loading dm-region-hash.ko module”
insmod /lib/dm-region-hash.ko
echo “Loading dm-region-hash.ko module”
insmod /lib/dm-region-hash.ko
5、从新打包新内核:
find .|cpio -c -o > ../initrd
cd ../
gzip -9 < initrd > initrd-2.6.35.1.img
rm -fr /boot/initrd-2.6.35.1.img
cp initrd-2.6.35.1.img /boot
rm -fr /usr/src/linux-2.6.35.1.tar.bz2
rm -fr /usr/src/linux-2.6.35.1
6、设置从新内核启动系统:
vim /boot/grub/grub.conf
把default=1改为default=0
7、重新启动系统:
reboot
8、如图所示,启动成功,OK。