64环境运行虚拟机出错

好不容易在我新装的 Ubuntu 7.10 x86_64下把vmware workstation装起来,可是在导入以前的 虚拟机开机的时候提示如下错误:
Unable to change virtual machine power state: Failed to connect to peer process.
初看好像提示CPU的问题,重启进bios 将vt打开,还是同样问题。上网查了很多资料,原来所Vmware提供下载的 x86_64 版本其实并非完全是64位程序,需要兼容32位的库才能正常启动虚拟机。

所以在纯 64 位Linux下面,安装完后,在启动虚拟机时,会出现如下错误:

Unable to change virtual machine power state: Failed to connect to peer process.

原因是因为缺少兼容32的库,无法运行 vmware-vmx,这个程序是 32 位的。

当然,如果专门为此重新编译32位的库,也太麻烦了,我们可以利用现成的 debian 的软件包,需要下载的软件包有:

ia32-libs      (IA32基础库)
ia32-libs-gtk  (GTK库)
libc6-i386     (Glibc库)
lib32zl        (Zlib库)
lib32gcc1      (libgcc_s库)

由于我用的是纯64位的BLFS,没有任何软件包管理器,下载Debian包后,需要手动解压缩里面的文件,这个用 ar 和 tar 命令来完成即可。

# mkdir ia32
# cd ia32
# ar p ../ia32-libs_2.1_amd64.deb data.tar.gz|tar zxf -
# ar p ../ia32-libs-gtk_2.0_amd64.deb data.tar.gz|tar zxf -
# ar p ../libc6-i386_2.6.1-5_amd64.deb data.tar.gz|tar zxf -
# ar p ../lib32z1_1.2.3.3.dfsg-6_amd64.deb data.tar.gz|tar zxf -
# ap p ../lib32gcc1_4.1.1-21_amd64.deb data.tar.gz|tar zxf -

解压缩完成后,会在当前目录下生成如下目录:
emul  etc  lib  lib32  usr

然后拷贝它们到 / 目录下即可

# cp -arf * /

接着将如下路径加入到 /etc/ld.so.conf 中
/emul/ia32-Linux/lib
/emul/ia32-Linux/usr/lib

并运行 ldconfig 更新库缓存

OK,到这里运行 vmware 所需的 IA32 相关的库已经准备妥当,启动虚拟机也没有问题了。


[注]:如果你安装了 vmware-any-any-update-XXX, 可能会出现如下错误:

Version mismatch with vmmon module: expecting 137.0, got 138.0.

解决办法是重新安装 vmware, 不要安装 vmware-any-any-update,那是针对 32 位环境的

步骤很简单:先运行 vmware-uninstall.pl 卸载,然后重新安装即可。

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

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