您的位置:首页 > 运维架构 > Linux

linux update the kernel

2012-03-28 20:21 260 查看
参照:/article/4293960.html

下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.35/linux-2.6.35.13.tar.bz2

将下载的内核文件放置/usr/src/kernel目录下,并解压缩:

tar jxvf linux-2.6.35.13.tar.bz2

开始编译内核

#make mrproper #删除之前编译所生成的文件和配置文件,备份文件等

出现错误提示,不能继续,不知道上面的大侠是咋过去的,不过错误提示中让我先运行大侠的第二步,即先运行 make menuconfig,不知道是不是因为是我第一次编译的原因,所以不需要运行此命令?

#make menuconfig #在以菜单模式进入内核配置界面

还有另外两种选择

接着执行make all,

#make all

执行结果如下:

WARNING: modpost: Found 2 section mismatch(es).

To see full details build your kernel with:

'make CONFIG_DEBUG_SECTION_MISMATCH=y'

产生了两个不匹配的警告,不知是否能忽略???

按照提示:运行make CONFIG_DEBUG_SECTION_MISMATCH=y

#make CONFIG_DEBUT_SECTION_MISMATCH=y

然后接着执行make modules命令

#make modules #编译内核模块

能够顺利运行,然后再运行make modules_install命令

#make modules_install #安装内核模块

也能够顺利运行,

安装成功后 /lib/modules目录会有一个2.6.35.13的子目录,里面放的是新内核可加载的所有模块,接着执行make install进行编译安装

#make install #编译安装

顺利通过,不过据作者说,仅修改这些的话,重启加载新内核会报错,原因是在加载逻辑卷,因此在执行完“make all”之后“linux-2.6.35.13”文件夹下会生成配置文件“.config”, 要先编辑此文件:

改“#CONFIG_SYSFS_DEPRECATED_V2 is not set”为“CONFIG_SYSFS_DEPRECATED_V2=y”

或者直接用下面sed命令更改:

[root@server linux-2.6.35.13]# sed -i 's/# CONFIG_SYSFS_DEPRECATED_V2 is not set/CONFIG_SYSFS_DEPRECATED_V2=y/' .config

修改完此配置文件后再次“make all”以及完成后续步骤。

不过我这里先跳过,不过后来确实变化启动内核 后重启确实出现这个错误。

4)解压initrd文件

[root@server linux-2.6.35.13]# cp /boot/initrd-2.6.35.13.img /tmp

[root@server linux-2.6.35.13]# cd /tmp/

[root@server tmp]# mkdir newinitrd

[root@server tmp]# cd newinitrd/

[root@server newinitrd]# zcat ../initrd-2.6.35.13.img | cpio -i

[root@server newinitrd]# vi init

# 删掉重复的两行其中一行

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

5)重新打包initrd文件

[root@server newinitrd]# find .|cpio -c -o > ../initrd

11286 blocks

[root@server newinitrd]# cd ../

[root@server tmp]# gzip -9 < initrd > initrd-2.6.35.13.img

[root@server tmp]# rm -rf /boot/initrd-2.6.35.13.img

[root@server tmp]# cp initrd-2.6.35.13.img /boot

6)修改默认以新的内核启动

[root@server tmp]# less /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/hdd3

# initrd /initrd-version.img

#boot=/dev/hdd

default=1

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.35.13)

root (hd0,0)

kernel /vmlinuz-2.6.35.13 ro root=LABEL=/ rhgb quiet

initrd /initrd-2.6.35.13.img

title CentOS (2.6.18-194.el5)

root (hd0,0)

kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ rhgb quiet

initrd /initrd-2.6.18-194.el5.img

[root@server tmp]# vi /boot/grub/grub.conf

把default=1改为default=0,然后重新启动系统

[root@server tmp]# reboot

7)重启后验证内核版本

uname -r

成功显示,如果以后不出错的话,就表明成功升级,哈哈

make xconfig 是在图形界面模式进入内核配置界面

make gconfig 在图形界面模式进入内核配置界面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: