SCSI+VMWARE+REDHAT内核升级总结

    技术2022-05-19  17

    最近两天又忙活了一下将虚拟机里的redhat9的内核从2.4.20-8升级到2.6.20.1,经过各种收集资料,各种命令学习(之前的图形界面让我弄坏了,只能输命令)和不懈的努力,最终升级成功了。现在将搜集到的一些重要资料以及我在这过程中的一些操作写下来,以备以后再用。

    一、       软件配置

        虚拟机:7.1.2 build-301548

        操作系统:RedHat9

        内核版本:linux-2.4.20-8

    二、       升级内核

    前期准备:

    1.去linux的官方网站上下一个linux 2.6的内核!http://www.kernel.org

    2.安装一个modules-init-tools-3.0.tar.gz工具包,因为2.4.x的modutils工具包已经不适合新的2.6.x内核,必须将它升级到modele-init-tools工具包。可以到

    http://www.kernel.org/pub/linux/utils/kernel/modele-init-tools-3.0.tar.gz下载

    3.安装modele-init-tools工具包

    #configure --prefix=/#make moveold (将原来的工具程序改名,这样还可继续使用原来的2.4.x内核)

    #make all install

    #./generate-modprobe.conf /etc/modprobe.conf(生成2.6.x内核的新配置文件)

    4.安装Mkinitrd 4.1.18-2 工具包

    将当前目录切换到mkinitrd-4.1.18-2.i386.rpm、device-mapper-1.00.19-2.i386.rpm和lvm2-2.00.25-1.01.i386.rpm的下载目录(三个文件最好在同一目录)下,依次执行如下命令(注意,这里是有序的执行):

      #rpm -ivh --nodeps --force device-mapper-1.00.19-2.i386.rpm

      #rpm -ivh --nodeps --force lvm2-2.00.25-1.01.i386.rpm

      #rpm -ivh --nodeps --force mkinitrd-4.1.18-2.i386.rpm

    以上文件下载地址为http://download.csdn.net/down/1339935/wgain

    该地址需要有的账号。

    5.安装binutils-2.17.tar.gz,(这个是升级虚拟机中的LINUX所必备的),依次执行如下命令:

    #tar zxf binutils-2.17.tar.gz

    #cd binutils-2.17

    #./configure

    #make

    #make install

    该文件的下载地址为http://down1.chinaunix.net/distfiles/binutils-2.17.tar.gz

    6.在升级之前,还要确定以下一些软件不低于以下的版本:

    Name:            Minimum version:     How to find version:

    Gnu C Compiler       2.95.3            #gcc --version

    Gnu Make             3.78              #make --version

    binutils             2.12              #ld -v

    util-linux           2.10o             #fdformat --version

    module-init-tools    0.9.9             #depmod -V

    procps               2.0.9             #ps –version

    (参见“Documentation/Change”中的最新更新)

    接下来正式开始升级:

    1.配置内核

    解压内核文件

    #tar xzvf linux-2.6.20.tar.gz /usr/src/

    清除冗余文件

    #cd linux-2.6.20.1

    #make mrproper

    #make clean

    生成Makefile文件,如果已经有Makefile文件了,就可以不做此条命令。

    #./configure 

    开始配置内核

    #make menuconfig

    关于menuconfig中的配置,详细参考说明在后面日志,以下是几点值得注意:

    #make menuconfig后会出现一个图形界面,列出了所有的内核配置选项,其中有几项是必需的,用“Y”键选中:

    ①“Loadable Module support”中,选“Module unloading”和“Automatic kernel module loading”;

    ②“Device Drivers”→“Block Devices”中,选“Loopback device support”;

    ③“Device Drivers”→“Multi-device support(RAID and LVM)”中,选“device mapper support”;

    ④“Device Drivers”→“Graphics support”中,选“Support for frame buffer devices”;

    ⑤“Device Drivers”→“USB support”中,若不在虚拟机环境中,应尽量全选以支持USB;

    注意,在Vmware下以下选项必须选上,否则编译要出问题:

    ⑥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(这个不确定)。

    ⑨Device Drivers ---> USB support ---><*> USB Mass Storage support (*suppor for host-side Usb选上)

    ⑩Device Drivers ---> Networking support --->Ethernet (10 or 100Mbit) ---> <*> AMD PCnet32 PCI support

    最好把ext3文件系统支持也编译进内核

    <*>Ext3 journalling file system support

    <*>Ext3 extended attributes

    <*>Ext3 POSIX Access Control Lists

    <*>Ext3 Security Labels

    <*>JBB (ext3) debugging support

    注意1: "make dep"这一步在2.6已经不需要了.

    2.开始编译内核文件

    将终端控制台当前目录置为/usr/src/linux-2.6.20.1(即内核文件夹目录),打入以下命令#make

    #make modules

    #make modules_install

    注意2:#make命令快要结束的时候可能会出现以下错误提示

    OBJCOPY arch/i386/boot/compressed/vmlinux.bin

    BFD: Warning: Writing section `.bss' to huge (ie negative) file offset 0xc0277000.

    objcopy: arch/i386/boot/compressed/vmlinux.bin: File truncated

    make[2]: *** [arch/i386/boot/compressed/vmlinux.bin] Error 1

    make[1]: *** [arch/i386/boot/compressed/vmlinux] Error 2

    make: *** Error 2

    解决办法:

    在arch/i386/Makefile里面做一些修改:

    将OBJCOPYFLAGS改成如下的:

    OBJCOPYFLAGS := -O binary --change-section-lma .bss-0xc0000000 -R .note -R .comment –S

    然后保存退出,重新键入命令make就可以了。

    但是,请千万注意,如果没有出现这个错误,就不要更改文件,即先make,看有无错误,如果有,则修改,没有就不修改。

     

    以上三个命令均成功后,要复制一个文件。

    #cp/usr/src/linux-2.6.18/drivers/scsi/BusLogic.o一个空格 /lib/modules/2.6.18/kernel/drivers/scsi

    这是用于解决SCSI硬盘+VMWARE+REDHAT架构中,因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将BusLogic.o文件复制过去.(如果不是SCSI硬盘+VMWARE+REDHAT架构中上面的拷贝可以省略)

     

    然后键入命令

        #make install

    出现以下类似的信息表示正确,如下图:

     

     

    3.接下来就是做一些相关周边工作了

    #cp /usr/src/linux-2.6.20.1/arch/i386/boot/bzImage /boot/vmlinuz-2.6.20.1

    #cp /usr/src/linux-2.6.20.1/System.map /boot/System.map-2.6.20.1

    #cd /boot

    #mkdir backup(备份)

    #cp System.map backup

    #cp vmlinux backup

    #rm -rf System.map(删除原有的内核启动连接)

    #rm -rf vmlinux

    #ln -s System.map-2.6.20.1 System.map(设置新的内核启动连接)#ln -s vmlinuz-2.6.20.1 vmlinuz

    若你的Linux为GRUB启动,则还要修改相应的启动文件:

    #cd /boot

    #new-kernel-pkg --mkinitrd --depmod --install 2.6.20

    #df(该命令查看根分区,即标识为“/”的分区,看好后要记住它的名字,假设为/dev/sda1)

    #vi /boot/grub/grub.conf

    在弹出的编辑窗口中,将“default=1”改为“default=0”,并将2.6.20.1那一项里的“kernel”行的“LABEL=/”改为上一步所查看的分区,按我们上一步的假设,改完以后的“kernel”行应该是下面的样子:

    kernel /vmlinuz-2.6.20 ro root=/dev/sda1

    好了,整个内核升级大功告成!重新启动之后,在操作系统选择栏中会看到如下两项:

    Red Hat Linux(2.6.20.1)

    Red Hat Linux(2.4.20-8)


    最新回复(0)