好的,我们来把整个过程中的问题点和最终解决方案做一个清晰的总结,方便你日后参考。 --- ## 📋 完整问题回顾与解决总结 ### 一、环境背景 - **宿主机**: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... ``` **排查过程**: 1. 尝试安装 `virtiofsd`:`sudo apt install virtiofsd` 提示 `E: Unable to locate package virtiofsd`。 2. 启用 `universe` 仓库后仍找不到该包。 **结论**:`virtiofsd` 在 Ubuntu 22.04 ARM64 架构的软件源中**不存在**,`virtiofs` 方案在 ARM64 上不可用。 --- #### 阶段3:改用 SPICE WebDAV 共享(成功) **最终方案**:使用 UTM 推荐的 **SPICE WebDAV** 方式。 **步骤**: 1. **在 Ubuntu 中安装 WebDAV 相关软件包**: ```bash sudo apt update sudo apt install spice-vdagent spice-webdavd davfs2 ``` 2. **在 UTM 中启用 WebDAV**(虚拟机需关机状态): - 编辑虚拟机 → “共享”选项卡 - 确保 “SPICE WebDAV” 已启用 - 添加要共享的 macOS 文件夹 3. **在 Ubuntu 中挂载**: ```bash # 创建挂载点 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`/密码),导致挂载状态异常。 **解决方案**: 1. **卸载时确保不在挂载目录内**: ```bash cd ~ sudo umount ~/shared ``` 如果提示 `target is busy`,使用惰性卸载: ```bash sudo umount -l ~/shared ``` 2. **重新挂载并指定用户权限**: ```bash sudo mount -t davfs http://127.0.0.1:9843 ~/shared -o uid=1000,gid=1000 ``` **认证环节必须直接回车跳过**。 3. **验证**: ```bash 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` 行,改用**命令行参数**指定: ```bash sudo sed -i '78,79s/^/#/' /etc/davfs2/davfs2.conf ``` - **方式二**:将 `uid`/`gid` 写入 `/etc/fstab`(见下文永久挂载方案)。 --- ### 三、最终稳定方案总结 #### ✅ 每次手动挂载(已验证) ```bash 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 ``` 之后每次挂载只需: ```bash 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 环境或其他开发工具,这份总结可以作为你的基础环境配置文档。有问题随时再问! 🚀