263 lines
6.6 KiB
Markdown
263 lines
6.6 KiB
Markdown
# Kindle Voyage 5.13.6 Bootstrap 闭环验证清单
|
||
|
||
## 目标
|
||
|
||
用一台已经越狱过、同型号同固件的 `Kindle Voyage 5.13.6` 做一次“恢复出厂 -> 重新越狱 -> 安装 KUAL/MRPI/USBNetwork/KTerm -> 打通 SSH -> 显示 dashboard”的闭环验证,确认:
|
||
|
||
- [bootstrap-new-kindle.sh](/Users/gavin/kindle-dash/bootstrap-new-kindle.sh) 现在的方案是否足够完整
|
||
- 哪些步骤已经可以自动化
|
||
- 哪些步骤仍然必须人工完成
|
||
|
||
## 重要前提
|
||
|
||
执行前先确认:
|
||
|
||
1. 设备型号仍然是 `Kindle Voyage`
|
||
2. 固件版本仍然是 `5.13.6`
|
||
3. 你接受这是破坏性验证
|
||
4. 设备里当前的 `KUAL`、SSH、dashboard、主题配置、日志都会被清掉
|
||
|
||
如果固件版本不是 `5.13.6`,不要按这份清单执行。
|
||
|
||
## 重置前准备
|
||
|
||
### 1. 先备份当前设备侧用户存储
|
||
|
||
把 Kindle 通过 USB 挂载到 Mac 后,至少备份这些目录:
|
||
|
||
```text
|
||
/Volumes/Kindle/dashboard
|
||
/Volumes/Kindle/extensions
|
||
/Volumes/Kindle/mrpackages
|
||
/Volumes/Kindle/documents
|
||
```
|
||
|
||
如果你只想做最小备份,也至少把下面这些拷走:
|
||
|
||
- `dashboard/`
|
||
- `extensions/`
|
||
- `documents/` 里你关心的 crash 包和日志
|
||
|
||
### 2. 在 Mac 侧准备 bootstrap 预置
|
||
|
||
推荐直接用带 KTerm 下载的版本:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh prepare-storage --download-kterm --kterm-version latest
|
||
```
|
||
|
||
如果你不想拉 latest,也可以固定版本:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh prepare-storage --download-kterm --kterm-version v2.6
|
||
```
|
||
|
||
这一步的预期结果:
|
||
|
||
- Kindle 根目录出现 `Update_hotfix_watchthis_custom.bin`
|
||
- Kindle 根目录出现 `dashboard/`
|
||
- Kindle 根目录出现 `extensions/`
|
||
- Kindle 根目录出现 `mrpackages/`
|
||
- Kindle 根目录出现 `ssh-force-dropbear-22.sh`
|
||
- Kindle 根目录出现 `.demo/KV-5.13.6.zip`
|
||
- Kindle 根目录出现 `.demo/demo.json`
|
||
- Kindle 根目录出现 `.demo/goodreads/`
|
||
- 如果下载了 `KTerm`,`extensions/` 里会直接出现 `kterm/`
|
||
|
||
做完后安全弹出 Kindle。
|
||
|
||
## 设备侧执行顺序
|
||
|
||
### 3. 恢复出厂
|
||
|
||
在 Kindle 上执行恢复出厂。
|
||
|
||
恢复后开始首启流程时:
|
||
|
||
1. 语言只选 `English (United Kingdom)`
|
||
2. 到 Wi‑Fi 页面时,不要真的联网
|
||
3. 进入 demo mode,按 [kindle-voyage-5.13.6-watchthis-zh.md](/Users/gavin/kindle-dash/dash/docs/kindle-voyage-5.13.6-watchthis-zh.md#L61) 的流程操作
|
||
|
||
### 4. WatchThis 导入点
|
||
|
||
必须特别注意:
|
||
|
||
1. 第一次 `Add Content / Sideload Content` 只能点 `Done`
|
||
2. 不要在第一次导入点接 USB
|
||
3. 真正的 payload 导入点,是隐藏手势返回后,再次进入 `;demo -> Sideload Content`
|
||
|
||
这里的详细说明看:
|
||
|
||
- [kindle-voyage-5.13.6-watchthis-zh.md](/Users/gavin/kindle-dash/dash/docs/kindle-voyage-5.13.6-watchthis-zh.md#L80)
|
||
- [kindle-voyage-5.13.6-watchthis-zh.md](/Users/gavin/kindle-dash/dash/docs/kindle-voyage-5.13.6-watchthis-zh.md#L100)
|
||
|
||
因为 bootstrap 已经把 `.demo` payload 预置好了,这一轮不需要你在导入点再手工从 Mac 拷 `KV-5.13.6.zip`。
|
||
|
||
### 5. 触发越狱并验收
|
||
|
||
完成 `Get Started` 后,设备会重启并执行越狱脚本。
|
||
|
||
验收标准:
|
||
|
||
- Kindle 用户存储根目录出现 `mkk`
|
||
- Kindle 用户存储根目录出现 `libkh`
|
||
- Kindle 用户存储根目录出现 `rp`
|
||
|
||
如果没有这三个目录,说明这轮 `WatchThis` 没真正落地,不要继续往后做。
|
||
|
||
### 6. 安装 KUAL / MRPI / USBNetwork / dashboard / KTerm
|
||
|
||
回到首页后:
|
||
|
||
1. 搜索 `;log mrpi`
|
||
2. 等 MRPI 跑完
|
||
3. 回首页确认:
|
||
- 有 `KUAL`
|
||
- 如果本轮预置了 `KTerm`,应该已经能看到 `KTerm`
|
||
|
||
然后进入 `KUAL`,先执行:
|
||
|
||
```text
|
||
Rename OTA Binaries -> Rename
|
||
```
|
||
|
||
不要先跑 `Kindle Dashboard`。
|
||
|
||
## Wi‑Fi 和 SSH 验证
|
||
|
||
### 7. 接回 Wi‑Fi
|
||
|
||
让 Kindle 连到和 Mac 同一个主 Wi‑Fi。
|
||
|
||
不要用:
|
||
|
||
- Guest Wi‑Fi
|
||
- 开了客户端隔离的网络
|
||
|
||
### 8. 在 KTerm 里拉起 DropBear
|
||
|
||
打开 `KTerm`,执行:
|
||
|
||
```sh
|
||
sh /mnt/us/ssh-force-dropbear-22.sh
|
||
/mnt/us/usbnet/bin/lsof -n -P -iTCP:22
|
||
```
|
||
|
||
验收标准:
|
||
|
||
应该看到类似:
|
||
|
||
```text
|
||
dropbear... TCP *:22 (LISTEN)
|
||
```
|
||
|
||
### 9. 在 Mac 上确认 SSH
|
||
|
||
回到 Mac:
|
||
|
||
```sh
|
||
ssh kindle
|
||
```
|
||
|
||
登录后执行:
|
||
|
||
```sh
|
||
id
|
||
uname -a
|
||
ps -ef | grep -E 'sshd|dropbear|telnetd' | grep -v grep
|
||
```
|
||
|
||
验收标准:
|
||
|
||
- `uid=0(root)`
|
||
- 存在 `dropbearmulti dropbear ... -p 22 ...`
|
||
|
||
如果这一步失败,按:
|
||
|
||
- [kindle-voyage-5.13.6-dual-ssh-playbook-zh.md](/Users/gavin/kindle-dash/dash/docs/kindle-voyage-5.13.6-dual-ssh-playbook-zh.md#L210)
|
||
|
||
继续排障,不要直接判断 bootstrap 失败。
|
||
|
||
## Dashboard 闭环验证
|
||
|
||
### 10. 让 bootstrap 跑后半段
|
||
|
||
在 Mac 上执行:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh post-ssh -t simple -o portrait
|
||
```
|
||
|
||
预期结果:
|
||
|
||
- 同步当前 dashboard 运行时
|
||
- 同步主题包
|
||
- 设备立即切到 `simple / portrait`
|
||
- 屏幕出现背景与时钟
|
||
|
||
如果你还要验证后台常驻主循环,再执行:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh post-ssh -t simple -o portrait --start-dashboard
|
||
```
|
||
|
||
### 11. 抓首张验收图
|
||
|
||
在 Mac 上执行:
|
||
|
||
```sh
|
||
sh snapshot.sh -t simple -o portrait
|
||
```
|
||
|
||
或者如果你不想再切主题,只抓当前画面:
|
||
|
||
```sh
|
||
sh snapshot.sh --capture-only -b bootstrap-validation
|
||
```
|
||
|
||
验收标准:
|
||
|
||
- 本地成功生成 `physical.png`
|
||
- Kindle 上显示 `simple / portrait`
|
||
- 时钟、天气、日历、鸡汤都正常
|
||
|
||
## 这轮验证要回答的问题
|
||
|
||
执行完后,明确记录下面 5 个结论:
|
||
|
||
1. `prepare-storage --download-kterm` 是否足够把 USB 预置做完整
|
||
2. `WatchThis` 是否能在“已有一轮越狱历史”的同机上再次稳定跑通
|
||
3. `;log mrpi` 后,`KUAL / USBNetwork / KTerm / dashboard` 是否都能落地
|
||
4. `KTerm -> ssh-force-dropbear-22.sh -> ssh kindle` 是否仍是最稳入口
|
||
5. `post-ssh` 是否已经能把 dashboard 自动拉到“可见、可抓图”的状态
|
||
|
||
## 失败时怎么回退
|
||
|
||
如果中途失败,按这个顺序收敛:
|
||
|
||
1. 先不要继续改 dashboard 页面代码
|
||
2. 先判断失败落在哪一层:
|
||
- `WatchThis`
|
||
- `MRPI`
|
||
- `KTerm`
|
||
- `SSH`
|
||
- `post-ssh`
|
||
3. 如果已经拿到 `KTerm`,优先在本机看进程和端口
|
||
4. 如果已经拿到 `ssh kindle`,优先保留日志和 `/mnt/us/ssh-debug/`
|
||
5. 不要把 `KUAL -> Dashboard -> 再返回 KUAL` 当成验收项
|
||
|
||
## 推荐实际执行命令
|
||
|
||
如果你要按最少分支走,直接按这个顺序:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh prepare-storage --download-kterm --kterm-version latest
|
||
```
|
||
|
||
设备侧完成恢复出厂、WatchThis、`;log mrpi`、Wi‑Fi、KTerm 拉起 SSH 后,再执行:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh post-ssh -t simple -o portrait --start-dashboard
|
||
sh snapshot.sh --capture-only -b bootstrap-validation
|
||
```
|