CentOS RHEL 5.3 编译内核

2010年01月25日 Linux基础 评论 1 条 阅读 11,406 views 次

下载linux-2.6.29.4.tar.bz2到/usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.tar.bz2
# tar -jxvf linux-2.6.27.tar.bz2
# cd linux-2.6.27
# make mrproper
# make menuconfig
# make clean
# make bzImage
# make modules
# make modules_install
# mkinitrd /boot/initrd_2.6.27.img 2.6.27

执行mkinitrd命令时,提示"No module dm-mem-cache found for kernel 2.6.27, aborting."时,表明该版本的mkinitrd有bug。
解决方法,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.27.img 2.6.27 --without-dmraid
执行完mkinitrd后,就要在启动菜单中增加编译好的内核信息,以便启动时可以选择内核版本。
# cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.27
# cp System.map /boot/System.map-2.6.27

打开/etc/grub.conf文件,增加以下内容到文件结尾。

title CentOS (2.6.27)
root (hd0,0)
kernel /vmlinuz-2.6.27 ro root=LABEL=/
initrd /initrd-2.6.27.img

保存,重启,进行grub的启动菜单中,选择"CentOS(2.6.27)",即可使用编译好的内核。
如果你觉得make modules_install后面的步骤太麻烦的话,就直接用下面的命令让系统帮你做好了
# make install
下面是运行时的提示信息:
sh /usr/src/linux-2.6.27/arch/x86/boot/install.sh 2.6.27 arch/x86/boot/bzImage System.map "/boot"
WARNING: No module dm-mem-cache found for kernel 2.6.27, continuing anyway
WARNING: No module dm-message found for kernel 2.6.27, continuing anyway
WARNING: No module dm-raid45 found for kernel 2.6.27, continuing anyway

这些只是提示,对系统没有什么影响,经本人查阅相关的资料。
可能是内核和mkinitrd的BUG,大家可以参考一下这篇文章
https://bugzilla.redhat.com/show_bug.cgi?id=488991
通过给内核打dm-raid45这个补丁,可以解决掉"WARNING: No module dm-raid45 found for kernel 2.6.29.4, continuing anyway"这个提示
http://people.redhat.com/~heinzm/sw/dm/dm-raid45/
至于其他的两个没有仍然找不到解决的办法,希望大家知道的,给我留言!

谢谢!

1 条留言  访客:0 条  博主:0 条   引用: 1 条

来自外部的引用: 1 条

  • Centos,iftop,linux,RHEL,流量监控 | Scorpio

给我留言

Copyright © 羽飞博客 保留所有权利.   Ality主题 皖ICP备14013844号-1

用户登录