笔者已经写了一篇关于安装"VMware Tools",以实现文件共享的文章,那篇文章对于你实现共享操作是足够了, 所以,倘若你赶时间不如直接去在虚拟机的linux中利用VMware Tools实现与windows共享文件的网页上解决问题。
这篇文章并没有讲如何在"vmware 6.5+ubuntu12.04"上安装"VMware Tools",主旨在于分析"VMware Tools"的安装过程以及在"vmware 6.5+ubuntu12.04"上安装"VMware Tools"出现的问题。倘若你渴求知识的更深入理解,就看这篇文章吧。
在"vmware 6.5+ubuntu12.04"上装"VMware tools",这件本来在"vmware 6.5+redhat9.0上"装"VMware tools"很容易的事,由于ubuntu高级版本的差别变成了艰难的事。安装"VMware Tools"通常都是执行一个命令"./vmware-install.pl",但是在"VMware6.5+ubuntu12.04安装过程中出现一些列异常。下边,我就根据出现的异常问题及其解决为主线展开本文。
声明两点:
(1)下边的(1)、(2)、(3)、(4)是根据http://blog.sina.com.cn/s/blog_6823cc5d0100re2u.html这篇博客稍作修改修改来的。
(2)命令"uname -r "可以产看内核版本,这在后边可以用到。
开始安装
首先,我们在虚拟机主菜单上选择VM项,从下拉菜单中选择"Install VMware Tools..",然后解压"VMwareTools-7.8.4-126130.tar.gz" (这个版本需要注意,其实一切问题来自于版本问题),再进入"vmware-tool-distrib"文件夹下执行"./vmware-install.pl"。
(1) 安装库,文档,卸载程序,配置程序等等
如上图的选项,直接点Enter键就可以了。
(2)安装完成后,开始运行配置程序。
注意上边的第一个方框,可以看到安装已经完成,并且告诉你卸载VMware Tools的方法(直接在终端上输入命令/usr/bin/vmware-uninstall-tools.pl)。但是,我要告诉你的是VMware Tools并没有完全安装成功,只是安装了一个壳,它的更多的功能并没有安装,包括文件共享的功能并没有安装。
注意第二个方框,通过阅读英文提示,我们知道:在第一次运行"VMware Tools"之前,我们必须首先运行配置程序,即执行命令/usr/bin/vmware-config-tools.pl。其实,执行这个命令,就是开始安装VMware Tools的其他功能,包括文件共享功能。
注意第三个方框,当我们直接Enter之后,其实就是默认选择了yes,执行vmware-config-tools.pl。在执行这个命令后,首先停止VMware Tools的服务。
VMware Tools的其他功能的安装很搞笑,它不像windows应用程序安装那样,直接setup.exe,然后就OK了。它的安装是可能可以直接安装,也可能需要先对每个功能模块的源码包进行编译,然后才能安装这些模块 。我就纳闷了,为啥搞这么复杂,直接安装不就得了。
但是,当你进入它解压后的文件夹*/vmware-tool-distrib/lib/modules/binary和*/vmware-tool-distrib/lib/moudules/source,你就会产生一些领会。我建议您如果有时间的话仔细的看一下vmware-tool-distrib的全部内容,这对您理解安装过程很有帮助。
*/vmware-tool-distrib/lib/modules/binary的内容很多,我直截取了一部分,如下所示。
我以其中的一个为例展开其内容,*/vmware-tool-distrib/lib/modules/binary/bld-2.6.12-9-x86_64K8-Ubuntu5.10/objects的内容如下。
*/vmware-tool-distrib/lib/moudules/source目录下放的就是那些其他功能的源码包,通过这些内容,我们就知道它的其他功能是什么。
猜测VMware Toos的安装过程
看到我展开的文件夹的内容,咱们来猜测为什么要这样安装其他功能。原因可能是这样的:VMware Toos的应用平台很多,有redhat linux,Ubuntu linux等等,而且这些操作系统还有不同版本,那么仅仅一个VMware Tools安装包很难兼容所有的linux和特定版本的linux。打个比方,windows升级后,相应的软件也都需要修改升级,只有这样才能与高版本的windows兼容。当安装VMware Toos时候,安装程序会根据linux的内核版本,首先从moudules/bin中查看有没有适合本版本的已经编译好的安装程序,如果命中的话,就直接从这里安装(假如我的linux是Ubuntu5.10,显然就能命中,直接从vmware-tool-distrib/lib/modules/binary/bld-2.6.12-9-x86_64K8-Ubuntu5.10/objects这里安装)。倘若不能命中的话,就需要对源码包进行编译,然后安装,当然存在不能成功编译或者编译后不能成功运行的可能(比如我们现在用的ubuntu12.0.4,内核版本是3.2.0-55-generic-pae,不能找到匹配的安装包,就需要编译。但是,接下来的事实是我们就根本不能编译成功)。
最后,我们注意第四个方框,提示告诉我们:现在我们想安装vmmemctl这个功能,但是并没有合适的modules匹配当前版本的内核,所以需要编译它,并且是利用gcc来编译的(注意gcc也是分不同版本的)。
(3)编译vmmemctl
第一个方框告诉我们,内核的编译版本(gcc4.6.3)与当前的gcc版本(gcc4.6)不一致,建议我们选择与内核版本一致的编译器来编译当前的vmmemtrl。但是,这里直接Enter,就是默认选择no,即不进行编译,当然也不会安装这个功能包。
第二个方框告诉我们,vmmemtrl的功能是什么。
第三个方框告诉我们:虽然我这次没有安装这个功能,但是假如我想安装的话,将来可以重现运行/usr/bin/ vmware-config-tools.pl来重现安装这个功能包。
(4)安装vmhgfs
vmhgfs是实现文件共享功能的安装包,对于我们学习的方便很重要,所以现在我们来尝试安装它。
和安装vmmemctl类似,只不过这里我们对于第二个方框,不直接Enter,而选择yes,也就是说即使编译器gcc4.6不合适,我们也一定要使用gcc4.6来编译vmhgfs源码包。
但是如上图所示,出现 The path "/usr/src/linux/include" is not an existing directory。编译vmhgfs需要编译内核的头文件,而现在的提示说头文件位置不存在。
这样我们需要找到适合的头文件,并且更改这个路径。先用"uname -r"命令找到当前的linux内核版本,可以看到ubuntu12.0.4的内核版本为3.2.0-55-generic-pae,你在/usr/src目录下可以看到" linux-headers-3.2.0-55-generic-pae"的一个文件夹,这个文件夹里边的include就是当前内核版本的头文件夹。因此更改后的路径如下:/usr/src/ linux-headers-3.2.0-55-generic-pae/include。
改后再回车,又出现如下问题:
The directory of kernel headers (version @@VMWARE@@ UTS_RELEASE) does not match your running kernel (version3.2.0-55-generic-pae). Even if the module were to compile successfully, it would not load into the running kernel.
这段话告诉我们当前的头文件夹与内核版本不匹配。实际上不是不匹配,而是因为Kernel 中有一个变量"UTS_RELEASE "位置改变了。以前这个变量到定义放在"/usr/src/ linux-headers-3.2.0-55-generic-pae/include/linux/version.h ",而现在已经移到了"/usr/src/3.2.0-55-generic-pae/include/generated/utsrelease.h"。所以vmware tools找不到这个变量的定义,修改的办法有两种:
① 在version.h中添加:#define UTS_RELEASE "3.2.0-55-generic-pae"
② 直接将utsrelease.h拷贝回来:$ cp -p generated/utsrelease.h linux/utsrelease.h
改后再回车,又出现如下问题:
The path "/usr/src/linux-headers-3.2.0-55-generic-pae/include" is a kernel header file directory, but it does not contain the file "linux/autoconf.h" as expected. This can happen if the kernel has never been built, or if you have invoked the "make mrproper" command in your kernel directory. In any case, you may want to rebuild your kernel.
根据提示可以知道,是因为找不到 linux/autoconf.h文件,这个文件在新的linux内核中被挪到了generated目录中,因此修改的办法也很简单,直接将这个文件拷贝过来即可:$ cp -p generated/autoconf .h linux/autoconf .h。
从图中的方框可以看出,安装程序已经能识别我们的头文件夹了,不用我们再去手动指定,直接Enter,继续。
(5)按照博客http://blog.sina.com.cn/s/blog_6823cc5d0100re2u.html这篇文章,接下来的安装应该很顺利。但是,由于我们用的是ubuntu12.0.4,内核版本是3.2.0-55-generic-pae,而非这篇博主所用的内核版本是"2.6.35-22-generic",新的不幸又开始了。
从第一个方框,我们发现我们的"VMwareTools-7.8.4-126130.tar.gz" 适合的内核版本是2.6.x。
从第二个方框,我们可以看到编译vmhgfs源码包没有成功。
从第三个方框,我们可以看出vmhgfs模块的功能,可以实现文件共享。另外,还提示我们,这个模块的功能不会影响到其他模块。
结论:可以肯定的是"VMwareTools-7.8.4-126130.tar.gz" 源码包对于我们的ubuntu12.0.4是不兼容的。
解决办法有两种:(详细的安装过程见在虚拟机的linux中利用VMware Tools实现与windows共享文件)
1.获得更高版本的安装包,并安装它。
2.安装open-vm-dkms。
参考博客:http://blog.sina.com.cn/s/blog_6823cc5d0100re2u.html