自己想升级一下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
conanx 于 2007-09-27 10:16:56发表:
搞不明白你到底在说什么那种内核升级????