QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9286|回复: 26

原创!RH8/RH9 升级到最新内核2.6.13完全篇

[复制链接]
发表于 2005-10-17 13:25:09 | 显示全部楼层 |阅读模式
首先还是要说在 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 --prefix=/
   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 --prefix=/
   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 --prefix=/
   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
 楼主| 发表于 2005-10-17 13:27:11 | 显示全部楼层
二. 升级内核,
在 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 ; 安装内核及模块。安装完成后可以重启进入新的内核
回复

使用道具 举报

 楼主| 发表于 2005-10-17 13:32:19 | 显示全部楼层
三. 在新内核里发现有不少的改变,如果要正常运行必须要做一些修改,
    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...
            . 重启内核后发现声卡模块可能无法正常加载, 可以在 /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
回复

使用道具 举报

发表于 2005-10-17 23:40:01 | 显示全部楼层
楼主辛苦了

不过,直接安装fc4之类的不是更省事嘛
回复

使用道具 举报

发表于 2005-10-27 23:31:34 | 显示全部楼层
无论怎么样楼主辛苦你
回复

使用道具 举报

发表于 2005-11-17 11:31:09 | 显示全部楼层
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
回复

使用道具 举报

发表于 2005-11-21 15:42:11 | 显示全部楼层
"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"

楼主,我用的LVM2.2.01.15.tgz和LVM2.2.02.00到make all这一步都是报什么"No rules for target 'all'. Stop", 是怎么回事呢?
回复

使用道具 举报

发表于 2005-12-1 12:31:24 | 显示全部楼层
想问下跨版本升级会有什么问题呢?
回复

使用道具 举报

 楼主| 发表于 2005-12-2 05:38:53 | 显示全部楼层
[quote:5318f4e94d="begin_linux"]想问下跨版本升级会有什么问题呢?[/quote]

主要都是模块名改变引起的问题,最明显的就是usb不能使用
回复

使用道具 举报

 楼主| 发表于 2005-12-2 05:41:12 | 显示全部楼层
[quote:4fc5818e41="hai_jj"]"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"

楼主,我用的LVM2.2.01.15.tgz和LVM2.2.02.00到make all这一步都是报什么"No rules for target 'all'. Stop", 是怎么回事呢?[/quote]

等我找一下,lvm的问题好像以前也遇见过,后来忘记了怎么解决了。
回复

使用道具 举报

发表于 2005-12-2 23:30:56 | 显示全部楼层
[quote:3d896d35e5="kenzgzcn"][quote:3d896d35e5="begin_linux"]想问下跨版本升级会有什么问题呢?[/quote]

主要都是模块名改变引起的问题,最明显的就是usb不能使用[/quote]

要怎样解决呢?
回复

使用道具 举报

发表于 2005-12-13 16:43:47 | 显示全部楼层
make mrproper这一步有什么用呢?
回复

使用道具 举报

发表于 2005-12-18 11:14:34 | 显示全部楼层
[root@localhost linux-2.6.14.2]# make install
  CHK     include/linux/version.h
  CHK     include/linux/compile.h
  CHK     usr/initramfs_list
Kernel: arch/i386/boot/bzImage is ready  (#1)
sh /usr/src/linux-2.6.14.2/arch/i386/boot/install.sh 2.6.14.2 arch/i386/boot/bzImage System.map "/boot"
No module /bin/true found for kernel 2.6.14.2
mkinitrd failed
make[1]: *** [install] Error 1
make: *** [install] Error 2


我的出错是这样的,该如何 解决?我已经编了5次,都是一样的错误!!
回复

使用道具 举报

发表于 2005-12-21 10:45:01 | 显示全部楼层
如何在RH9 升级XFree86-4.3.0-2到XORG
http://xorg.freedesktop.org/releases/X11R7.0/src/
回复

使用道具 举报

发表于 2005-12-26 10:36:58 | 显示全部楼层

Re: 原创!RH8/RH9 升级到最新内核2.6.13完全篇

[quote:b79dd06823="kenzgzcn"]

一. 在升级前必须对以下的组件升级

    .
    .
    .
    .
  
  ./generate-modprobe.conf /etc/modprobe.conf[/quote]


这最后一句什么意思?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-26 05:19 , Processed in 0.080167 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表