r2 评审 p2-6items 六条全部处理;**产物字节未变**(5 件 md5 与31d4c22完全一致)。 P2-1/P2-4 归因纠正(31d4c22 提交说明里那两行是错的,以本条为准): - bootmenu 的 +1728 **不是**工具链代差,是 M23 源码(m2.29→m2.30)。证据:旧件 `readelf -p .comment` 已是 clang 22.1.8(与新件同代);旧件版本串 `0.1.0-m2.29-takeover`, 而钉值 commit884d4c4的源码已是 m2.30;用 6364498(m2.29 树)+ 今天的工具链重编得 157108/0507739d,与旧钉值件逐字节相同。 - launcherd 的 −512 也不是编译器:新旧 .comment 集合一致(那道 21.1.8 来自 meow_ui.a 里的 meow_font.o),真实原因是 SDK 静态库从 86800633 换成 cc0ed49b——用58cdb73源码 + 86800633 的 .a 重编得 894940/cea0a735,与旧钉值件逐字节相同。 - 因此**只有 meow_audiod 真有工具链代差**(旧 clang/LLD 21.1.8 → 新 22.1.8)。 P2-2 主 checkout 定位:`git rev-parse --git-common-dir` 给的是主仓库 .git 的**绝对**路径, 父目录才是主 checkout;旧版把绝对路径当相对路径拼到 $ROOT 下,`cd` 失败被 `set -e` 直接终止 → 干净 worktree 里静默 exit 1。现为 `cd "$_gcd/.."` + 全部 `|| true`, 找不到 meow_ui.a 时**先**打印诊断(缺什么、试过哪些路径、怎么覆盖)再退出。 P2-3 .tools 兜底层级:旧版把 $COMPAT_HOME/Project/R3ProII 指向 ROOT,脚本里的 `$HOME/Project/R3ProII/.tools` 就落到 `<checkout>/.tools`(干净 worktree 不存在 → 127)。 现在造一个真目录,只放 `.tools -> ~/.tools` 与 `patch_v2 -> $ROOT/patch_v2`; 零手工准备即可开箱重编。README 措辞同步改准。 P2-5 门禁假绿:test_time32_abi.sh 的退出码现计入 FAIL,脚本缺失也记 FAIL。 失败桩自证:`PASS=33 FAIL=1`、exit 1(原为 PASS=33 FAIL=0 / exit 0)。 P2-6 desc:meow_audio 的 `volume` → 真实子命令 `status / tone / route / vol / output / monitor` (并避开 `|`,否则破坏清单 4 字段格式);bootmenu 的读取键改为 display.brightness (display.brightness_min 只是下限 clamp);netmgrd 去掉「以太网连接」的夸大说法。
78 lines
11 KiB
Plaintext
78 lines
11 KiB
Plaintext
# ============================================================================
|
||
# fw_content.conf — MeowOS 固件内容清单(默认 / 基线 = M6.46 / 0.8.46)
|
||
#
|
||
# 格式(每行一条):
|
||
# <src>|<dst>|<md5>|<desc>
|
||
# <src> 仓库内相对路径(相对项目根 ROOT,如 patch_v2/bootmenu/meow_bootmenu)
|
||
# <dst> 目标绝对路径(安装进 squashfs-root,如 /usr/bin/xxx 或 /etc/init.d/Sxx)
|
||
# <md5> 可空 = 不校验;填了 = 对 <src> 做强校验,不一致即退出(防呆:源被改)
|
||
# <desc> 仅注释用途,可省略;若出现会保留整段(含 '|')作为说明
|
||
#
|
||
# 规则:
|
||
# - '#' 开头为注释;空行忽略。
|
||
# - 目标目录自动创建;usr/bin / etc/init.d / etc/profile.d 一律 chmod 755。
|
||
# - 凡 <md5> 非空,构建前对 <src> 做 md5 强校验(不匹配 → 构建中止)。
|
||
#
|
||
# 本清单为【基线】。要并存多套调试/场景配置,复制本文件并改内容,用
|
||
# build_fw_apps.sh -c <其它配置路径> ... 即可,互不干扰。
|
||
#
|
||
# 注意:本清单【不含】由通用步骤管理的条目——
|
||
# - etc/meowos_version → 由 -v/--version 写入
|
||
# - /etc/logo* + /etc/boot_animation/0.png + /etc/shutdown_logo.jpeg
|
||
# → 由通用步骤从 bootlogos/ 拷贝
|
||
# - /etc/init.d/S84ssh → 由通用步骤把基线 S99ssh 改名而来(清单不含 S84)
|
||
# - usr/bin 外围 CLI 瘦身 → 由通用步骤按白名单移除
|
||
# - /etc/shutdown_logo.jpeg → 由通用步骤从 bootlogos/ 拷贝(图片)
|
||
# 注:/etc/init.d/S95shutdown_logo 是【init 脚本】(清单第 44 行单独一条,负责关机时显示该图)
|
||
# ============================================================================
|
||
|
||
# ---- 用户态/服务守护二进制(usr/bin,全部 chmod 755 静态 MIPS)----
|
||
patch_v2/bootmenu/meow_bootmenu|/usr/bin/meow_bootmenu|8bce6558cbc25faa8fbc105078003ef5|开机引导选单(MIPS32 musl 静态二进制):显示前按 settings.conf 的 display.brightness 设定面板亮度(下限取 display.brightness_min);菜单超时/按键长按时序
|
||
patch_v2/meow_launcherd/meow_launcherd|/usr/bin/meow_launcherd|e21450ff6621a67fd854165413c58be1|桌面/启动器主程序(MIPS32 musl 静态,链 SDK meow_ui.a):桌面与状态栏渲染、设置页(亮度/蓝牙/WiFi)、App 启动;包安装委托 /usr/bin/nyai
|
||
patch_v2/meow_watchdog/meow_watchdog|/usr/bin/meow_watchdog|37c57e0feb9cd220978bfd5deff75a1f|应用看门狗 M40:o32 time32 取时/睡眠(修 held 天文数字→单击误判长按)、电源阈值读 power.longpress_menu_ms/forceoff_ms(缺省 3000/8000,与 launcher 主屏统一);继承 M20 亮屏亮度按 settings 恢复(四支决策不再回退固定 60)
|
||
patch_v2/meow_svcd/meow_svcd|/usr/bin/meow_svcd|d2111094e458336b52f9e8d524e35a91|服务管理器 M2.77(+崩溃上报 meow_crash agent-187);M43 链 meow_time32(o32 time32 取时/睡眠,修 time64 ABI;重启退避/停止宽限恢复真实毫秒)
|
||
mips-repo/bins/meow_mdns/bin/meow_mdns|/usr/bin/meow_mdns|d6b0151bda26768f19952dae1342610d|mDNS 应答器 M2.78(启动竞态+换IP重检 agent-194)
|
||
patch_v2/meow_sysui/meow_sysui|/usr/bin/meow_sysui|d33fa6bd71541875de7e373721d8c9d8|系统 UI(sysui);M43 链 meow_time32(o32 time32 取时/睡眠,修 time64 ABI;监督重启退避恢复真实毫秒)
|
||
patch_v2/meowpkg/nyai|/usr/bin/nyai|ef7940ecf5ece993d718ac1d9019cc82|nyai M35 r1(cf5703b 重编:包身份以已签名 app.json 清单为准 + 暂存迁 SD 并必清理 + 修 exFAT 大小写绕过/fmt_utc 1/2 月/成员名/炸弹纵深;M39 同 commit 把钉值补上——此前仓库内 nyai 已是 ef7940ec 而清单仍钉 M2.97 的 a7d24553,从 main 打包固件会在此行 exit 1);继承 M2.97(M2.89 导出 exec 相对化 + 271 app.json depends 安装提示 agent-240/271)
|
||
patch_v2/meow_svc_power/meow_svc_power|/usr/bin/meow_svc_power|39ae3aa255695a97f4281124c0621b52|电源专项服务(充电态权威源 mp2731-charger/status,修 battery/status 撒谎恒 Discharging)
|
||
patch_v2/meow_verify/meow_verify|/usr/bin/meow_verify|6c2e8ed24aebe5caf41e7aed391312d5|II期验签 2B(多公钥+v2签名块 agent-221)
|
||
patch_v2/meow_crash/meow_crash|/usr/bin/meow_crash|ce8aa8bede960844b4d50dfa9171a13b|系统级崩溃捕获 (agent-187) + log升级: 清理前缀扩 perf_/hang_ 承接1GB纪律 (337);M43 链 meow_time32(o32 time32 取时/睡眠,修 time64 ABI)
|
||
patch_v2/meow_svc_perf/meow_svc_perf|/usr/bin/meow_svc_perf|44e2ff6f5666ef6509e63ab3e606bb33|性能专项服务 M2.75 + log升级(337:卡死快照+perf基线) + OOM治理C(348:Cached/Dirty监控降载, /tmp/meow_cachegov_c.state单点);M43 链 meow_time32(o32 time32 取时/睡眠,修 time64 ABI)
|
||
patch_v2/meow_audiod/meow_audiod|/usr/bin/meow_audiod|9f58b2197ed91d24951918d41a78cf29|独占音频守护(MIPS32 glibc-2.22 动态链接:interpreter /lib/ld.so.1,NEEDED libasound.so.2 / libc.so.6 / libpthread.so.0):DAC 与蓝牙 A2DP 输出路由、硬件音量、电平监控
|
||
patch_v2/meow_audiod/meow_audio|/usr/bin/meow_audio|3909c8d226d9da5afba4563056d105a5|audiod 用户侧 CLI(MIPS32 musl 静态):status / tone / route(端口 0、2、3)/ vol 0-100 / output(dac 或 bt)/ monitor 子命令
|
||
patch_v2/meow_powermgr/meow_powermgr|/usr/bin/meow_powermgr|40217b5dc91da5c08d094c403eeb5fb2|功耗管理专项服务期2 M6.1(期1+history/top/events+mp2731 current_now 实测充电功率+WiFi 未关联档/BT rfkill 细化+系数路径 /data/meow/powermgr/;IPC 0xD0-D7);M43 链 meow_time32(o32 time32 取时/睡眠,修 time64 ABI)
|
||
patch_v2/meow_powermgr/meow_powermgr|/usr/bin/meow_power|40217b5dc91da5c08d094c403eeb5fb2|meow_powermgr 的 CLI 形态(同二进制双形态,argv[0]=meow_power 即 CLI:status/estimate/model/history/top/events,policy 期3桩);M43 链 meow_time32
|
||
patch_v2/meow_netmgrd/meow_netmgrd|/usr/bin/meow_netmgrd|e62e7512d8a71a83bbba6d7c0d5e4fee|网络管理守护(MIPS32 musl 静态):WiFi 扫描/连接(含隐藏网)、接口流量观测、DNS/路由/策略、蓝牙控制面(开关/扫描/配对/连接/已配对/A2DP);/usr/bin/meow_net 为同一二进制的 CLI 形态
|
||
patch_v2/meow_netmgrd/meow_netmgrd|/usr/bin/meow_net|e62e7512d8a71a83bbba6d7c0d5e4fee|meow_netmgrd 同一二进制的 CLI 形态(argv[0]=meow_net):status/iface/wifi/bt/rfkill/apps/conns/top/dns/policy 等子命令
|
||
patch_v2/ntpsync/meow_ntpsync|/usr/bin/meow_ntpsync|f3c3abe4a960560f59f4101e6c444722|网络校时 M22(复用固件自带 ntp-4.2.8p14 一次性 -q 校时 + hwclock -w -u 回写 RTC;自带看门狗/总超时/默认路由轮询/进程锁,不自常驻、不阻塞调用方;r1 修:trap 收尸 ntpd 子进程+孤儿收尸、日志不可写不再吞掉 hwclock、锁用 <pid> 子目录自证且只删自己的锁)
|
||
|
||
# ---- 开机 init 脚本(etc/init.d,数字决定启动顺序,按文件名自然序)----
|
||
# M21 开机亮度链(顺序依赖:S11 < S21mount_ubifs < S22):
|
||
# 驱动默认 0(pwm_backlight.ko insmod default_brightness=0 = 灭屏;模块由 S11module_driver_default
|
||
# 加载,排在 S11jpeg_display_shell 之后)→ S11jpeg_display_shell 画 logo 前写 20(暗而可见;
|
||
# 此时 /usr/data 未挂载,读不到 settings.conf,只能写安全低值)→ S21mount_ubifs 挂 /usr/data
|
||
# → S22brightness 按 display.brightness(clamp [brightness_min, max_brightness])写入用户值。
|
||
# S11 是**覆盖基线同名文件**(基线已有,md5 249220f2…);S22 是**新增**文件。
|
||
patch_v2/bootmenu/S11jpeg_display_shell|/etc/init.d/S11jpeg_display_shell|3ad33301fb9f0884102a47e17a1985ed|覆盖基线 S11(基线 md5 249220f2…):背光写入从「画完 logo 后写 60」改为「画 logo 前写 20(只降不升;cur=0/空 照写,仅 1..20 的有效值跳过)」,删掉写死 60;用户亮度交给 S22
|
||
patch_v2/bootmenu/S22brightness|/etc/init.d/S22brightness|1a0aa33d6f806f3f1648168cc1d8b953|新增:S21mount_ubifs 之后按 /usr/data/meow/settings.conf 的 display.brightness 恢复背光(clamp [brightness_min, max_brightness];读不到不改、失败不阻断 init)
|
||
# M22 网络校时:S45 排在 S40network/S43wifi 之后。S40 只 ifup 了 lo,WiFi 租约更晚,
|
||
# 所以 S45 只把校时器丢后台(开机关键路径 +0 秒),由 /usr/bin/meow_ntpsync 自己轮询
|
||
# 默认路由(-t 120)+ 有限重试;WiFi 更晚才连上的情况由 udhcpc 钩子再触发一次。
|
||
patch_v2/ntpsync/S45meow_ntpsync|/etc/init.d/S45meow_ntpsync|115e759274c8100391e3ede05a0578dc|新增:开机校时启动器(后台 setsid 拉起 meow_ntpsync -b -t 120,立即返回;失败/未安装不阻断 init;stop 只按 <锁目录>/<pid> 自证 + cmdline 核对后 kill,避免陈旧 pid 误杀)
|
||
patch_v2/meow_sysui/S70meow_sysui|/etc/init.d/S70meow_sysui|e435affcb56499e5229728c6ae2524b9|sysui 自启 M2.85(launcher.conf enabled=1+迁移)
|
||
patch_v2/meow_svcd/S89meow_svcd|/etc/init.d/S89meow_svcd|a1ef9d658d37bb7ed012cc9326840ac4|svcd 自启 M6.2(+amsd.conf 热更 exec→/usr/bin 迁移)
|
||
patch_v2/meow_amsd/meow_amsd|/usr/bin/meow_amsd|486f489c2a57aa53c6b0c3cb82b345a5|活动管理器 M6.46 编入 M7 杀后台修复(am kill 与后台页按钮同通道:MSG_AMS_KILL 先打后台保活表走 meow_bg_terminate,无前台会话也能杀;cmd_kill/cmd_start 失败原因细分 connect failed/timeout,no reply;响应串保留 launcher offline 供 MeowPanel 503 映射);继承 M6.35(注册表自愈+busy 识别+显示名 UTF-8 整序列 name[49];批① FG/BG 收编:handle_bg/handle_fg+AMS_FG/BG 状态供批③后台管理页);M43 链 meow_time32(o32 time32 取时/睡眠,修 time64 ABI)
|
||
patch_v2/meow_amsd/am|/usr/bin/am|9e323faf1aeb0c6a6fb0425565cf525d|amsd 用户侧CLI(+resolve/picker/rescan)
|
||
patch_v2/bootmenu/S90meow_bootmenu|/etc/init.d/S90meow_bootmenu|e0ace111ce5ee446a1e3c6605ac1e9c9|bootmenu 自启 M2.85(注释同步)
|
||
patch_v2/bootmenu/S92_03_start_music_player|/etc/init.d/S92_03_start_music_player|c17257aa3d93f75da72903b57cbe1034|§4.3 兜底 patch(rcS 正常路径被 S90 阻塞不执行)
|
||
patch_v2/bootmenu/S95shutdown_logo|/etc/init.d/S95shutdown_logo|96db7b844d7c26f44835d4681824f578|rcK 关机时显示 /etc/shutdown_logo.jpeg
|
||
|
||
# ---- udhcpc 钩子(usr/share/udhcpc/default.script.d,default.script 末尾自动执行)----
|
||
# M22:baseline 的 default.script 已有 HOOK_DIR 循环(第 99-103 行),目录原本为空。
|
||
# 钩子只在 bound/renew(拿到租约)时动作——这是设备上唯一可靠的「网络真的就绪」事件;
|
||
# 投递后台后立即 exit 0,绝不阻塞 DHCP 脚本。$ntpsrv(DHCP option 42)有就优先用。
|
||
patch_v2/ntpsync/50meow_ntpsync|/usr/share/udhcpc/default.script.d/50meow_ntpsync|4774c08194a2e0232960927252f252f2|新增:udhcpc 租约钩子(bound/renew 时后台触发校时;deconfig/leasefail/nak 直接返回)
|
||
|
||
# ---- SSH 会话工具 PATH(etc/profile.d)----
|
||
patch_v2/meow_launcherd/meow_card_path.sh|/etc/profile.d/meow_card_path.sh|ac1963c75190611f14a2d46d217e640a|SSH 会话 PATH(M2.12 起):指向 TF 卡 MeowOS/opt/bin
|