MeowOS for HiBy R3 Pro II — 公共发布版本(历史已重置)

• 全新单提交:清除含敏感信息的旧历史(sudo 口令、内网 IP、SSH 密钥路径、热点 SSID、设备 MAC)
• 本地开发文档/测试记录/构建脚本全部移入 gitignored 的 devdocs/ 与 scripts/build/(不入库)
• 保留:MeowOS 源码(launcher/watchdog/bootmenu/meow_svcd/SDK)、项目规范文档、mips-repo
增补组件:SDK 统一日志+通知 API、meow_svcd 服务管理器、mips-repo 软件仓库
This commit is contained in:
MeowOS Dev committed 2026-08-30 01:12:34 +08:00
commit 245bee2946
136 files changed
+32730

No files matched your search

+76
View File
@@ -0,0 +1,76 @@
# mdnsd — Apple mDNSResponder 的 POSIX 精简变体 SAResponder(mipsel-linux-muslsf 静态)
> 本目录现以 **SAResponder(mDNSResponderPosix,无 UDS/IPC 的精简响应器)** 为部署目标。
> 其目标名对应上游 `mDNSPosix/Makefile` 的 `SAResponder`,产物 `build/prod/mDNSResponderPosix`。
> 完整 mdnsd 守护进程(上一轮产物)保留为 `bin/mdnsd.bin`(见下"与 mdnsd 对比")。
## 来源
- 项目 : apple-oss-distributions/mDNSResponder
- 版本 : mDNSResponder-2881.0.25
- commit : d4658af3f5f291311c6aee4210aa6d39bda82bbe
- 许可 : Apache-2.0
- 获取 : https://codeload.github.com/apple-oss-distributions/mDNSResponder/tar.gz/<SHA>
- 源码 : mDNSPosix/(Responder.c,独立响应器 main;非 PosixDaemon.c),tls=no(关闭 mbedtls)
## ARCH / 运行库
- ARCH : mipsel(MIPS32r2 little-endian)
- 编译目标 : mipsel-linux-musleabi(soft-float,对应 MeowOS 的 muslsf)
- 运行库 : musl,静态链接(-static),无 glibc 依赖
## file 结果(部署版 = bin/mdnsd)
ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), statically linked, stripped
- readelf 复核:无 `.debug_*` / `.symtab` / `.strtab`(真正 strip;仅剩 MIPS 必有的 .mdebug.abi32 / .pdr ABI 元数据段)。
## 体积(关键)
- 未 strip(含 -g 调试信息,make 标准链接 `LINKOPTS=""`) : 3,197,588 字节 ≈ 3122.6 KB ≈ 3.05 MB
(file 判:`with debug_info, not stripped`;md5 33f8fcef0a4df5e907f75b6913d2fe23)
- **strip 后部署版(正式部署体积,`LINKOPTS=-s`)** : **906,864 字节 ≈ 885.6 KB ≈ 0.865 MB ← 以此为准**
- md5 (strip 后) : **3361b1a062d39372a30eff0a5a1f1725**
## 构建命令摘要
见同目录 build.sh。要点(目标由上一轮的 `Daemon` 改为 `SAResponder`):
make os=linux tls=no \
CC="$HOME/Project/R3ProII/.tools/zig-mipsel-cc" \
CFLAGS="-Os -static -Wno-date-time" \
LD="$HOME/Project/R3ProII/.tools/zig-mipsel-cc" \
LINKOPTS="-s" STRIP=true SAResponder
- 目标 `SAResponder`:构造对象 = SPECIALOBJ(13 个) + mDNS.c.o + Responder.c.o,**不含** UDS/IPC 相关对象
(去掉了 PosixDaemon.c.o、uds_daemon.c.o、dnssd_ipc.c.o、ClientRequests.c.o;以 Responder.c.o 作 main)。
- os=linux : 平台分支
- tls=no : 关 mbedtls(嵌入式不需要)
- CFLAGS -Os -static: 体积优化 + 静态链接
- -Wno-date-time : 关掉 zig/clang 默认的 -Werror -Wdate-time(源码用了 __DATE__/__TIME__)
- LINKOPTS=-s : 链接时直接 strip,产出部署版。
注意 `mDNSResponderPosix` 的链接规则里**没有** `$(STRIP) $@` 这一行,唯一 strip 来源就是这个 `-s`(勿依赖 STRIP=true)。
- 一次跑通,仅 Responder.c 报告 6 条无害 warning(unused parameter / set-but-not-used,非错误)。
## 功能差异(关键,勿当 mdnsd 的等价替代)
- SAResponder 是**单服务注册型**独立响应器:必须用 `-n <服务名>` 或 `-f <服务文件>` 指定要发布/回应的服务,
默认服务类型 `_afpovertcp._tcp.`、端口 548。它注册**一个**服务并回应针对该服务的 .local 查询。
- mdnsd(bin/mdnsd.bin)是**通用宿主响应器**:读网络接口、监听组播 224.0.0.251:5353,回应宿主下任意 .local 查询。
- 用途选择:若只需"板载发布单服务"→ 用 SAResponder;若需"通用 .local 解析"→ 用 mdnsd(bin/mdnsd.bin)。
## 与 mdnsd 对比(994 KB → 885.6 KB)
| 变体 | strip 后 | 未 strip | file |
|---|---|---|---|
| SAResponder(bin/mdnsd) | **906,864 B = 885.6 KB**(md5 3361b1a0…) | 3,197,588 B = 3122.6 KB | stripped, static |
| 完整 mdnsd(bin/mdnsd.bin) | 1,018,144 B = 994 KB(md5 fcb0a8ae…) | 3,549,496 B = 3466 KB | stripped, static |
- 差值仅 **~109 KB(约 11%)**。去掉 UDS/IPC 并未显著变小,因为体积大头在 mDNS 核心
(mDNS.c、DNSCommon.c、uDNS.c、dso 系),而非 IPC 层。
## 部署建议(结论:TF,不进固件)
- **885.6 KB 远超 <200KB 阈值 → 放 TF 卡 `MeowOpt/mdnsd/mdnsd`**(若只需单服务),由 MeowOS 启动时从卡加载(拔卡降级不崩)。
- 若需通用 .local 回应,部署 `mdnsd.bin`(原完整守护进程,同样放 TF)。
- 启动/参数(SAResponder):`mdnsd -b -n <name> -t _xxxx._tcp. -p <port>`;`-b` 后台,`-P` pidfile,
`-v 0..2` 调试,`-r` 同时绑 53,`-f <file>` 读服务清单。
- 权限:需 root(或 setcap cap_net_bind_service,cap_net_raw)以绑定 5353/53 并加组播。
- 验证:`qemu-mipsel bin/mdnsd -h` → 打印 Usage 后以 exit 1 退出(预期用法退出,程序可运行)。
## bin/ 内容
- `bin/mdnsd` = SAResponder(mDNSResponderPosix)strip 后部署版(906,864 B)
- `bin/mdnsd.bin` = 完整 mdnsd 守护进程 strip 后(1,018,144 B),对照保留
## 备选(评估)
- 若 885 KB 仍偏重:改用 OpenWrt linkd / libmdns 或自研极简响应器(仅响应 .local 查询)。
理由:纯 mDNS 查询响应是轻需求,完整 Bonjour 栈(DNSCommon/uDNS/dso/GenLinkedList 等核心)即占 ~880KB,
在无动态链接的静态 musl 下已很难再压到 <200KB。