SCSI+VMWARE+REDHAT内核升级总结

来源:互联网 发布:雅克比矩阵简单解释 编辑:程序博客网 时间:2024/06/18 06:14

最近两天又忙活了一下将虚拟机里的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

该地址需要有CSDN的账号。

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)

原创粉丝点击