feat: M6.10–M6.19 批量收编 + M6.19 推卡验收
- M7 launcher 重写 5 期(虚拟化宫格/meow_theme 单一权威/横幅动画/自定义 PIN 键盘) - OOM 通用化(cachegov 上收 SDK)、自动切歌根治、meowpanel jv_free 泄漏修复、Hello 滚动卡顿修复 - ncm 歌词 UI / 媒体通知封面 / 封面分辨率 640 - 5 bug 修复:ncm 后台化 UI 叠层+点击穿透、再进 ncm 桌面叠层、播放页新旧 UI 叠层抢刷脏区(meow_ui_gfx 恢复边沿整帧重画)、PIN 亮屏亮度跳(keys.c meow_panel_on 按 settings_brightness_clamped 恢复)、通知中心封面显歌单封面(cover.c save_cover_raw 加 is_song + 命中块守卫) - 四 App 统一重链新 meow_ui.a 51caee4a;M6.19=0.8.19 固件 2d2331f2 推卡自刷验收全绿
This commit is contained in:
1 parent
c2ee7626a4
commit
3d70a3dd2c
176 files changed
+15507
-597
No files matched your search
@@ -0,0 +1,85 @@
|
||||
# README_LGPL_RELINK — 如何替换 libmobi 并重新链接阅读器(LGPL-3.0 relink)
|
||||
|
||||
`os.meow.reader` 静态链接 **libmobi**(LGPL-3.0)。LGPL-3.0 §4(d) 要求以「允许用户在替换 libmobi 后重链」的方式提供源码(§4(d)(0))。本文件给出完整重链步骤:获取工具链 → 替换 libmobi 源码 → 重链 → 装回设备。**本操作可自行修改 libmobi 并重编,不触犯任何许可证限制;修改 libmobi 部分的衍生成果仍受 LGPL-3.0 约束(但不会被强制整体 GPL)。**
|
||||
|
||||
## 0) 相关文件与源码位置
|
||||
|
||||
| 内容 | 位置 |
|
||||
|---|---|
|
||||
| 阅读器自有源码 | 主仓:`https://git.yeij.top/AskaEth/MeowOS-For-R3P2.git`(`patch_v2/reader_app/`,Apache-2.0) |
|
||||
| libmobi 源码(锁定 commit) | `https://github.com/bfabiszewski/libmobi`,commit `906274205c11944b628da1c553b255acb1af7c55`(2024-10-29);`build_reader.sh` 的 `LM_URL` 即指向该 SHA |
|
||||
| 重链构建脚本 | `patch_v2/reader_app/build_reader.sh`(可复现构建 + qemu-mipsel 冒烟) |
|
||||
| 合规材料(随 .mpk 分发) | `patch_v2/reader_app/resources/licenses/`(`NOTICE` + `GPL-3.0.txt` + `LGPL-3.0.txt`) |
|
||||
|
||||
> 主仓公开性:`git ls-remote https://git.yeij.top/AskaEth/MeowOS-For-R3P2.git` 可匿名读到 HEAD,即公开可克隆(见 NOTICE「Source availability」)。若看不到,说明镜像/网络受限,请从维护者获取。
|
||||
|
||||
## 1) 获取 mipsel 交叉工具链(两种方式)
|
||||
|
||||
阅读器是 **mipsel / musl 静态软浮点 (sf)** 目标。构建用的是本地 `.tools/`(gitignored,不入仓),接收者需自行准备等价工具链:
|
||||
|
||||
- **方式 A(推荐,zig 单文件)**:下载 zig(`zig cc` 支持 `-target mipsel-linux-musl`,静态软浮点)。本项目用 `zig-mipsel-cc` 封装,等价于:
|
||||
```sh
|
||||
# 示例:zig-0.12+;把 zig 解压后设 ZIG 路径
|
||||
# zig cc -target mipsel-linux-musl -static ...
|
||||
```
|
||||
- **方式 B(musl 交叉编译套件)**:安装 `mipsel-linux-muslsf-cross`(如 musl.cc 发布的 `mipsel-linux-muslsf-cross`),得到:
|
||||
```
|
||||
$ROOT/.tools/mipsel-linux-muslsf-cross/mipsel-linux-muslsf # sysroot/lib等
|
||||
```
|
||||
`$ROOT = $HOME/Project/R3ProII`(build_reader.sh 内 `ROOT` 变量,可改)。
|
||||
|
||||
若本地已有 `.tools/`,重链无需再装。
|
||||
|
||||
## 2) 替换 libmobi 源码
|
||||
|
||||
```sh
|
||||
cd "$HOME/Project/R3ProII/patch_v2/reader_app"
|
||||
# 拉取你想要的 libmobi(或用 build_reader.sh 自动拉锁定 commit)
|
||||
# 用锁定 commit 拉取:
|
||||
curl -fsSL -o /tmp/lm.tgz \
|
||||
"https://codeload.github.com/bfabiszewski/libmobi/tar.gz/906274205c11944b628da1c553b255acb1af7c55"
|
||||
rm -rf vendor/libmobi && mkdir -p /tmp/lm_m && tar xzf /tmp/lm.tgz -C /tmp/lm_m --strip-components=1
|
||||
mkdir -p vendor/libmobi && cp -r /tmp/lm_m/src vendor/libmobi/src && cp /tmp/lm_m/COPYING vendor/libmobi/COPYING
|
||||
# 然后在此处对 vendor/libmobi/src/*.c 做你的修改
|
||||
```
|
||||
|
||||
## 3) 强制重编 libmobi 目标文件 + 重链
|
||||
|
||||
`build_reader.sh` 对 `vendor/libmobi/src/*.c` 有「已存在 .o 跳过」缓存(`vendor/build/lm_*.o`),替换源码后**必须清掉**旧目标文件再重跑,否则不会重编 libmobi:
|
||||
|
||||
```sh
|
||||
rm -f vendor/build/lm_*.o
|
||||
./build_reader.sh # 全量:编 libmobi/miniz/stb/freetype + 链接 reader + qemu-mipsel 冒烟
|
||||
```
|
||||
|
||||
- 产物:`./reader`(mipsel 静态 ELF)。
|
||||
- 需要 `qemu-mipsel`(跑冒烟单测);宿主 core/loader 单测用 `gcc`。
|
||||
- 若只想重链不跑测试,可手动执行 `build_reader.sh` 第 7 步的链接命令(见脚本注释),但建议跑全套以保正确。
|
||||
|
||||
## 4) 装回设备(两种方式)
|
||||
|
||||
- **方式 A(宽松,最直接;启动路径不验签)**:launcher 重扫 `MeowAPPs/` 后直接运行二进制,故把重链后的 `reader` 直接放到应用目录即可,**不触发安装期签名门**:
|
||||
```sh
|
||||
scp ./reader root@<设备IP>:/usr/data/mnt/sd_0/MeowAPPs/os.meow.reader/reader
|
||||
ssh root@<设备IP> 'chmod 755 /usr/data/mnt/sd_0/MeowAPPs/os.meow.reader/reader'
|
||||
# 若在跑,重开阅读器;MeowAPPs 热更即生效
|
||||
```
|
||||
- **方式 B(走官方 .mpk + 签名 + nyai 安装)**:`os.meow.*` 包无签会被 `nyai`/launcher 拒装,故需用 `.keys/signing.key` 签名(仅维护者持有私钥)。接收者的本地重链一般走方式 A。
|
||||
```sh
|
||||
./pack_reader_mpk.sh # 产 os.meow.reader.mpk(含 resources/licenses/)
|
||||
../meow_sign/meow_sign sign os.meow.reader.mpk "$HOME/Project/R3ProII/.keys/signing.key"
|
||||
scp os.meow.reader.mpk root@<设备IP>:/data/
|
||||
ssh root@<设备IP> 'nyai install /data/os.meow.reader.mpk'
|
||||
```
|
||||
|
||||
## 5) 修改自由度说明(LGPL 敏感点)
|
||||
|
||||
- 安装期签名校验只针对**未签名/无有效签**的 `.mpk` 安装;**启动路径**是 launcher 直接运行 `MeowAPPs/<pkg>/` 下的二进制(`README.md:259` 热更语义),对重链后的二进制**不做运行时验签**,改造自由度未被结构性封死。
|
||||
- 重链产物请**保留 `resources/licenses/` 随包**(含 GPL-3.0 + LGPL-3.0 全文 + NOTICE),并保留 libmobi 版权声明。
|
||||
- 你对 libmobi 的修改形成衍生作品:其自身仍按 LGPL-3.0 提供;把修改后的 libmobi 重新分发时应随附相应源码(按 LGPL §4 履行,本仓库的重链脚本 + 锁定的 `LM_URL` 即可复现)。
|
||||
|
||||
## 6) 校验
|
||||
|
||||
- `file ./reader` 应显示 `ELF 32-bit LSB executable, MIPS, ... statically linked, ... soft-float`。
|
||||
- `tar tzvf os.meow.reader.mpk` 应含 `resources/licenses/{NOTICE,GPL-3.0.txt,LGPL-3.0.txt}`。
|
||||
- 真机打开一本 MOBI 确认可读。
|
||||
Reference in new issue
Block a user