笔者已经写了一篇关于安装"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

http://biancheng.dnbcw.info/linux/263221.html

http://blog.sina.com.cn/s/blog_9e0b5689010169jp.html

在vmware 6.5+ubuntu12.04上安装VMware tools出现问题的分析的更多相关文章

  1. 在ubuntu12.04上安装6款顶级漂亮的BURG主题

    BURG 基本上是一个基于GRUB的Linux引导装载程序.BURG格有一个高度可配置的菜单系统,可选择文本和图形模式.简而言之,BURG可广泛定制,有良好免费的BURG主题.选择自己最喜欢的,下面我 ...

  2. 安装在ubuntu12.04上安装gcc4.8

    因为gcc4.8支持最新的c++11标准,所有开始c++11标准系列学习前,请按照gcc4.8,方便边学习边写代码练习. 安装编译好的gcc4.8 sudo add-apt-repository pp ...

  3. (转)Ubuntu12.04上NFS Server安装使用过程

    原文链接:Ubuntu12.04上NFS Server安装使用过程 实现步骤: 1.服务器端:sudo apt-get install portmap2.服务器端:sudo apt-get insta ...

  4. Android编译环境——ubuntu12.04上android2.3.4编译错误以及解决

    Android编译环境——ubuntu12.04上android2.3.4编译错误以及解决 分类: android应用开发2013-08-21 09:20 4222人阅读 评论(3) 收藏 举报 li ...

  5. Ubuntu17.04下安装vmware虚拟机

    linux常用虚拟机一般为KVM,Vmware或者VirtualBox(简称VBox). 下面给大家介绍以下如何在ubuntu17.04版本上安装vmware虚拟机至于虚拟机是用来干啥的,在这里我就不 ...

  6. Ubuntu12.04 上使用perl snmpwalk问题

    今天在Ubuntu12.04上使用perl来获取snmp数据,运行时出现下列问题.解决方法安装一下libnet-snmp-perl即可.命令行运行:sudo apt-get install libne ...

  7. Ubuntu12.04下安装sourcenavigator-NG4.5阅读源代码

    大家知道Windows下有一个很好的查看源代码的软件sourceinsight,使用sourceinsight查看Linux内核代码.嵌入式软件开发中的C语言项目源代码.驱动程序代码很是方便.在Lin ...

  8. [译]How to Install Node.js on Ubuntu 14.04 如何在ubuntu14.04上安装node.js

    原文链接为 http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/ 由作者Jacob Nicholson 发表于October ...

  9. 翻译:在Ubuntu 14.04上安装FTP服务器的方法

    说明: 1.原文地址:http://www.krizna.com/ubuntu/setup-ftp-server-on-ubuntu-14-04-vsftpd/ 2.今天要做一个网络日志的迁移程序,搬 ...

随机推荐

  1. Windows下FFmpeg高速入门

    本系列文章导航 Windows下FFmpeg高速入门 ffmpeg參数解释 mencoder和ffmpeg參数具体解释(Java处理视频) Java 生成视频缩略图(ffmpeg) 使用ffmpeg进 ...

  2. Could not find class '****', referenced from method #####

    找不到类,多半也是和第三方的jar包有关. 将找不到的类.在下图中的地方勾选出来.假设jar太多.有的类有冲突的话,须要明白其先后顺序. 请外一篇和第三方jar有关的异常的文章. Conversion ...

  3. STM32F030 IO口外部中断应用

    //==文件exit.h============================================================ #ifndef __EXIT_H #define __ ...

  4. ss与 netstat

    ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag.tcp_diag是一个用于分析统计的模块, 可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效.当然,如果你的系统中没有tcp ...

  5. mysql优化之连接优化

    Posted by Money Talks on 2012/02/23 | 第一篇 序章第二篇 连接优化第三篇 索引优化第四篇 查询优化第五篇 到实战中去 连接优化 连接优化主要指客户端连接数据库以及 ...

  6. Bash For Loop Examples for Your Linux Shell Scripting--ref

    There are two types of bash for loops available. One using the “in” keyword with list of values, ano ...

  7. struts2+ajax

    web网页开发中需要用到struts2来处理action,通过struts2定义后端java类. <action name="loginAction" class=" ...

  8. 自定义URL Scheme完全指南

    iPhone / iOS SDK 最酷的特性之一就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme 用于从浏览器或其他应用中启动本应用. 注册自定义 URL Scheme ...

  9. PHP + ajax 实现异步登录验证

    login.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  10. Android 使用定时器在指定日期及时间执行任务

    public class MainActivity extends Activity { private Handler handler = new Handler(){ @Override publ ...