红联Linux门户
Linux帮助

Linux内核升级

发布时间:2007-09-19 09:31:02来源:红联作者:fortemedia
自己想升级一下linux的内核,原来的版本是linux-2.6.18,下载的内核源码版本是linux-2.6.22,参考了网上的一些资料,试着升级了一下,过程如下:

备份以下这些文件可以在系统发生错误或崩溃时,能较快速的恢复系统原来的状态。

1、备份内核和启动文件

# cd /

# tar cvzf boot.tar.gz boot

2、备份系统函数头文件

# cd /usr/include

# tar cvzf linux.tar.gz linux

3、备份模块中的库文件

# cd /lib/modules

# tar cvzf 2.4.7-10.tar.gz 2.4.7-10

# tar cvzf 2.4.7-10debug.tar.gz 2.4.7-10debug

4、备份linux源码

# cd /usr/src

# tar cvzf linux-2.4.7-10.tar.gz linux-2.4.7-10

# tar cvzf linux-2.4.7-10debug.tar.gz linux-2.4.7-10debug

5、备份重要配置目录

# cd /

# tar cvzf etc.tar.gz etc

下载linux-2.6.22.tar.bz2(可以是更新的版本)到/usr/src

tar -jxvf linux-2.6.22.tar.bz2 //解压源代码

cd linux-2.6.3 //进入源代码目录

阅读顶层目录下的Readme文件和Documentation下的Changes文件,确认必须的工具软件。

例如发现module-init-tools需要更新。

升级module-init-tools软件包
要编译与正常运行新的内核你需要升级一些软件包,这些信息在源码目录下的Documentation/Changes文件中,请根据你的实际情况选择升级。

特别要说明的是,因为2.4.x下的modutils工具包已经不在适合新的2.6.x内核, 必需将其升级到module-init-tools工具包.,我下载module-init-tools-3.2.2.tar.bz2源码包。

安装module-init-tools. 它会替代depmod [/sbin/depmod]和其他工具.

tar -jxvf module-init-tools-3.0.tar.bz2

cd module-init-tools-3.0

./configure --prefix=/sbin

# make moveold

# make all install

# ./generate-modprobe.conf /etc/modprobe.conf

命令"make moveold"将把系统原来的modutils工具程序改名为"*.old"(比如,lsmod.old等等). NOTE! 这是非常重要的一步, 千万不要省略. 如果你以前的系统是linux2.4内核,这将使得你可以继续使用原有的linux-2.4.x系统, 因为在2.4.x系统下, 新的module-init-tools工具包实际上是倚赖原来"*.old"程序来加载内核模块. 如果忘记了这一步也不要紧张, 可以先下载并安装原来的modutils程序包, 然后按照上面的步骤重来一遍就可以了.新的module-init-tools工具包不再使用原来的/etc/modules.conf配置文件了, 而是使用新的配置文件/etc/modprobe.conf. 因此必需用命令"./generate-modprobe.conf /etc/modprobe.conf"来生成新的配置文件/etc/modprobe.conf.

安装modutils-2.4.21-23.src.rpm. 你可能会看到"user rusty and group rusty not existing"的警告. 没关系,你只需强制安装就是了.如果你不对Redhat 9和Redhat 8做这几步, 你将会在"make modules_install"这一步时出现问题.

rpm -i modutils-2.4.25-1.src.rpm

rpmbuild -bb /usr/src/redhat/SPECS/modutils.spec

rpm -Fi /usr/src/redhat/RPMS/i386/modutils-2.4.25-1.i386.rpm

这步的具体作用还没有搞懂。

编译Linux内核

cd /usr/src/linux-2.6.22

make menuconfig

输入以上命令后出现一个菜单界面,用户可以对需要的模块.下面着重讲几个重要的配置:

1)文件系统

请务必要选中ext3文件系统,

File systems--->

[*] Ext3 journalling file system support

[*] Ext3 Security Labels

[*] JBD (ext3) debugging support

以上三项一定要选上,而且要内建(即标*). 这个非常重要,在配置完后一定要检查一下.config文件有没有"CONFIG_EXT3_FS=y"这一项. 如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed

2)网卡驱动

请务必把自己网卡对应的驱动编译进内核,比较普遍的网卡是realtek 8139,以下就是这种网卡的配置,以供参考

Device Drivers--->

Networking support--->

Ethernet (10 or 100Mbit) --->

<*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)

<*> RealTek RTL-8139 PCI Fast Ethernet Adapter support

3)声卡驱动

也要选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考

Device Drivers --->

Sound --->

<*> Sound card support

Advanced Linux Sound Architecture --->

<*> Advanced Linux Sound Architecture

<*> Sequencer support

< > Sequencer dummy client

<*> OSS Mixer API

<*> OSS PCM (digital audio) API[*] OSS Sequencer API

<*> RTC Timer support

PCI devices --->

<*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111

Open Sound System --->

< > Open Sound System (DEPRECATED)

以上三项配置关系到新内核能否正常运行,请备加注意.其他的配置如果不是很了解,大可以按默认的选择.

也可以执行make oldconfig,对kernel2.6新增的不熟悉的选项作不选或为缺省。

make bzImage

make modules

make modules_install

pwd

/usr/src/linux-2.6.22

mv arch/i386/boot/bzImage /boot/vmlinuz-2.6.22

mv System.map /boot/System.map-2.6.22

cd /boot

mv System.map oldSystem.map

ln -s System.map-2.6.22 System.map

修改grub配置文件

下面的配置可作参考

# 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,6)

# kernel /vmlinuz-version ro root=/dev/hda10

# initrd /initrd-version.img

#boot=/dev/hda

default=1

timeout=5

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

hiddenmenu

title Red Hat Linux (2.6.22)

root (hd0,6)

kernel /vmlinuz-2.6.22 ro root=/dev/hd0

initrd /initrd-2.6.22.img

title Fedora Core (2.6.18-1.2798.fc6)

root (hd0,6)

kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/1 rhgb quiet

initrd /initrd-2.6.18-1.2798.fc6.img

title Windows XP

rootnoverify (hd0,0)

chainloader +1
文章评论

共有 1 条评论

  1. conanx 于 2007-09-27 10:16:56发表:

    搞不明白你到底在说什么那种内核升级????