VMware配置linux guest中的shared folder

由于virtualbox和vagrant最近升级win10之后总是出各种状况,所以想换成vmware来进行跨平台linux开发环境的搭建。但在windows下的VMware添加共享文件夹之后在Linux系统中总是无法找到挂载后的目录,手动挂载后会出现protocol error等错误。其实解决方法很简单。

我使用的环境是Ubuntu16.04,最小化安装的Server版本。

安装open-vm-tools

安装完虚拟机之后发现自动安装了open-vm-tools,这是与vmtools对应的开源版本,也是实现文件夹共享的关键,所以安装完成虚拟机系统之后首先检查确认已经安装了open-vm-tools,不需要(一定不要)安装VMware自带的vmtools。如果VMware提示你更新VMware Tools,不要更新。
也不需要安装open-vm-tools-dkms

关闭虚拟机并添加shared folder

如果你之前已经手动添加过共享文件夹,依然需要在关机状态下手动删除并再次添加,记得选中总是启用。

手动挂载共享文件夹

通过以下命令挂载共享文件夹:

1
sudo vmhgfs-fuse -o allow_other -o auto_unmount -o uid=1000 -o gid=1000 .host:/shared_folder /mnt/shared_folder

其中shared_folder为你添加的共享文件夹名字,/mnt/shared_folder为虚拟机中的共享文件夹挂载路径,需要手动创建。
如果想要挂载所有共享文件夹到同一个目录,可以如下:

1
sudo vmhgfs-fuse -o allow_other -o auto_unmount -o uid=1000 -o gid=1000 .host:/ /mnt/shared_folder

挂载完之后就可以查看到你的共享文件夹了。
如果觉得每次输入挂载命令太长,可以放到脚本中,如果想要开机自动挂载,看下面。

开机自动挂载共享文件夹

/etc/fstab文件的最后添加如下内容实现将所有共享文件夹自动挂载到目录/vmshare,记得自己需要提前手动创建目录/vmshare

1
.host:/  /vmshare  fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000,auto_unmount,defaults 0 0

这样开机之后所有你添加的共享文件夹,都会以子文件夹的形式挂载在目录/vmshare中,配合pycharm就可以实现在Windows下开发,调试和运行在linux环境中,只需要在pycharm中配置远程解释器和目录映射即可。