搜档网
当前位置:搜档网 › VMware下linux升级内核后无法正常使用VMware_Tools和内核错误的解决方法

VMware下linux升级内核后无法正常使用VMware_Tools和内核错误的解决方法

编译内核错误修复:
VMware7.0.1安装好rhel5后,内核版本为2.6.18。
(关于配置内核可以搜索《金步国linux内核》,内容相对较新,而且较齐全。)
于是下载了2.6.31.9的内核,重新编译后启动。
出现错误:

setuproot:moving /dev failed:No such file or directory
setuproot:error Mounting /proc:No such file or directory
setuproot:error Mounting /sys:No such file or directory
switchroot:Mount failed:No such file or dirctory
Kernel panic -not syncing: Attempted to kill init!

感觉是加载文件系统或SCSI配置出错,检查
->Device Drivers->SCSI device support
->Device Drivers->SCSI disk support
->File systems->Second extended fs support
都直接编译成内核了。

后来在一个前辈的文章中发现出现这个问题是因为这个选项:CONFIG_SYSFS_DEPRECATED_V2=Y必须选择
不同内核会搜索出不同的名字。
只需要按下“/”在搜索框中输入“CONFIG_SYSFS_DEPRECATED_V2”就会显示出该选项。
这是2.6.31中的选项:
->General setup->remove sysfs features which may confuse old userspace tools直接编译进内核。
重编译内核,一切正常。


linux在VMware下升级内核后无法正常使用VMware_Tools的解决方法。
升级内核后VMware_Tools的共享目录不可用,系统直接的粘贴功能失效。
运行服务:/etc/init.d/vmware-tools start显示服务无法正常启动。
输入lsmod,缺少VMware_Tools需要的模块:vmxnet,vmxnet3,pvscsi。
必须重新配置VMware_Tools,如果是使用的默认安装,配置脚本将在/usr/bin目录下。

运行/usr/bin/vmware-config-tools.pl
一路默认下去,注意kernel header path要是当前内核的include位置。
才能把需要的模块放入正确的module目录里。
最后安装程序自动执行mkinitrd -f --with=vmxnet --with=vmxnet3 --with=pvscsi /boot/initrd-2.6.31.9.img \
2.6.31.9
正常情况会成功创建新的initrd。
不过我的内核把echo_hcd,mptbase,mptspi直接编译进了内核,所以不能成功创建initrd。

有两个方法解决这个问题:
(1)可以把需要的编译成模块,在放入/lib/modules对应模块目录:
可以把->Device Drivers->USB support->EHCI HCD(USB2.0)support编译为模块:
make /usr/src/kernels/linux-2.6.31.9/drivers/usb/host
make /usr/src/kernels/linux-2.6.31.9/drivers/usb/host/ehci-hcd.ko
cp /usr/src/kernels/linux-2.6.31.9/drivers/usb/host/ehci-hcd.ko \
/lib/modules/2.6.31.9/kernel/drivers/usb/host
至于mptbase和mptspi没能找到该模块选项,可以采用第二种方法。

(2)mkinitrd是通过/etc/modprobe.conf里配置的模块来生成initrd的。
mptbase,mptspi是编译为内核的,可以删除掉/modprobe.conf里的mptbase,mptspi对应行。
除此外还必须同样删除/etc/modprobe.conf.BeforeVMwareToolsInstall里的mptbase,mptspi。
再次执行/usr/bin/vmware-config-tools.pl。
成功生成initrd。VMware_Tools可以正常运

行。

相关主题