感谢支持
我们一直在努力

SCSI+VMware+RedHat内核升级总结

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


以上文件在Linux公社的1号FTP服务器里,下载地址:


FTP地址:ftp://www.linuxidc.com


用户名:www.linuxidc.com


密码:www.muu.cc


在 2011年LinuxIDC.com\3月\SCSI+VMware+RedHat内核升级总结


下载方法见 http://www.linuxidc.net/thread-1187-1-1.html


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


#tar zxf binutils-2.17.tar.gz


#cd binutils-2.17


#./configure


#make


#make install


该文件的下载地址在Linux公社的1号FTP服务器里。

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) 打赏
转载请注明出处:服务器评测 » SCSI+VMware+RedHat内核升级总结
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