Files
MeowOS-For-R3P2/mips-repo/mdnsd/manifest.md
T
MeowOS Dev 245bee2946 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 软件仓库
2026-08-30 01:12:34 +08:00

77 lines
5.2 KiB
Markdown
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.
# 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。