CentOS 编译内核
下载linux-2.6.29.4.tar.bz2到/usr/src
# wgethttp://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.4.tar.bz2
# tar -jxvf linux-2.6.29.4.tar.bz2
# cd linux-2.6.29.4
# make mrproper
# make menuconfig
# make clean
# make bzImage
# make modules
# make modules_install
# mkinitrd /boot/initrd_2.6.29.4.img 2.6.29.4
执行mkinitrd命令时,提示“No module dm-mem-cache found for kernel2.6.29.4,aborting.”时,表明该版本的mkinitrd有bug。升级mkinitrd或参考这篇文章解决这个问题。
解决方法,1是当使用mkinitrd时,使用”–without-dmraid”这个参数。2是在使用mkinitrd之前,先创建一个noraid文件。创建方法如下:
# echo "DMRAID=no" >/etc/sysconfig/mkinitrd/noraid
# chmod 755 /etc/sysconfig/mkinitrd/noraid
然后再运行mkinitrd命令。
这里我采用了第一种办法
# mkinitrd /boot/initrd-2.6.29.4.img 2.6.29.4--without-dmraid
执行完mkinitrd后,就要在启动菜单中增加编译好的内核信息,以便启动时可以选择内核版本。
# cp /usr/src/linux-2.6.29.4/arch/i386/boot/bzImage/boot/vmlinuz-2.6.29.4
# cp /usr/src/linux-2.6.29.4/System.map/boot/System.map-2.6.29.4
打开/etc/grub.conf文件,增加以下内容到文件结尾。
title CentOS (2.6.29.4)
root (hd0,0)
kernel /vmlinuz-2.6.29.4 ro root=/dev/VolGroup00/LogVol00 rhgbquiet
initrd /initrd-2.6.29.4.img
保存,重启,进行grub的启动菜单中,选择”CentOS(2.6.29.4)”,即可使用编译好的内核。
如果你觉得make modules_install后面的步骤太麻烦的话,就直接用下面的命令让系统帮你做好了
# make install
下面是运行时的提示信息:
sh /usr/src/linux-2.6.29.4/arch/x86/boot/install.sh 2.6.29.4arch/x86/boot/bzImage System.map "/boot"
WARNING: No module dm-mem-cache found for kernel 2.6.29.4,continuing anyway
WARNING: No module dm-message found for kernel 2.6.29.4,continuing anyway
WARNING: No module dm-raid45 found for kernel 2.6.29.4,continuing anyway
/etc/grub.conf文件里面也会自动的写入下面的信息,不过请放心,他不会设置新的内核为默认的启动的。
title CentOS (2.6.29.4)
root (hd0,0)
kernel /vmlinuz-2.6.29.4 ro root=/dev/VolGroup00/LogVol00 rhgbquiet
initrd /initrd-2.6.29.4.img
574

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



