红联Linux门户
Linux帮助

让VMWare在x86_64环境下面跑起来

发布时间:2007-10-07 00:01:22来源:红联作者:compat
VMware Workstation 目前的最新版是 6.0.X,所提供下载的 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 卸载,然后重新安装即可。

折腾了几天,总算把这个问题解决了。
文章评论

共有 0 条评论