首先还是要说在 RH8/RH9 上最好升级回与原版本相同的内核(如 kernel-2.4.xx )否则会因为版本差别太大而造成很多不必要的麻烦。废话少说,下面开始升级

一. 在升级前必须对以下的组件升级
1. 升级 device-mapper,在 ftp://sources.redhat.com/pub/dm下载
cd /usr/src
tar -zxvf device-mapper.1.01.04.tgz
cd device-mapper.1.01.04
./configure --perfix=/
make all
make install

2. 安装 LVM2,在 ftp://sources.redhat.com/pub/lvm2下载
cd /usr/src
tar -zxvf LVM2.2.01.14.tgz
cd LVM2.2.01.14
./configure --perfix=/
make all
make install
PS: 如果 make 时出错,可能是与系统原来的LVM1有冲突,可以 rpm -e --nodeps lvm 把原LVM1删除掉,再重新编译过device-mapper 和 LVM2。

3. 升级 mkinitrd 在 http://rpm.pbone.net/ 下查找
rpm -Uvh mkinitrd-3.5.11-3.9.i386.rpm

4.update modutils 在 ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils/下载
cd /usr/src
tar -zxvf modutils-2.4.27.tar.gz
cd modutils-2.4.27
./configure --perfix=/
make all
make install

5.安装module-init-tools,在 ftp://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools 下载
cd /usr/src
tar -zxvf module-init-tools-3.2-pre9.tar.gz
cd module-init-tools-3.2-pre9
./configure --prefix=/
make moveold

ps:"make moveold"将把系统原来的modutils工具程序改名为"*.old"(比如,lsmod.old等,是非常重要的一步! 如果忘记了这一步也不要紧张, 可以按照上面的步骤4重装一遍modutils就可以了.

make

ps: 用module-init-tools-3.1 编译时会出现 "make: *** [modprobe.conf.5] Error 127"

建议用 3.0 或 3.2-pre 版

make install
./generate-modprobe.conf /etc/modprobe.conf

二. 升级内核,
ftp://ftp.kernel.org/pub/linux/kernel/ 下载
cd /usr/src
tar -zxvf linux-2.6.13.3.tar.gz
cd linux-2.6.13.3.tar
bzip2 -dc patch-2.6.13.3.bz2 | patch -p1 -R ;打补丁
make mrproper ;初次编译可以不运行这一步
make clean ;初次编译不用运行这一步,第2次编译时把上一次编译出来的删除掉
make menuconfig ; 配置内核

ps:另外可以用以下命令代替
1. make config ;基于文本的最为传统的配置界面
2. make oldconfig ;自动保存为旧版的设置
3. make menuconfig ;txt界面下的菜单设置
4. make xconfig ;kernel 2.6 下新图形窗口模式的配置界面需要PQ库的支持
5. make gconfig ;旧的图形窗口模式的配置界面

要点: 1. Device Drivers -->Block devices--〉Initial RAM disk (initrd) support 一定要选上(Y),Default RAM disk size一定要改成16384以上
2. 有SCSI卡(如VMware 中的BusLogic BT946C) 的要把它编译成模块(M) 不然会在make install 出错
3. USB support 选模块(M) USB HID Boot Protocol drivers 中的 Keyboard/Mouse选(M)
4. Sound card support 可以选上新支持的模块Advanced Linux Sound Architecture ,至于旧的Open Sound System 模块就不要再选了.
关键是把Sound card support 以及 Advanced Linux Sound Architecture 里面的选项选成模块(M)
5. 通过lspci 命令查看硬件设备, 如有列出的一定要在 config 时选上

make ;漫长的编译过程,你可以走出去喝茶吃包,回来还没有编译完...
ps:在kernel 2.6 下已经省略了 make dep这一步

make modules_install install ; 安装内核及模块。安装完成后可以重启进入新的内核

三. 在新内核里发现有不少的改变,如果要正常运行必须要做一些修改,
1.在修改之前先备份以下文件(好的习惯)
/etc/rc.sysinit
/etc/fstab
/etc/rc.d/init.d/halt
/etc/modprobe.conf

2.新增的文件系统 sysfs
1. mkdir /sys
2. 在 /etc/rc.sysinit 中
找 mount -f /proc 在其后加上在下面加上 mount -f /sys
再顺便把下一行 [ -f /proc/bus/usb/devices ] && mount -f -t usbdevfs usbdevfs /proc/bus/usb 改成 [ -f /sys/bus/usb/devices ] && mount -f -t usbfs usbfs /sys/bus/usb

找 action $"Mounting proc filesystem: " mount -n -t proc /proc /proc 在其后加上在下面加上 action $"Mounting sysfs filesystem: " mount -n -t sysfs /sys /sys
3. 在/etc/fstab中加上一行 none /sys sysfs defaults 0 0
4. 修改 /etc/rc.d/init.d/halt
找 awk '$2 ~ /^/$|^\/proc|^\/dev/{next}
改成 awk '$2 ~ /^/$|^\/proc|^\/sys|^\/dev/{next}
找 [ -f /proc/bus/usb/devices ] && umount /proc/bus/usb
改成 [ -f /sys/bus/usb/devices ] && umount /sys/bus/usb
5.找 rc.sysinit和/etc/rc.d/init.d/halt 中的所有 /proc/bus/usb 改成 /sys/bus/usb

2.ps/2鼠标设备从原来的/dev/psaux 改成 /dev/input/mice
rm /dev/psaux
ln -s /dev/psaux /dev/input/mice

3.USB模块名的更改
打开 /etc/rc.sysinit,找
usb=0

if ! LC_ALL=C grep -iq "nousb" /proc/cmdline 2>/dev/null && ! LC_ALL=C grep -q "usb" /proc/devices 2>/dev/null ; then

aliases=`/sbin/modprobe -c | awk '/^alias usb-controller/ { print $3 }'`

if [ -n "$aliases" -a "$aliases" != "off" ]; then

modprobe usbcore

for alias in $aliases ; do

[ "$alias" != "off" ] && action $"Initializing USB controller ($alias): " modprobe $alias

done

[ $? -eq 0 -a -n "$aliases" ] && usb=1

fi

fi



if ! LC_ALL=C grep -iq "nousb" /proc/cmdline 2>/dev/null && LC_ALL=C grep -q "usb" /proc/devices 2>/dev/null ; then

usb=1

fi



if [ $usb = 1 -a ! -f /proc/bus/usb/devices ]; then

action $"Mounting USB filesystem: " mount -t usbdevfs usbdevfs /proc/bus/usb

fi



needusbstorage=

if [ $usb = "1" ]; then

needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /proc/bus/usb/devices 2>/dev/null`

LC_ALL=C grep 'hid' /proc/bus/usb/drivers || action $"Initializing USB HID interface: " modprobe hid 2> /dev/null

action $"Initializing USB keyboard: " modprobe keybdev 2> /dev/null

action $"Initializing USB mouse: " modprobe mousedev 2> /dev/null

fi

改成

modprobe usbcore
action $"Initializing USB controller (uhci-hcd): " modprobe uhci-hcd

usb=1



if [ $usb = 1 -a ! -f /sys/bus/usb/devices ]; then

action $"Mounting USB filesystem: " mount -t usbfs usbfs /sys/bus/usb

fi



needusbstorage=

if [ $usb = "1" ]; then

needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /sys/bus/usb/devices 2>/dev/null`

action $"Initializing USB HID interface: " modprobe usbhid 2> /dev/null

action $"Initializing USB keyboard: " modprobe usbkbd 2> /dev/null

action $"Initializing USB mouse: " modprobe usbmouse 2> /dev/null

fi

ps: 2.6中模块名已经改了
usb_huic --> uhci-hcd ; uhci-hcd 是通用控制器/ ochi-hcd USB-1.1控制器 / ehci-hcd USB-2.0控制器
hid --> usbhid ;输入模块
keybdev --> usbkbd ;键盘模块
mousedev --> usbmouse ;鼠标模块
4.新增的声卡模块ALSA
1). 首先把Sound card support 以及 Advanced Linux Sound Architecture 里面的选项编译成模块(M)
2). 把 /etc/modprobe.conf 里有关声卡的选项除了 alias char-major-14-* soundcore 外都删除掉
ps:ALSA是需要soundcore的支持.通过命令modinfo soundcore 可以看到以下信息
description: Core sound module
author: Alan Cox
license: GPL
alias: char-major-14-*
vermagic: 2.6.13 PENTIUM4 REGPARM gcc-3.2
depends:
srcversion: 6E1C8780DE9ADFFB5BCD439

