UTM实现虚拟机与宿主机文件共享依赖virtio-fs或9p协议,核心步骤为:宿主机在UTM图形界面设置共享目录并启用→虚拟机创建挂载点→执行mount命令挂载→可选写入fstab实现持久化。
utm 实现虚拟机与宿主机之间文件挂载,核心靠的是 virtio-fs(默认)或 9p 协议,无需 ssh、ftp 或手动配置网络,图形化设置后只需几条命令挂载即可使用。关键点在于:宿主机设共享目录 → utm 启用并关联 → 虚拟机内创建挂载点 → 执行挂载命令 → (可选)写入 fstab 持久生效。
一、宿主机端:设置共享目录(macOS/Windows/Linux 通用)
这是所有操作的前提,必须在 UTM 图形界面中完成:
- 确保共享目录路径不含中文、空格或特殊符号(推荐如
/Users/yourname/utm-share或D:\UTMShare); - 打开 UTM,右键目标虚拟机 → “Settings” → 切换到 “Devices” 标签页;
- 找到 “Shared Folders”,点击 “+” 添加,选择上述目录;
- 勾选 “Always Enabled”,根据需要设置为 “Read Only” 或 “Writable”;
- 保存设置,无需重启虚拟机(但若已开机,挂载步骤仍需手动执行)。
二、虚拟机端:挂载共享目录(以 Ubuntu Server 为例)
UTM 不会自动挂载共享目录,尤其无桌面环境的 Server 版本,需手动操作:
- 先创建挂载点:
sudo mkdir -p /mnt/utm-share; - 确认 UTM 已启用共享:运行
ls /proc/mounts | grep 9p或find /sys -name "virtio*" 2>/dev/null,有输出说明协议就绪; - 执行挂载命令(根据 UTM 版本和虚拟机系统选其一):
• virtio-fs(推荐,性能好):sudo mount -t virtiofs share /mnt/utm-share -o context=system_u:object_r:svirt_sandbox_file_t:s0
• 9p(兼容旧系统):sudo mount -t 9p -o trans=virtio,version=9p2000.L share /mnt/utm-share; - 验证是否成功:
ls /mnt/utm-share应能列出宿主机该目录下的全部文件。
三、让挂载持久化(重启不丢失)
临时挂载在重启后失效,需写入 /etc/fstab:
- 备份原文件:
sudo cp /etc/fstab /etc/fstab.bak; - 追加一行(以 9p 为例):
share /mnt/utm-share 9p trans=virtio,version=9p2000.L,uid=1000,gid=1000 0 0; - 测试配置是否合法:
sudo mount -a,无报错即生效; - 下次启动时系统将自动挂载,无需再手动执行 mount 命令。
四、常见问题快速处理
挂载失败大多源于权限或协议未就绪:
-
“Operation not permitted” 或 “No such device”:检查虚拟机是否启用
virtio-fs支持(Ubuntu 22.04+ 默认支持;旧版需确认内核含CONFIG_VIRTIO_FS); -
挂载后看不到文件或提示 Permission denied:在挂载命令中添加
uid=1000,gid=1000(对应虚拟机普通用户 ID),或改用allow_other选项(需 FUSE 支持); -
Windows 宿主机下路径识别异常:UTM 对 Windows 共享路径兼容性较好,但建议用 WSL2 风格路径(如
C:/UTMShare),避免反斜杠和盘符大小写混淆; -
图形界面虚拟机(如 Ubuntu Desktop):部分版本会自动探测并挂载到
/run/host/share,可直接访问,无需额外操作。

















