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

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -11,14 +11,14 @@
"id": "c926a1cc9fc50f7f", "id": "c926a1cc9fc50f7f",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "split-diff-view", "type": "markdown",
"state": { "state": {
"aFile": "技能树/moonlight-sunshine串流/moonlight-sunshine.md", "file": "零碎的知识/mac安装ubuntu.md",
"bFile": "技能树/moonlight-sunshine串流/moonlight-sunshine.md", "mode": "source",
"aRef": "" "source": false
}, },
"icon": "diff", "icon": "lucide-file",
"title": "Diff: moonlight-sunshine (Working Tree)" "title": "mac安装ubuntu"
} }
} }
] ]
@@ -182,15 +182,17 @@
}, },
"active": "c926a1cc9fc50f7f", "active": "c926a1cc9fc50f7f",
"lastOpenFiles": [ "lastOpenFiles": [
"零碎的知识/vscode免密.md",
"零碎的知识/mac安装ubuntu.md",
"超级备忘/粤嵌实训/正常开发流程.md",
"超级备忘/择校方面.md",
"技能树/校园网/校园网通过openwrt绕过校园网多设备检测.md", "技能树/校园网/校园网通过openwrt绕过校园网多设备检测.md",
"技能树/frp内网穿透技术/frp内网穿透.md", "技能树/frp内网穿透技术/frp内网穿透.md",
"技能树/moonlight-sunshine串流/moonlight-sunshine.md", "技能树/moonlight-sunshine串流/moonlight-sunshine.md",
"技能树/fireceawl api.md", "技能树/fireceawl api.md",
"个人日记/2026-05-11.md", "个人日记/2026-05-11.md",
"conflict-files-obsidian-git.md", "conflict-files-obsidian-git.md",
"超级备忘/粤嵌实训/正常开发流程.md",
"超级备忘/粤嵌实训", "超级备忘/粤嵌实训",
"超级备忘/择校方面.md",
"个人总纲和进度监督/英语六级/2026-06-12/2026-06-12.md", "个人总纲和进度监督/英语六级/2026-06-12/2026-06-12.md",
"个人总纲和进度监督/英语六级/2026-06-12", "个人总纲和进度监督/英语六级/2026-06-12",
"个人总纲和进度监督/英语六级/2026-06-07/2026-06-07.md", "个人总纲和进度监督/英语六级/2026-06-07/2026-06-07.md",
@@ -212,13 +214,11 @@
"零碎的知识/设置ipv4自动设置.md", "零碎的知识/设置ipv4自动设置.md",
"零碎的知识/嵌入式实验室设备使用指南.md", "零碎的知识/嵌入式实验室设备使用指南.md",
"零碎的知识/设置代理.md", "零碎的知识/设置代理.md",
"零碎的知识/vscode免密.md",
"零碎的知识/数学建模导论 -2025年2月学习笔记.md", "零碎的知识/数学建模导论 -2025年2月学习笔记.md",
"超级备忘/课内备忘/Pasted image 20260313115708.png", "超级备忘/课内备忘/Pasted image 20260313115708.png",
"超级备忘/课内备忘/课表.md", "超级备忘/课内备忘/课表.md",
"零碎的知识/ppo算法.md", "零碎的知识/ppo算法.md",
"零碎的知识/ros1禁用gazebo的gpu功能.md", "零碎的知识/ros1禁用gazebo的gpu功能.md",
"零碎的知识/ubuntu设置swap交换内存.md",
"个人总纲和进度监督/英语六级/2026-05-13/file_other/2025.12六级真题第3套.webp", "个人总纲和进度监督/英语六级/2026-05-13/file_other/2025.12六级真题第3套.webp",
"个人总纲和进度监督/英语六级/2026-05-13/file_other/2025.12六级真题第3套 5.webp", "个人总纲和进度监督/英语六级/2026-05-13/file_other/2025.12六级真题第3套 5.webp",
"个人总纲和进度监督/英语六级/2026-05-13/file_other/2025.12六级真题第3套 3.webp", "个人总纲和进度监督/英语六级/2026-05-13/file_other/2025.12六级真题第3套 3.webp",

BIN
技能树/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -98,4 +98,41 @@ buff保存需要发送的命令字节用户码+命令码)
初始化lcd 初始化lcd
在循环里面调用学习模式,把数据存储进来,发送模式把数据发送到另外一个模块上 在循环里面调用学习模式,把数据存储进来,发送模式把数据发送到另外一个模块上
学习模式发送到字节为0xa1 0x 学习模式发送到字节为0xa1 0x
项目要求:
在文件夹mini_desktop中新建项目可以把原来test里面的device.c/.h和依赖复制过来成为独立的项目
能够设计一个桌面,桌面上有两个功能
1.可以滑动的电子相册,显示图片,滑动切换图片,存储多张照片(字符串数组存储路径设置
pathname
图片位置在/Users/chenyouyuan/cyy_ws/mac_share/mini_desktop/images
图标和桌面背景的路径在/Users/chenyouyuan/cyy_ws/mac_share/mini_desktop/icon
2.红外功能:
可以参考/Users/chenyouyuan/cyy_ws/mac_share/gec6818_docker_test/ir_control
一个是发射功能,一个是接收功能,一个是学习功能
按下发射功能时,进入到发射页面,通过按下对应的按钮(多个发送功能按钮,可以发射不同的指令,默认四个功能:上下左右四个按键),可以发射固定的红外指令
学习功能时,跳转到学习页面,可以选择学习发送还是接收,并且选择之后可以选择对应的四个功能,按下开始屏幕上学习的按钮可以跟具别人发送过来的指令进行解析学习并存储,之后的发送都参考刚刚学习到的功能,可以做一个列表对应查找,已经学习到的功能可以标注一个绿色的点,并且可以在显示出学习到的命令内容(三字节)
接收功能除了在学习到时候默认开启接收并且点击接收功能之后进入到接收页面右边是屏幕打印出来接收到的调试数据同样的左侧显示四个接收到指令点那个收到对应的指令后闪烁绿色一下与发送的不一定相同建议分开存储解析功能一和二接收到后进行左右翻页功能三和四是控制板子上的led灯开关/每次收到命令蜂鸣器在500ms内滴滴两次
按钮设计:
get _bottom()当到达某一个范围时候触发,判断触摸的坐标
注意屏幕坐标范围和lcd显示的范围可以加一个按钮初始化给出按钮中心坐标和范围即可初始化按钮默认的按钮都是方形的白色为底色黑色为文字
分步测试(注意以上功能应当均可以在/Users/chenyouyuan/cyy_ws/mac_share/gec6818_docker_test中找到除了按钮的功能没有实现但是要求在mini_desktop中新建独立的测试文件夹test
测试图片显示功能(轮播形式)
测试左右滑动功能和触摸屏按钮的功能
结合图片测试桌面和点击图标跳转,相册滑动功能
测试点击桌面红外图标进入红外的各种ui显示功能
测试红外功能
综合联调形成桌面+相册+红外功能
黄炫齐制作相册app可以滑动的电子相册显示图片滑动切换图片存储多张照片字符串数组存储路径
肖宇轩:按钮设计:
get _bottom()当到达某一个范围时候触发,判断触摸的坐标
注意屏幕坐标范围和lcd显示的范围可以加一个按钮初始化给出按钮中心坐标和范围即可初始化按钮默认的按钮都是方形的白色为底色黑色为文字

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 环境或其他开发工具,这份总结可以作为你的基础环境配置文档。有问题随时再问! 🚀