环境
主机:Windows 10, 64位
虚拟机ubuntu操作系统:ubuntu-22.10-desktop-amd64.iso
设置共享文件夹
登录虚拟机系统——点击虚拟机——设置——选项——共享文件夹——添加共享文件夹——确认
查看共享文件夹情况
sudo vmware-hgfsclient
执行结果:得到共享文件夹名称
创建挂载目录
mkdir /mnt/hgfs
指定挂载目录
指定用户和组挂载:
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=022
完成后两个操作系统之间可以相互传输文件
长期挂载
问题:重启虚拟机可能会发现/mnt/hgfs下找不到该共享文件夹
方法一:
执行命令:(每次找不到该共享文件夹都要执行该命令)
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
方法二:(暂时没成功)
可将该命令放在 /ect/rc.local 里面(该文件是开机启动会执行的一个文件)
我们知道 rc.local 文件中可以配置一些开机启动的程序,目前比较新的系统,建议大家以服务的方式来配置开机启动,所以没有 rc.local 这个文件了,下面创建 rc.local,并设置程序的开机启动。
- 在 /etc/systemd/system/ 目录下新建 rc-local.service 文件,使用 vim 编辑器,复制粘贴下面的内容:
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
- 创建/etc/rc.local文件
sudo touch /etc/rc.local
- 编辑/etc/rc.local文件
sudo vim /etc/rc.local
- 在 /etc/ 目录下新建 rc.local 文件,使用 vim 编辑器,复制粘贴下面的内容:
#!/bin/sh -e
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o allow_other
- 给其增加执行权限
sudo chmod +x /etc/rc.local
- rc-local.service服务设置开机自启
systemctl enable rc-local.service
- 检验是不是已经开机启动
在 Linux 系统重启后,可以使用 ps 命令查看程序是不是已经开机启动:
ps -ef | grep rc-local
查询结果:
实现原理
- systemd 默认会读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接 /lib/systemd/system/ 下的文件。一般系统安装完 /lib/systemd/system/ 下会有 rc-local.service 文件,即我们需要的配置文件。