众所周知,Ubuntu和Windows之间是可以通过设置共享文件夹来进行文件的共享,这对我们的工作提供了很大的方便,因为我们平常还是习惯在Windows下编辑代码文件等操作,这时通过共享文件夹就可以很方便的把Windows上的文件在Ubuntu上访问操作了。
背景:
刚开始我的Ubuntu是能够打开共享文件夹的,只是不能够进行拖拽文件,并且不能实现Ubuntu和Windows之间的复制粘贴操作。后来我按照网上的教程在/tmp目录下重新安装VMware-tool工具,发现能够进行拖拽文件了,也能进行Ubuntu和Windows之间的复制粘贴了,内心还高兴了一下下。但是当我进入到/mnt/hgfs目录下时,发现进不去共享文件夹了,用ls也显示不出文件夹。后来我进行一序列瞎jb操作之后,共享文件夹功能用不了,拖拽文件和复制粘贴的功能全都用不了了,此时我的内心是极度崩溃的。。。
其他症状:
vmware-hgfsclient 能够看到共享的文件夹名字
mount.vmhgfs .host:/ /mnt 报错: Error: cannot mount filesystem: No such device
重启一下服务
/etc/vmware-tools/services.sh restart
操作的结果也都是DONE状态没有出现FAILD
查看vm内核模块是否加载
lsmod |grep vm
发现是没有vmhgfs、vmci这两个模块的,初步定位是vmhgfs这个模块的问题
解决过程:
于是我回到VMware-tools的安装过程。在执行./vmware-config-tools.pl之后,按提示输入,仔细阅读每一次操作,发现在连续输入那两次no的操作之后,报了下面的错误。
这些错误就是vmhgfs模块在编译时有问题
并且之后提示了这么几句话。
If you wish to have the shared folders feature, you can install the driver by
running vmware-config-tools.pl again after making sure that gcc, binutils, make
and the kernel sources for your running kernel are installed on your machine.
These packages are available on your distribution's installation CD.
[ Press Enter key to continue ]
意思是说,如果想开去文件夹共享的特性,在确保安装了几个库文件之后,执行 vmware-config-tools.pl 来安装。
然后我按照其他博主的操作来执行这个命令后
sudo yum install kernel-headers make gcc gcc-c++ kernel-devel binutils
命令执行一切正常,没有其他博主遇到的错误。但是我能确定的就是vmhgfs模块有问题。
干货:
然后我参考了这篇文章:https://blog.youkuaiyun.com/shapoulai/article/details/18052079
1. 重新安装vmware tools,在虚拟机中挂载镜像文件后,将里面的压缩文件解压到root用户的/tmpmulu 下,即在/tmp目录下可以看到“vmware-tools-distrib”这个文件夹。
2. 在/tmp目录下新建一个名为fix.sh的脚本,脚本的内容如下:
3. 给脚本加上可执行属性后,运行这个脚本,之后重启就可以了。
set -x
cd /tmp
cd vmware-tools-distrib/lib/modules/source
sudo tar xf vmhgfs.tar
sudo wget https://raw.github.com/rasa/vmware-tools-patches/master/patches/vmhgfs/vmhgfs-d_count-kernel-3.11-tools-9.6.0.patch
sudo Patch -p0 <vmhgfs-d_count-kernel-3.11-tools-9.6.0.patch
sudo mv vmhgfs.tar vmhgfs.orig.tar
sudo tar cf vmhgfs.tar vmhgfs-only
cd /tmp
cd vmware-tools-distrib
sudo ./vmware-install.pl
set +x
这段代码主要还是在github上把官方的代码进行vmhgfs模块的修改,参考https://ubuntuforums.org/showthread.php?t=2184195
之后,我的问题就全部解决了。
(小白)注意:
如果是在Windows下创建这个文件然后拖拽到Ubuntu上的,可能由于Windows上回车键是\n\r,Ubuntu上是\n,导致脚本运行错误。