vault backup: 2026-06-16 22:44:49

This commit is contained in:
cyy_mac
2026-06-16 22:44:49 +08:00
parent 1c6b377160
commit b002fa6e56
5 changed files with 218 additions and 11 deletions

View File

@@ -0,0 +1,170 @@
好的,我们来把整个过程中的问题点和最终解决方案做一个清晰的总结,方便你日后参考。
---
## 📋 完整问题回顾与解决总结
### 一、环境背景
- **宿主机**M4 芯片 MacARM64 架构)
- **虚拟机软件**UTM
- **虚拟机系统**Ubuntu 22.04.5 LTSARM64 架构)
- **目标**:配置宿主机与 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 环境或其他开发工具,这份总结可以作为你的基础环境配置文档。有问题随时再问! 🚀