测试环境
宿主机:Windows X64 10.0.19044.1706
虚拟机平台:VMware Workstation Pro 16.2.3 build-19376536
虚拟机:Ubuntu X64 22.04 LTS
问题描述
- VMware中设置并已启用共享文件夹;
- 在Linux终端执行运行VMware-hgfsclient命令能正常显示出hgfs和共享文件夹名称;
- 在Linux终端执行ls命令看不到hgfs目录下的共享文件夹名称,为空白状态;
- Linux下手动安装vmware tools无效;
- Linux下安装或重新安装open-vm-tools无效;
- Linux下执行vmhgfs-fuse .host:/ /mnt/hgfs挂载命令无效;
- Linux下修改etc/fstab增加自动挂载脚本无效或出错。
问题分析
VMware-hgfsclient返回结果正常,说明文件夹已经被设置为共享状态,不能访问的原因可能是挂载有问题。既然Linux下解决不了,就回到Windows中寻找思路。
解决方法
在宿主机VMware设置中将Linux共享文件夹先禁用,然后再重新启用,发现Linux下共享文件夹显示和使用均恢复正常。
操作步骤:
- VMware菜单【虚拟机】→【设置】→【选项】→【共享文件夹】,
- 选中【已禁用】→【确定】,
- 重复1操作,选中【总是启用】→【确定】,
- 在Linux中访问共享文件夹恢复正常。
说明:每次启动Linux虚拟机后需要进行上面的操作。
VMware Workstation提供了命令行虚拟机共享文件夹操作命令:
启用共享文件夹:
vmrun -T ws enableSharedFolders 虚拟机vmx文件路径
禁用共享文件夹:
vmrun -T ws disableSharedFolders 虚拟机vmx文件路径
为简化操作,建立Windows命令行bat或cmd脚本如下,保存扩展名为bat或cmd:
@echo off
::img变量为虚拟机VMX文件路径
set img=D:\VMI\Ubuntu\Ubuntu.vmx
::vmrun变量为vmrun.exe程序路径
set vmrun=C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe
"%vmrun%" -T ws disableSharedFolders "%img%"
"%vmrun%" -T ws enableSharedFolders "%img%"
exit
每次启动Linux虚拟机后在Windows中双击运行一次脚本即可正常使用共享文件夹。
推荐高级用法,双击脚本自动启动虚拟机并重置共享文件夹状态:
@echo off
::img变量为虚拟机VMX文件路径
set img=D:\VMI\Ubuntu\Ubuntu.vmx
::vmrun变量为vmrun.exe程序路径
set vmrun=C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe
"%vmrun%" -T ws start "%img%"
:check
Ping 127.0.0.1>nul
echo.
"%vmrun%" list|find /i "%img%">nul&&goto switch||goto check
:switch
"%vmrun%" -T ws disableSharedFolders "%img%"
"%vmrun%" -T ws enableSharedFolders "%img%"
exit
注意:脚本中set img=后面的vmx文件路径必须正确!
set img=D:\VMI\Ubuntu\Ubuntu.vmx