centos 内核升级(2.6.18-194.el5升2.6.30)

2012-04-11  王少平 

CentOS 5.5,内核是2.6.18-194.el5现在要升级为2.6.30。
[root@localhost ~]# uname -r
2.6.18-194.el5
1.下载linux-2.6.30内核包到/usr/src目录
cd /usr/src
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.tar.gz
tar -xzvf linux-2.6.30.tar.bz2 -C /usr/src
cd linux-2.6.30


注:以下步骤需要gcc和ncurses-devel,如果没有安装的话且网络可以使用,可以通过yum install gcc (redhat),apt-get install gcc (ubuntu)在线进行安装,一路y即可安装成功。

make mrproper  清除环境变量,即清除配置文件

make menuconfig 在菜单模式下选择需要编译的内核模块:

networking support—>networking options—>network packet filtering framework(netfilter)

(1).core netfilter configuration
A 勾中”Netfilter connection tracking support”  -m state相关模块是依赖它的,不选则没有。
B 将netbios name service protocal support(new)   编译成模块,不然后面升级iptables后启动时会出错
C 勾中“Netfilter Xtables support (required for ip_tables)”
(2).IP: Netfilter Configuration
A 将 “IPv4 connection tracking support (require for NAT)” 编译成模块。
B 勾中IP tables support (required for filtering/masq/NAT) 。
C 将 “Full NAT” 下的 “MASQUERADE target support” 和 “REDIRECT target support” 编译成模块
(3).其它模块可以根据自己的需要进行选择,若不懂可以参考内核配置手册.

make clean  确保所有东西均保持最新状态.
make bzImage  生成内核文件
make modules 编译模块
make modules_install 安装模块
make install  安装
mkinitrd  /boot/initrd_2.6.30.img  2.6.30  根据内核版本和指定参数生成映像文件
cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.30
cp /usr/src/linux-2.6.30/System.map /boot/System.map-2.6.30

2.在/etc/grub.conf添加如下2.6.30的信息,并把default=1改为default=0
[root@localhost ~]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.18-194.el5.img

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

[root@localhost]cp /boot/initrd-2.6.30.img /tmp

[root@localhost]cd /tmp/
[root@localhost tmp]mkdir newinitrd
[root@localhost tmp]cd newinitrd/
[root@localhost newinitrd]zcat ../initrd-2.6.30.img |cpio -i
[root@localhost newinitrd]vi init             删掉重复的如下两行:
echo “Loading dm-region-hash.ko module”
insmod /lib/dm-region-hash.ko

[root@localhost newinitrd]# find .|cpio -c -o > ../initrd
14765 blocks
[root@localhost newinitrd]# cd ..
[root@localhost tmp]# gzip -9 < initrd > initrd-2.6.30.img
[root@localhost tmp]# ls
gconfd-root  initrd  initrd-2.6.30.img  mapping-root  newinitrd  scim-panel-socket:0-root
[root@localhost tmp]# mv /boot/initrd-2.6.30.img /home/
[root@localhost tmp]# cp initrd-2.6.30.img /boot/
[root@localhost tmp]#reboot


4.重启成功后,再看看内核,是2.6.30,ok了。
[root@localhost ~]# uname -r
2.6.30


各种折腾后,启动时有很多failed,不知道会不会影响以后的操作,先这样吧。。。。出问题再解决。。

430°/4306 人阅读/0 条评论 发表评论

登录 后发表评论