关于这一点有很多页面,但它们都没有仔细区分它们描述的是哪一套 vmware 工具。有两套相当不同的:
- apt 包 open-vm-tools(和 open-vm-tools-desktop)
- 从 VMWare 菜单安装的 VMware 工具(通过 CDROM)
还请注意,#1 的内容已更改,vmware-hgfsmounter 不再存在。我正在使用 VMware Fusion 8.1.1 和 Ubuntu 16.04。
要安装 #2,您必须先执行“apt-get purge open-vm-tools open-vm-tools-desktop”。执行此操作并从 CDROM 运行安装程序时,它会提示您使用 open-vm-tools。如果您忽略该提示并安装它们,您将在 vmhgfs(在 Linux 中实现共享文件夹的内核模块)上收到大量编译器错误,并且安装会失败。
我多次在两种类型的 VMware 工具之间进行切换,直到偶然找到一个解决方案:
使用 open-vm-tools(对我来说,它们在我安装 Ubuntu 16.04 时就出现了)。重启。在 VMware 设置中(在主机上):
- 禁用共享文件夹
- 启用共享文件夹
- 删除所有文件夹
- 添加回你想要的文件夹
现在它们在我这里,在 /mnt/hgfs 中。但它们在重启时消失 - 禁用和启用共享文件夹(在 VMware Fusion 设置中)将它们带回来。我不知道该把什么放入 /etc/fstab,所以每次重启后我都必须禁用/启用它们。
有人能告诉我如何让它们在重启后继续存在吗?
(我本来想将其添加到其他页面之一,但此系统不允许像我这样的新用户这样做。我是这里的新手,而不是 Linux 或 VMwarL 的新手。)
答案1
构建 open_vm_tools 内核模块
问题
Ubuntu 16.04(以及其他版本)的默认 open_vm_tools 包不足以支持挂载共享文件夹。
环境
- Ubuntu 16.04.3 LTS 桌面主机
- VMware Workstation 12 Pro 版本 12.5.7 build-5813279
- Ubuntu 16.04.3 LTS 服务器虚拟机
解决方案
该解决方案源自vmware/open-vm-tools#62。
sudo apt-get install build-essential libprocps4-dev dnet-progs libdumbnet-dev doxygen libglib2.0-dev libtool autotool
git clone https://github.com/vmware/open-vm-tools.git
cd open-vm-tools/open-vm-tools
autoreconf -i
./configure --without-x --without-pam --without-ssl –without-icu --
enable-deploypkg=no
cd modules
make MODULES=vmhgfs
sudo insmod linux/vmhgfs/vmhgfs.ko
内核模块更新
每次内核更新后都必须重建并重新安装该模块。
要在 Linux 内核更新后清理 repo:git reset --hard open-vm-tools
make distclean
没有充分重置环境并会导致模块损坏。
模块安装
sudo mkdir /lib/modules/`uname -r`/extra
sudo mv linux/vmhgfs/vmhgfs.ko /lib/modules/`uname -r`/extra
sudo chown root:root /lib/modules/`uname -r`/extra/vmhgfs.ko
sudo chmod 644 /lib/modules/`uname -r`/extra/vmhgfs.ko
挂载共享文件夹
mount -t vmhgfs .host:/share /mnt/hgfs
要自动挂载,请编辑/etc/fstab文件并添加:
.host :/ /mnt/hgfs vmhgfs defaults 0 0
更新 #1
经过进一步调查,似乎 vmhgfs 已被移至用户空间并使用保险丝接口。
要挂载共享文件夹(假设 $HOME/Shared 存在):
/usr/bin/vmhgfs-fuse -o auto_unmount .host:/ $HOME/Shared
要自动挂载,请编辑/etc/fstab文件并添加:
.host:/ /home/user/Shared fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000,auto_unmount,defaults 0 0
其中 user 是您的用户 ID,而您的 uid 和 gid == 1000。用于id
确定您的 uid 和 gid。