176 lines
5.0 KiB
Markdown
176 lines
5.0 KiB
Markdown
# Kindle Voyage 5.13.6 新机 Bootstrap 说明
|
||
|
||
## 目标
|
||
|
||
把“同型号新机拉齐能力”收敛成一个单入口脚本:
|
||
|
||
- 预置 `WatchThis` payload
|
||
- 预置 `KUAL / MRPI / USBNetwork / kindle-dash`
|
||
- 可选预置 `KTerm`
|
||
- 预置 SSH 恢复脚本
|
||
- SSH 打通后自动同步 dashboard shell 脚本 / KUAL 菜单 / 主题包,切主题并立即出图
|
||
|
||
对应脚本:
|
||
|
||
- [bootstrap-new-kindle.sh](/Users/gavin/kindle-dash/bootstrap-new-kindle.sh)
|
||
|
||
## 先说结论
|
||
|
||
这个脚本不是“100% 零交互刷机”。
|
||
|
||
当前仍然不能完全自动化的部分有:
|
||
|
||
1. `WatchThis` demo 流程本身需要设备端手势与点击
|
||
2. `;log mrpi` 需要在 Kindle 搜索栏手工触发
|
||
3. 首次 SSH 最稳的方式仍然是在 `KTerm` 里执行:
|
||
|
||
```sh
|
||
sh /mnt/us/ssh-force-dropbear-22.sh
|
||
```
|
||
|
||
所以这套 bootstrap 的真实定位是:
|
||
|
||
- 尽量把 Mac 侧和文件预置自动化
|
||
- 把设备侧必须手工的动作压到最少
|
||
|
||
## KTerm 说明
|
||
|
||
当前仓库默认不自带 `KTerm` 安装包。
|
||
|
||
脚本支持两种方式把 `KTerm` 纳入预置:
|
||
|
||
1. 直接把官方 `KTerm` release 的 `.zip` 放到:
|
||
|
||
```text
|
||
dash/staging/kterm/kterm-kindle-*.zip
|
||
```
|
||
|
||
2. 或执行脚本时显式传入:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh prepare-storage --kterm-package /绝对路径/kterm-kindle-*.zip
|
||
```
|
||
|
||
3. 或直接让脚本在 Mac 侧联网下载:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh prepare-storage --download-kterm --kterm-version latest
|
||
```
|
||
|
||
也可以固定版本:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh prepare-storage --download-kterm --kterm-version v2.6
|
||
```
|
||
|
||
如果脚本没有找到 `KTerm` 安装包,它不会报错退出,但会明确提示:
|
||
|
||
- 本轮只预置 SSH 恢复脚本
|
||
- `KTerm` 仍需手工补装
|
||
|
||
下载逻辑说明:
|
||
|
||
- 下载发生在 Mac 侧,不在 Kindle 设备侧进行
|
||
- 下载后的 `.zip` 会缓存到 `dash/staging/kterm/`
|
||
- 对 `Kindle Voyage 5.13.6`,脚本默认优先选择不带 `armhf` 后缀的 `.zip`
|
||
- 预置时会直接解压到 Kindle 的 `extensions/`
|
||
|
||
## 脚本模式
|
||
|
||
### 1. `prepare-storage`
|
||
|
||
当 Kindle 以 USB 存储方式挂载到 Mac 后执行:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh prepare-storage
|
||
```
|
||
|
||
它会自动:
|
||
|
||
- 把 `KV-5.13.6.zip`、`demo.json` 放到 `.demo/`
|
||
- 创建 `.demo/goodreads/`
|
||
- 把 `Update_hotfix_watchthis_custom.bin` 放到 Kindle 根目录
|
||
- 把 `extensions/`、`mrpackages/`、`dashboard/` 预置到 Kindle
|
||
- 把 `scripts/kindle/*.sh` 拷到 Kindle 根目录,供 `KTerm` 使用
|
||
- 如果检测到 `KTerm` zip,也会一并解压到 `extensions/`
|
||
|
||
### 2. `post-ssh`
|
||
|
||
当 Kindle 已连上 Wi‑Fi,且你已经在 `KTerm` 拉起 `dropbear` 后执行:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh post-ssh
|
||
```
|
||
|
||
它会自动:
|
||
|
||
- 修复设备侧 SSH 辅助脚本权限
|
||
- 尝试同步 `authorized_keys`
|
||
- 同步 dashboard shell 脚本、KUAL 菜单和主题包
|
||
- 立即切到指定主题并把背景画到屏幕上
|
||
|
||
当前边界:
|
||
|
||
- `post-ssh` 不会回补 `prepare-storage` 阶段预置的原生二进制,例如 `next-wakeup`、`xh`
|
||
- 所以它的默认前提仍然是:这台设备之前已经执行过 `prepare-storage`,或设备上本来就已有完整 dashboard 基础运行时
|
||
|
||
可选:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh post-ssh -t simple -o portrait
|
||
sh bootstrap-new-kindle.sh post-ssh --start-dashboard
|
||
```
|
||
|
||
其中 `--start-dashboard` 的稳定前提也是一样:设备上必须已经具备完整 dashboard 基础运行时。
|
||
|
||
### 3. `all`
|
||
|
||
默认模式:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh
|
||
```
|
||
|
||
逻辑是:
|
||
|
||
- 如果检测到 `/Volumes/Kindle`,先做 `prepare-storage`
|
||
- 如果同时检测到 `ssh kindle` 可用,再继续做 `post-ssh`
|
||
- 哪一段当前做不了,就明确打印下一步人工动作
|
||
|
||
## 设备侧最短人工步骤
|
||
|
||
1. 恢复出厂并进入 demo mode
|
||
2. 到真正的 `Sideload Content` 时机
|
||
3. 让脚本已预置好的 `.demo` payload 生效
|
||
4. `;dsts -> Help & User Guides -> Get Started`
|
||
5. 继续完成 demo 流程里的 `register this demo -> Skip -> standard`
|
||
6. 重启后遇到 `Configure Device`,用隐藏手势回到主页
|
||
7. 搜索 `;uzb` 挂载 USB,把 `Update_hotfix_watchthis_custom.bin` 放到根目录
|
||
8. `;dsts -> Device Options -> Update Your Kindle`
|
||
9. 回到主页后搜索 `;log mrpi`
|
||
10. 在 `KUAL` 中先执行 `Rename OTA Binaries -> Rename`
|
||
11. 如果本轮没有预置 `KTerm`,这里先手工补装 `KTerm`
|
||
12. 连上 Wi‑Fi
|
||
13. 打开 `KTerm`,执行:
|
||
|
||
```sh
|
||
sh /mnt/us/ssh-force-dropbear-22.sh
|
||
```
|
||
|
||
14. 回到 Mac,执行:
|
||
|
||
```sh
|
||
sh bootstrap-new-kindle.sh post-ssh
|
||
```
|
||
|
||
这里默认仍然建立在第 1 步已经成功做过 `prepare-storage` 的前提上。
|
||
|
||
## 相关文档
|
||
|
||
- WatchThis 越狱路径:
|
||
[kindle-voyage-5.13.6-watchthis-zh.md](/Users/gavin/kindle-dash/dash/docs/kindle-voyage-5.13.6-watchthis-zh.md)
|
||
- SSH 打通与 KTerm 兜底:
|
||
[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)
|
||
- 恢复出厂后的 bootstrap 闭环验证:
|
||
[kindle-voyage-5.13.6-bootstrap-validation-zh.md](/Users/gavin/kindle-dash/dash/docs/kindle-voyage-5.13.6-bootstrap-validation-zh.md)
|