在 Windows 11 + VMware + CentOS 8 环境中实现共享目录自动挂载,核心是通过
fstab 配置开机自动挂载(依赖 VMware Tools 提供的 vmhgfs-fuse 工具),步骤如下,全程实操验证可行:
前提条件(必须先完成)
-
已在 VMware 中设置文件夹共享(虚拟机设置 → 选项 → 共享文件夹 → 启用 → 添加 Windows 共享目录,记好共享名,比如
win_share)。 -
CentOS 8 已安装 VMware Tools(或 Open-VM-Tools,推荐后者,兼容性更好):
bash运行
# 安装 Open-VM-Tools(CentOS 8 官方推荐替代 VMware Tools) sudo dnf install -y open-vm-tools open-vm-tools-desktop -
验证共享目录是否能被识别(确保 VMware 共享配置生效):
bash运行
vmware-hgfsclient # 执行后应输出你在 VMware 中设置的共享名(如 win_share)若未输出共享名,先检查 VMware 共享文件夹是否启用、虚拟机是否重启,或重新安装 Open-VM-Tools。
步骤 1:创建 CentOS 本地挂载点
先在 CentOS 中创建一个目录作为共享目录的 “挂载入口”(路径自定义,比如
/mnt/win_share):
bash
运行
# 创建挂载点目录(权限默认即可,后续挂载后会继承共享目录权限) sudo mkdir -p /mnt/win_share
步骤 2:测试手动挂载(验证配置可行性)
先手动挂载一次,确保
vmhgfs-fuse 工具和共享目录正常工作,避免直接配置自动挂载踩坑:
bash
运行
# 手动挂载命令(格式:vmhgfs-fuse 共享路径 本地挂载点) sudo vmhgfs-fuse .host:/win_share /mnt/win_share -o allow_other
-
说明:
-
.host:/win_share:host代表 Windows 主机,win_share是你在 VMware 中设置的共享名(必须和vmware-hgfsclient输出一致)。 -
-o allow_other:允许非 root 用户访问挂载的共享目录(否则只有 root 能读写)。
-
验证手动挂载是否成功:
-
访问挂载点,查看 Windows 共享目录中的文件:
bash运行
ls /mnt/win_share -
若能看到 Windows 共享目录的文件,说明手动挂载正常;若报错(如 “权限不足”“找不到共享”),先排查:
-
共享名是否正确(重新执行
vmware-hgfsclient确认)。 -
Open-VM-Tools 是否安装完整(重新执行
dnf install open-vm-tools)。 - Windows 共享目录是否设置了 “读写权限”(VMware 共享文件夹设置中选择 “读取 / 写入”)。
-
共享名是否正确(重新执行
步骤 3:配置开机自动挂载(核心步骤)
通过修改
/etc/fstab 文件,让 CentOS 开机时自动执行挂载命令(fstab 是系统开机自动挂载配置文件)。
3.1 编辑 fstab 文件
bash
运行
# 用 vim 编辑 fstab(也可用 nano,需先安装:sudo dnf install nano) sudo vim /etc/fstab
3.2 添加自动挂载配置
在
fstab 文件末尾添加一行(注意格式,字段用空格或制表符分隔):
plaintext
.host:/win_share /mnt/win_share fuse.vmhgfs-fuse defaults,allow_other 0 0
-
字段说明(按顺序):
-
.host:/win_share:共享源路径(主机 + 共享名,和手动挂载一致)。 -
/mnt/win_share:本地挂载点(步骤 1 创建的目录)。 -
fuse.vmhgfs-fuse:文件系统类型(固定值,依赖 VMware Tools)。 -
defaults,allow_other:挂载参数(defaults包含 rw、suid 等默认配置,allow_other允许非 root 访问)。 -
0:dump 备份标记(0 表示不备份,1 表示备份,默认填 0)。 -
0:fsck 检查顺序(0 表示开机不检查,根目录填 1,其他分区填 2,默认填 0)。
-
3.3 保存退出 vim
按
Esc,输入 :wq,回车(若编辑错误,输入 :q! 放弃保存退出)。
步骤 4:验证自动挂载配置(关键)
修改
fstab 后,必须先测试配置是否正确,避免开机无法进入系统:
bash
运行
# 重新加载 fstab 配置,执行自动挂载 sudo mount -a
- 若执行后无报错,说明配置正确;
-
若报错(如 “bad superblock”“invalid argument”),检查:
- 共享名、挂载点路径是否写错;
-
fuse.vmhgfs-fuse拼写是否正确; - 挂载参数是否多了逗号或空格。
再次验证挂载结果:
bash
运行
# 查看已挂载的文件系统,确认共享目录已挂载 df -h # 或直接访问挂载点 ls /mnt/win_share
若能看到 Windows 共享文件,说明自动挂载配置生效。
步骤 5:测试开机自动挂载(最终验证)
重启 CentOS 虚拟机,确认重启后共享目录仍能正常访问:
bash
运行
# 重启虚拟机 sudo reboot # 重启后执行,验证挂载 ls /mnt/win_share
若能正常看到共享文件,说明自动挂载成功!
常见问题排查
-
重启后挂载失败,执行
mount -a才生效:-
原因:CentOS 开机时,
fuse模块未加载,导致vmhgfs-fuse无法使用。 -
解决:手动加载
fuse模块并设置开机自动加载:bash运行# 手动加载 fuse 模块 sudo modprobe fuse # 设置开机自动加载 fuse 模块 echo "fuse" | sudo tee -a /etc/modules-load.d/fuse.conf
-
原因:CentOS 开机时,
-
非 root 用户无法访问挂载点:
-
原因:缺少
allow_other参数,或fuse模块默认禁止非 root 访问。 -
解决:
-
确保
fstab中挂载参数包含allow_other; -
编辑
fuse配置文件,允许allow_other:bash运行sudo vim /etc/fuse.conf -
取消注释
user_allow_other这一行(删除开头的#),保存退出,重启虚拟机。
-
确保
-
原因:缺少
-
vmware-hgfsclient无输出(看不到共享名):- 检查 VMware 共享文件夹是否 “启用”(虚拟机设置 → 选项 → 共享文件夹 → 勾选 “启用共享文件夹”);
- 虚拟机是否处于 “已开启” 状态(关闭虚拟机后修改共享配置,需重新开机生效);
-
重新安装 Open-VM-Tools:
sudo dnf reinstall open-vm-tools open-vm-tools-desktop。
-
挂载时提示 “Permission denied”:
- Windows 共享目录的权限不足(在 Windows 中右键共享目录 → 属性 → 共享 → 高级共享 → 权限,给 “Everyone” 或当前 Windows 账号设置 “读写” 权限);
-
CentOS 挂载点目录权限不足(执行
sudo chmod 777 /mnt/win_share临时测试,不建议生产环境用 777,可根据需求调整用户组权限)。
通过以上步骤,CentOS 8 会在每次开机后自动挂载 VMware 共享的 Windows 目录,无需手动执行挂载命令,兼顾稳定性和实用性。
