免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1472 | 回复: 0
打印 上一主题 下一主题

RedHat9.0内核升级(从2.4.20-8到2.6.18) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-30 01:38 |只看该作者 |倒序浏览

1.首先必须对一些相关软件进行升级
内核升级中用到下面几个软件(软件版本号并不要求一定是下面列出来的):
device-mapper.1.01.04
LVM2.2.01.14
mkinitrd-4.1.18-2
modutils-2.4.27
module-init-tools-3.2.2
所有这些软件可以去下面几个网站下载:
www.chinaunix.net
www.kernel.org
rpm.pbone.net

下面就是我下载的几个软件,可以去91files我的页面下载(
下载页面
):
device-mapper.1.01.04.tgz
LVM2.2.01.14.tgz
mkinitrd-4.1.18-2.i386.rpm
modutils-2.4.27.tar.bz2
module-init-tools-3.2.2.tar.bz2
1.1 安装 device-mapper
#tar -zxvf device-mapper.1.01.04.tgz
#cd device-mapper.1.01.04
#./configure --prefix=/usr 否则LVM2在配置时找不到libdevmapper.h
#make all
#make install
1.2 安装 LVM2
#tar -zxvf LVM2.2.01.14.tgz
#cd LVM2.2.01.14
#./configure --prefix=/
#make all
#make install
1.3 升级 mkinitrd
#rpm -Uvh --nodeps mkinitrd-4.1.18-2.i386.rpm
这里要加上“--nodeps”,不然又显示没装LVM2的错误了。
1.4 升级 modutils
#tar -xvjf modutils-2.4.27.tar.bz2
#cd modutils-2.4.27
#./configure --prefix=/
#make all
#make install
1.5 安装 module-init-tools
#tar -xvjf module-init-tools-3.2.2.tar.bz2
#cd module-init-tools-3.2.2
#./configure --prefix=/
#make moveold
#make
#make install
2. 编译和安装内核
下载内核文件,我下载的是linux-2.6.18.tar.bz2(可以去
www.kernel.org
下载)
拷贝到/usr/src目录并解压缩,注意一定要在Linux下解开,如果你是在Windows下解开Linux内核的话就会遇到
这个问题,因为Windows不区分文件大小写, ipt_TOS.c和ipt_tos.c在Windows中是一回事,就被替换掉了,改
在Linux下解开它就没有问题了。
#cd /usr/src
#tar -xvjf linux-2.6.18.tar.bz2
#make mrproper
#make menuconfig(这里需要对一些选项进行配置,请参照第三部分)
#make
#make modules_install
#make install
3. 内核选项
配置2.6.18内核时如果你的主板是Intel芯片的话,你用默认配制也许就可以得到一个满意的内核。这里的难点是虚拟机下的SCSI选项,弄不好内核编译就必然失败。还有就是网卡,声卡芯片的型号了,他们的型号你都可以用lspci(非常重要的命令)查找到。你只要把你pci上的东西全部选择对了,剩下就用默认的就可以了。
3.1 Device Drivers -> Block devices ->
RAM disk support
(16) Default number xxxxx
(16384) Default RAM disk size 一定要改为16384以上
  • Initial RAM disk (initrd) support
    3.2 有SCSI卡(如VMware中的BusLogic BT946C) 的要把它编译成模块(M) 不然会在make install 出错。
    (其它关于SCSI的选项为内核内建,Buslogic可以选择为模块,只是最后需要制作initrd模块)
    Device Drivers->SCSI device support->SCSI device support
    Device Drivers->SCSI device support->SCSI disk support
    Device Drivers->SCSI device support->SCSI low-level drivers->BusLogic SCSI support
    Device Drivers ---> Fusion MPT device support --->
    Fusion MPT (base + ScsiHost) drivers
    Fusion MPT misc device (ioctl) driver(这个不确定)
    3.3 网卡驱动:请务必把自己网卡对应的驱动编译进内核,常用的网卡是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
    AMD PCnet32 PCI support(虚拟机)
    3.4 USB支持
    Device Drivers ---> USB support ---> USB Mass Storage support
    Device Drivers -> USB support ->USB HID Boot Protocol drivers ->
    [ M ] USB HIDBP Keyboard support
    [ M ] USB HIDBP Mouse support
    必须选,否则不支持USB鼠标和USB键盘
    3.5 CDROM支持
    Device Drivers --->
    ATA/ATAPI/MFM/RLL support
    Intel PIIXn chipsets support
    如果这一项不选则升级内核后无法挂载CDROM。 (根据你的CDROM类型自行选择)
    3.6 声卡驱动Sound card support ,也要选择自己声卡对应的驱动编译进内核,比较普遍的声卡是AC97,以下就是这种声卡的配置。
    关键是把Sound card support 以及 Advanced Linux Sound Architecture 里面的选项选成模块(M)
    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/SiS/nVidia/AMD/ALi AC97 Controller
    (Creative) Ensoniq AudioPCI 1371/1373 (虚拟机)
    Open Sound System --->
    Open Sound System (DEPRECATED)
    可以选上新支持的模块Advanced Linux Sound Architecture ,至于旧的Open Sound System 模块就不要再选了。
    3.7 文件系统
    请务必要选中ext3文件系统,
    File systems--->
  • Ext3 journalling file system support
  • Ext3 Security Labels
  • JBD (ext3) debugging support
    File Systems --->Psedo File Systems --->
    [ * ] devfs support (OBSOLETE)
    [ * ] Automatically mount at boot
    配置内核是大多数新手编译内核时最大的难点,只要将以上选项编译进内核,成功的机会是大大的。
    4. 修改相应文件已适应2.6内核
    4.1 grub.conf
           这里要说明下关于/boot/grub/grub.conf这个文件,我看到网上有的说要修改grub.conf这个文件,去掉ro root=LABEL=/.我没有修改,直接就重启,成功进入运行内核.另外,我需要说明一点,RH 9.0的grub.conf较Fedora的缺少"rhgb".如果重启后出现问题修改成 ro root=LABEL=/dev/hda10(hda10是根据自己的机子决定)
    4.2 支持Hotplug
           需要改一个最重要的文件/etc/rc.sysconfig 这是一个ln 连接。正真的文件在/etc/rc.d/里.当然, 首先要在内核配置时配置了HOTPLUG的支持. 然后,由于/proc/ksyms改名为/proc/kallsyms,所以必需修改启动脚/etc/rc.sysinit.
    为了兼容原有的linux-2.4.x系统, 可以加上下面几行:
    #
    # ----- KERNEL 2.6.x support ------
    # This is for compatibility between kernel-2.4.x and
    kernel-2.6.x
    #
    UNAME=`uname -r`
    KERNELVER=$
    if [ "$KERNELVER" = "2.6" ]; then
    #
    # This is kernel-2.6.x
    #
    KSYMS=/proc/kallsyms
    else
    #
    # This is kernel-2.4.x
    #
    KSYMS=/proc/ksyms
    fi
    然后, 把rc.sysinit文件中所有出现/proc/ksyms的地方都换成"$KSYMS"变量引用. 配置好后,还必需下载hotplug的用户态辅助工具包hotplug-2004_09_23.tar.gz. 解开这个包以后,直接"make install"就可以了.它将产生/etc/hotplug/配置目录.我的配置文件需要修改的地方只有
    [ -r /proc/ksyms ] && cat /proc/ksyms
    4.3 体验sysfs
           首先, 创建目录/sys:
    # mkdir /sys
    然后, 按照下列步骤修改启动脚本/etc/rc.sysinit文件:
    o 找到行: mount -f /proc", 在下面增加:
    if [ "$KERNELVER" = "2.6" ]; then
    mount -f /sys
    fi
    o 找到行:
    如果是RH 9.0,就是action $"Mounting proc filesystem: " mount -n -t proc /proc /proc
    如果是Fedora,就是action $"Mounting local filesystems: " mount -a -t nonfs,smbfs,ncpfs -O no_netdev
    在其下面增加下列几行:
    #
    # Mount /sys for kernel-2.6.x
    #
    if [ "$KERNELVER" = "2.6" ]; then
    action $"Mounting sysfs filesystem: " mount -n -t sysfs /sys /sys
    fi
    接下来, 在/etc/fstab文件中, 加入这样一行:
    none /sys sysfs defaults 0 0
    最后, 修改/etc/init.d/halt脚本中的halt_get_remaining函数:
    将:
    awk '$2 ~ /^\/$|^\/proc|^\/dev/{next}
    改为:
    awk '$2 ~ /^\/$|^\/proc|^\/sys|^\/dev/{next}
       
    4.4 支持USB设备
    linux-2.6.x的USB驱动模块的名字已经改变了, 所以由此引起的问题多多......,
    对应于USB-2.0的host控制器的内核模块名字仍然是ehci-hcd,
    对应USB-1.1的host控制器的内核模块名字已经从usb-ohci改为ochi-hcd,
    对应于通用USB host控制器的内核模块名字已经从usb-uhci该为uhci-hcd.
    然而不幸的是, 在安装module-init-tools程序包时生成的/etc/modprobe.conf配置文件却仍然使用usb-ohci这个名字. 例如:
    alias usb-controller usb-ohci
    alias usb-controller1 ehci-hcd
    因此, 要把它改为:
    alias usb-controller ohci-hcd
    alias usb-controller1 ehci-hcd
    如果不做这样的修改, 那么使用USB-1.1 host控制器的机器在启动内核的时候将着不到相应的驱动模块.
    支持USB键盘的模块名字也从keybdev变为usbkbd, 支持USB鼠标的模块名字也从mousedev改为usbmouse.
    因此, 我们必需修改启动脚本/etc/rc.sysinit文件. 同时为了兼容原有的2.4.x系统, 我们在脚本的一开始定义两个变量:
    #
    # ----- KERNEL 2.6.x support ------
    # This is for compatibility between kernel-2.4.x and kernel-2.6.x
    #
    UNAME=`uname -r`
    KERNELVER=${UNAME:0:3}
    if [ "$KERNELVER" = "2.6" ]; then
    #
    # This is kernel-2.6.x
    #
    KSYMS=/proc/kallsyms
    KEYBDEV_NAME=usbkbd
    MOUSEDEV_NAME=usbmouse
    else
    #
    # This is kernel-2.4.x
    #
    KSYMS=/proc/ksyms
    KEYBDEV_NAME=keybdev
    MOUSEDEV_NAME=mousedev
    fi
    然后, 把/etc/rc.sysinit脚本文件中出现keybdev和mousedev的地方都改为
    $KEYBDEV_NAME和$MOUSEDEV_NAME. 把脚本文件/etc/rc.sysinit中的needusbstorage部分从:
    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_NAME 2> /dev/null
    action $"Initializing USB mouse: " modprobe $MOUSEDEV_NAME 2> /dev/null
    fi
    改为:
    needusbstorage=
    if [ $usb = "1" ]; then
    if [ "$KERNELVER" = "2.6" ]; then
    needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /sys/bus/usb/devices 2>/dev/null`
    LC_ALL=C grep 'hid' /sys/bus/usb/drivers || action $"Initializing USB HID interface: " modprobe hid 2> /dev/null
    else
    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
    fi
    action $"Initializing USB keyboard: " modprobe $KEYBDEV_NAME 2> /dev/null
    action $"Initializing USB mouse: " modprobe $MOUSEDEV_NAME 2> /dev/null
    fi


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/108239/showart_2134982.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP