5.5 KiB
5.5 KiB
好的,我们来把整个过程中的问题点和最终解决方案做一个清晰的总结,方便你日后参考。
📋 完整问题回顾与解决总结
一、环境背景
- 宿主机:M4 芯片 Mac(ARM64 架构)
- 虚拟机软件:UTM
- 虚拟机系统:Ubuntu 22.04.5 LTS(ARM64 架构)
- 目标:配置宿主机与 Ubuntu 虚拟机的共享文件夹
二、问题与解决过程全记录
阶段1:获取 ARM64 镜像
问题:在清华镜像站 ubuntu-releases/22.04.5/ 只看到 amd64 镜像,找不到 arm64。
原因:amd64 和 arm64 镜像分开放置:
amd64→ubuntu-releases/arm64→ubuntu-ports/或ubuntu-cdimage/
解决方案:
- 下载安装镜像:前往
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/releases/22.04.5/release/,选择ubuntu-22.04.5-live-server-arm64.iso(标准版,支持 ≤64GB 内存)。 - 配置 APT 软件源:使用
http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/作为jammy的软件源地址。
阶段2:尝试 VirtIO-FS 共享(失败)
问题:执行 sudo mount -t virtiofs share ~/shared 报错:
mount: /home/cyy/shared: wrong fs type, bad option, bad superblock on share...
排查过程:
- 尝试安装
virtiofsd:sudo apt install virtiofsd提示E: Unable to locate package virtiofsd。 - 启用
universe仓库后仍找不到该包。
结论:virtiofsd 在 Ubuntu 22.04 ARM64 架构的软件源中不存在,virtiofs 方案在 ARM64 上不可用。
阶段3:改用 SPICE WebDAV 共享(成功)
最终方案:使用 UTM 推荐的 SPICE WebDAV 方式。
步骤:
-
在 Ubuntu 中安装 WebDAV 相关软件包:
sudo apt update sudo apt install spice-vdagent spice-webdavd davfs2 -
在 UTM 中启用 WebDAV(虚拟机需关机状态):
- 编辑虚拟机 → “共享”选项卡
- 确保 “SPICE WebDAV” 已启用
- 添加要共享的 macOS 文件夹
-
在 Ubuntu 中挂载:
# 创建挂载点 mkdir -p ~/shared # 挂载(关键:使用 uid/gid 指定用户权限,并跳过认证) sudo mount -t davfs http://127.0.0.1:9843 ~/shared -o uid=1000,gid=1000⚠️ 注意:提示
Username:和Password:时,直接按回车跳过,不要输入任何内容。
阶段4:解决权限问题(Permission denied)
问题表现:
- 挂载后只能以
root写入,普通用户cyy无法创建文件。 - 执行
touch ~/shared/test.txt报Permission denied。
原因:
- 挂载时未指定
uid/gid,默认以root身份挂载。 - 用户输入了认证信息(
cyy/密码),导致挂载状态异常。
解决方案:
-
卸载时确保不在挂载目录内:
cd ~ sudo umount ~/shared如果提示
target is busy,使用惰性卸载:sudo umount -l ~/shared -
重新挂载并指定用户权限:
sudo mount -t davfs http://127.0.0.1:9843 ~/shared -o uid=1000,gid=1000认证环节必须直接回车跳过。
-
验证:
touch ~/shared/test.txt ls -l ~/shared
阶段5:配置文件语法错误排查
问题:修改 /etc/davfs2/davfs2.conf 后挂载报错:
/sbin/mount.davfs: /etc/davfs2/davfs2.conf:78: unknown option
原因:davfs2 的全局配置文件不支持 uid/gid 选项(某些版本限制)。
解决方案:
- 方式一(推荐):注释掉配置文件中添加的
uid/gid行,改用命令行参数指定:sudo sed -i '78,79s/^/#/' /etc/davfs2/davfs2.conf - 方式二:将
uid/gid写入/etc/fstab(见下文永久挂载方案)。
三、最终稳定方案总结
✅ 每次手动挂载(已验证)
cd ~ # 先退出挂载目录
sudo umount ~/shared # 如果已挂载,先卸载
sudo mount -t davfs http://127.0.0.1:9843 ~/shared -o uid=1000,gid=1000
# 遇到 Username/Password 提示时,直接按 Enter 跳过
✅ 永久挂载(推荐)
编辑 /etc/fstab,添加一行:
https://127.0.0.1:9843 /home/cyy/shared davfs rw,noauto,user,uid=1000,gid=1000 0 0
之后每次挂载只需:
mount ~/shared
无需 sudo,无认证提示,权限自动生效。
四、关键经验与避坑指南
| 问题 | 原因 | 正确做法 |
|---|---|---|
找不到 arm64 镜像 |
镜像分开放置 | 去 ubuntu-cdimage 或 ubuntu-ports 找 |
virtiofsd 无法安装 |
ARM64 软件源无此包 | 放弃 virtiofs,改用 SPICE WebDAV |
| 挂载后无法写入 | 未指定 uid/gid |
挂载时用 -o uid=1000,gid=1000 |
| 认证弹窗干扰 | 输入了用户名/密码 | 直接回车跳过(本地服务无需认证) |
卸载提示 busy |
终端在挂载目录内 | 先 cd ~,再 umount |
| 配置文件报错 | davfs2.conf 不支持 uid/gid |
注释掉,改用命令行或 /etc/fstab |
五、最终环境状态
- ✅ UTM 虚拟机运行 Ubuntu 22.04.5 ARM64
- ✅ SPICE WebDAV 共享文件夹正常工作
- ✅ 普通用户
cyy可读写共享目录 - ✅ 可选用
fstab自动挂载方案
如果你后续需要配置 YOLOv8 环境或其他开发工具,这份总结可以作为你的基础环境配置文档。有问题随时再问! 🚀