RedHat 9.0+2.4.20内核 升级 2.6.23内核升级问题

错误1:
ERROR: "crypto_free_tfm" [net/rxrpc/af-rxrpc.ko] undefined!
ERROR: "crypto_alloc_base" [net/rxrpc/af-rxrpc.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2

解决:
在chinaunix论坛上搜索到,一个帖子,帖子最后有人说,必须加上CONFIG_CRYPTO选项。我用emacs查找了一下,发现了
#CONFIG_CRYPTO is not set
一项,然后我
make menuconfig
使用/搜索crypto发现,有很多的符号位置都是在
Location:
->Cryptographic API
我退出找了一下就在根菜单下,直接Y,重新编译,没问题了。

错误2:sh /usr/src/linux-2.6.23/arch/i386/boot/install.sh 2.6.23 arch/i386/boot/bzImage System.map "/boot"
No module BusLogic found for kernel 2.6.23
mkinitrd faild

分析:我首先在make menuconfig 中查找buslogic发现其位置在
->Device Drivers
   ->SCSI device support
    ->SCSI low-level drivers
下,我找到该位置发现了
BusLogic SCSI support
选项,默认的是M,就是以模块形式加载,我改成Y试一下。
提示不让改说是 该模块依赖的模块,是模块的形式。也没说是哪个模块。
算了懒得找了在网上搜索一下
BusLogic 是用来支持SCSI设备的模块
网上提示该问题在虚拟机中经常遇到,并且说2.4的内核的Buslogic模块即使静态编译进内核也是不行的,网上提供的解决方法是直接手动拷贝
cp drivers/scsi/BusLogic.o /lib/modules/2.6.11/kernel/drivers/scsi/
我的是2.6.23,拷贝过去看看效果
没做上一步,先看看可不可以静态编译进去
有在csdn上搜索了一篇文章(VMware中Linux内核2.6.14.4编译全过程),里边说了在VMware中编译内核必须选中的选项。
Device Drivers --->SCSI device support ---><*>   SCSI disk support
Device Drivers --->SCSI device support --->SCSI low-level drivers ---> <*> BusLogic SCSI support
我的SCSI disk support 是M我改成Y,又提示我有依赖关系,我发现他上面的SCSI device support前面也是M,我把他改成Y,然后再改SCSI disk support成功,BusLogic SCSI support 也可以改成Y了。
重新搞一下,重新make make modules make modules_install(没clean和mrproper,虚拟机太慢了要是重来又是1个多小时)
make install
同样的错误无语了,看来只有拷贝文件的方法了

拷贝完文件之后

make install
没出错,Oh,my God!Thank goodness!

问题3:成功编译后reboot,发现错误
Loading BusLogic.o module
No module found in object
insmod: error inserting '/lib/BusLogic.o';-1 Invalid module format
ERROR:/bin/insmod exited abnormally!
Mounting /proc filesystem
Creating block devices
Creating root device
Mounting root filesystem
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
Freeing unused kernel memory; 300k freed
init[1]: segfault at 00000021 eip 00000021 esp bfbb7bb8 error 4
......

分析:发现提示Invalid module format估计是Buslogic.o文件出的错,郁闷ing,就是编译时候拷贝那个文件,在lib下,其实这个lib和系统的lib是不一样的,这个 是启动时img文件,挂载到/dev/ram中的文件。我进入原来的2.4.20内核系统,然后执行
cp /boot/linux-2.6.23.img /root/linux.gz (img文件的就是gz格式的压缩文件)
gunzip linux.gz (解压缩)
mount -o loop linux /test (把它挂载到/test下)
查看/test ,找到lib目录下看到了BusLogic.o文件
我发现在/usr/linux-2.6.23/drivers/scsi/有一个BusLogic.ko文件,拷贝进lib然后改/test下的linuxrc 把insmod BusLogic.o改成insmod 改成BusLogic.ko,再unmount,用
gzip linux
重新打包成linux.gz再改成linux-2.6.23.img拷贝到/boot下
#reboot
还是一样的错误,后来我又在FC8中拷贝了一个BusLogic.ko文件,也不行。估计不是这个问题。

在网上搜了一下,发现都有同样的问题,好多人说是在VMware下,可能最高不能升级到2.6.20以上的内核。参见http://topic.csdn.net/u/20080515/22/89cb144a-e871-4891-af91-ea5c7c6e8c73.html

确实想不到什么办法,搞了一个周了,在论坛里发了帖子也没人理我,算了。放一放,我这有FC8,ISO文件,直接装一个FC8得了。看看以后有没有牛人解决问题
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值