Files
MeowOS-For-R3P2/scripts/build/fw_content.conf
T
AskaEth 0d1b2d4c19 fix(fw): M51 r2 — 重编脚本开箱可用、自证门禁不再假绿、归因与 desc 纠正
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`,
    而钉值 commit 884d4c4 的源码已是 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 去掉「以太网连接」的夸大说法。
2026-11-11 21:02:09 +08:00

78 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================================================
# 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