3). 启动新内核后必须要安装 alsa-lib-1.0.9.tar.bz2 和 alsa-utils-1.0.9.tar.bz2 你可以到官方网站 http://www.alsa-project.org/ 下载。
cd /usr/src
tar -jxvf alsa-lib-1.0.9.tar.bz2
tar -jxvf alsa-utils-1.0.9.tar.bz2
cd alsa-lib-1.0.9
./configure;make;make install
cd ../alsa-utils-1.0.9
./configure;make;make install

4). 装完alsa-lib / alsa-utils 后就可以通过alsaconf来对声卡作设置
5). 用lsmod看到声卡模块被加载
6). 用alsamixer设置声卡音量
7). 测试声卡可以 aplay /usr/share/sounds/alsa/Front_Center.wav,终于能发声了,兴奋ing...
Cool. 重启内核后发现声卡模块可能无法正常加载, 可以在 /etc/rc.d/rc.local 加入 modprobe 声卡模块名 让内核启动时自动加载声卡
9). 有关 ALSA 的详细说明请在官方网站 http://www.alsa-project.org/alsa-doc/ 选上你声卡的型号查看

5.rpm 问题,在新内核起动后,rpm有些功能不能使用,并出现下列错误
rpmdb: unable to join the environment
error: db4 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db3 - Resource temporarily unavailable (11)
error: cannot open Packages database in /var/lib/rpm
no packages

解决方法是,运行 export LD_ASSUME_KERNEL=2.2.5 并把才句加入 /etc/bashrc 里面
再 rpm -q mkinitrd 看一下, 正常了。

6.CD-ROM 模块的改变
1). vi /etc/fstab 把

/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0

改成

/dev/hdc /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0

2). mount /dev/hdc

spb就只能在R9上装的
并且 mount -t usbdevfs usbdevfs /proc/bus/usb
好象不对阿,因该是
mount -t usbfs usbfs /proc/bus/usb
并且2.6的usb鼠标需要
modprobe ehci-hcd
modprobe ohci-hcd
modprobe usbhid
modprobe evdev
modprobe parport
modprobe parport_pc