Skip to content

CentOS 5.3下编译内核

内核源代码可以从此处下载最新版的:http://www.kernel.org/pub/linux/kernel/v2.6/。在写文章时,最新版是2.6.29.1。下载地址为:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.1.tar.bz2。

# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.1.tar.bz2
# tar xjvf linux-2.6.29.1.tar.bz2
# cd /usr/src/linux-2.6.29.1
# make menuconfig

在此,出现文字模式的菜单设置编译内核的选项。如图所示。

选择适当的内核选项后,保存退出。

# make (可能要很长时间)
# make modules_install
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.29.1
# cp System.map /boot/System.map-2.6.29.1
# mkinitrd /boot/initrd-2.6.29.1.img 2.6.29.1

如果在执行mkinitrd命令时,提示“No module dm-mem-cache found for kernel 2.6.29.1, 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后,就要在启动菜单中增加编译好的内核信息,以便启动时可以选择内核版本。

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

title CentOS (2.6.29.1)
     root (hd0,0)
     kernel /vmlinuz-2.6.29.1 ro root=/dev/VolGroup00/LogVol00 rhgb quiet vga=791
     initrd /initrd-2.6.29.1.img

保存,重启,进行grub的启动菜单中,选择”CentOS(2.6.29.1)”,即可使用编译好的内核。

标签:,

相关日志

Post a Comment

Your email is never published nor shared. Required fields are marked *