Chinaunix首页 | 论坛 | 博客
  • 博客访问: 413401
  • 博文数量: 89
  • 博客积分: 1386
  • 博客等级: 中尉
  • 技术积分: 827
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-20 10:32
个人简介

12年 linux 系统运维工程师,网络架构设计、优化,故障处理。

文章分类

全部博文(89)

文章存档

2019年(1)

2015年(2)

2014年(11)

2013年(14)

2012年(2)

2011年(59)

分类: LINUX

2011-11-15 16:06:14

因要测试一些软件,需要2.6.30以上的内核,安装好CentOS 5.5,内核是2.6.18-194.el5.这次的升级还算比较顺利,具体的过程如下:
[root@localhost ~]# uname -r
2.6.18-194.el5
1.下载linux-2.6.30内核包到/usr/src目录
cd /usr/src
wget
tar -xzvf linux-2.6.38.tar.bz2 -C /usr/src
cd linux-2.6.38
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” 编译成模块
如果要安装iotop工具,在编译内核的时候一定要把:General setup ——Enable per-task storage  I/O accounting这个选项选上。

(3).其它模块可以根据自己的需要进行选择,若不懂可以参考内核配置手册.
如果是LVM文件系统 需要注意的是:在2.6.xx版的内核中在配置文件中有部分配置需要手动修正:

CONFIG_SYSFS_DEPRECATED=y

CONFIG_SYSFS_DEPRECATED_V2=y

否则在使用LVM的linux系统下,内核编译成功但是会提示找不到VolGroup00等错误,并直接导致内核启动失败,文件系统挂载出错。

开始升级:

make clean   确保所有东西均保持最新状态.
make bzImage   生成内核文件
make modules 编译模块
make modules_install 安装模块
make install   安装

2.并把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/rootvg/rootvol
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.38)
        root (hd0,0)
        kernel /vmlinuz-2.6.38 ro root=/dev/rootvg/rootvol
        initrd /initrd-2.6.38.img
title CentOS (2.6.18-194.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/rootvg/rootvol
        initrd /initrd-2.6.18-194.el5.img
                                         
3.此步若没有操作,重启会报错”insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits”,原因是重复了,根据网上查到的资料,2.6.x自编译内核会有这个小bug,我测试过不修改直接重启,虽然有报错,但仍然可以进入系统的.
[root@localhost]cp /boot/initrd-2.6.38.img /tmp
[root@localhost]cd /tmp/
[root@localhost tmp]mkdir newinitrd
[root@localhost tmp]cd newinitrd/
[root@localhost newinitrd]zcat ../initrd-2.6.38.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.38.img
[root@localhost tmp]# ls
gconfd-root   initrd   initrd-2.6.38.img   mapping-root   newinitrd   scim-panel-socket:0-root
[root@localhost tmp]# mv /boot/initrd-2.6.38.img /home/
[root@localhost tmp]# cp initrd-2.6.38.img /boot/
[root@localhost tmp]#reboot

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

阅读(1207) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~