SCSI+VMware+RedHat内核升级总结(3)

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)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24786.html