环境:
主机:windows 10
虚拟机:vmware ubuntu 18.04
第一步:开启共享文件夹
右键虚拟机–>设置–>选项–>点击共享文件夹–>选择“总是启用”–>添加文件夹–>确定
你可以在/mnt/hgfs里面看到你刚添加的共享文件夹
但是重启系统以后,/mnt/hgfs下就是空了。
此时你可以执行
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other
发现又可以,但是下次重启,又歇菜了。所以自然而然的想到,创建一个开机自启动服务就行了,于是你先创建了一个服务/etc/systemd/system/startup.service内容如下:
然后新建脚本/etc/startup/startup.sh,内容如下:
#! /bin/bash
vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other
注意:这里去掉sudo,是因为systemd默认会以root用户执行命令,然后给脚本添加可执行权限。同时需要把/etc/fuse.conf中的==#user_allow_other==取消注释。最后设置脚本自启动,sudo systemctl enable startup.service。
你重启后发现,/mnt/hgfs依然是空的,检查一下服务状态发现正常退出
systemctl status startup.service
但是手动执行/etc/startup/startup.sh就能正常挂载。于是怀疑,命令vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other有可能执行完毕后,一直在后台运行,于是在挂载成功的环境下,执行ps aux查看一下
果然,于是修改服务类型/etc/systemd/system/startup.service
Type=foking
[Type设为"forking",那么表示 ExecStart= 所设定的进程将会在启动过程中使用 fork() 系统调用。这是传统UNIX守护进程的经典做法。 也就是当所有的通信渠道都已建好、启动亦已成功之后,父进程将会退出,而子进程将作为该服务的主进程继续运行]
重启,发现成功挂载。然后再查看一下服务状态,Active。 😃
另一种更简单,更标准的做法是,修改/etc/fstab,添加一行:
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0
Over!😃