Files
MeowOS-For-R3P2/mips-repo/README.md
T

3.2 KiB
Raw Blame History

mips-repo — MeowOS 板载 mipsel 软件仓库(宿主侧)

目标设备:R3 Pro II / MeowOS 固件(mipsel-linux-muslsf,静态,无 glibc 依赖)。 用途:存放针对该设备的交叉编译二进制与构建信息,便于复用到后续固件 / TF 卡 (MeowOpt 目录;MeowLib 未定义/未用——MeowOpt 与 MeowOS/opt 命名需归一:代码用 MeowOS/opt,文档 MeowOpt 指卡上外部工具目录。[源:审计 2026-08-30])。

仓库结构(每工具一个目录)

mips-repo/
  README.md                # 本文件
  <tool>/
    build.sh               # 交叉编译脚本(可重复执行)
    manifest.md            # 元信息:来源/版本/arch/校验/产物路径/安装目标
    bin/<tool>             # 交叉编译产物(静态 mipsel,如存在)

当前已入库工具

  • mdnsd/:Apple mDNSResponder-2881.0.25 交叉编译产物(mipsel-linux-muslsf 静态)。两种变体同在 bin/:
    • bin/mdnsd = SAResponder(mDNSResponderPosix,单服务注册型,-n/-f 只发布/回指定服务)strip 后 885.6 KB;
    • bin/mdnsd.bin = 完整 mdnsd 守护进程(通用宿主响应器,回任意 .local 查询)strip 后 994 KB。 ⚠️ 实测(内核无 IPv6)两者均失败:socket AF_INET6: Address family not supported by protocol;且即便 make HAVE_IPV6=0 编译通过、daemon 能跑,也不发布主机名 A 记录(IPC 服务型守护进程,等客户端注册)。故 mDNS 方案A 判为不达标,由 meow_mdns/ 替代(见下)。
  • meow_mdns/:自研极简 IPv4-only mDNS 应答器(~77.6 KB,mipsel-linux-muslsf 静态)。join 224.0.0.251:5353,应答 <host>.local A + _ssh._tcp.local PTR/SRV/TXT;零 IPv6 依赖。部署到 TF MeowOS/opt/mdnsd/mdnsd(95 KB < 阈值,可考虑进固件)。详见 meow_mdns/manifest.md。⚠️ 手机热点丢弃客户端间组播→ 设备能应答、主机收不到(avahi 只认组播应答),avahi-resolve *.local 仍超时(网络层热点隔离,非应答器缺陷),需主机 DNS 兜底。

目标架构与工具链

  • 架构:mipsel(MIPS32r2, little-endian)
  • 运行库:musl(静态链接,避免 libc 版本/动态加载差异)
  • 交叉编译器:~/.tools/zig-mipsel-cc(zig 目标 mips-linux-musl)
  • 目标静态库 sysroot:~/.tools/mipsel-linux-muslsf-cross/mipsel-linux-muslsf

新增一个工具的流程

  1. mkdir -p <tool>/bin,写 <tool>/build.sh(用 zig-mipsel-cc,-Os -static)。
  2. 跑 build.sh,产出放 <tool>/bin/<tool>。
  3. 写 <tool>/manifest.md:来源(如 Apple-OSS/mDNSResponder 版本)、ARCH、file 输出摘要、ls -l 大小、构建命令、安装路径(固件 or TF MeowOpt)。

部署到哪里

  • 体积小(约 <200KB)→ 可直接打进固件(/usr/bin 或由 supervisor 启动)。
  • 体积大 → 放 TF 卡 MeowOpt/<tool>/,由 MeowOS 启动时从卡加载(拔卡降级不崩)。
  • 按需取用:从 MeowOpt/<tool>/ 按需部署,不一定要全部入库;若某工具体积仍偏重(如 mdnsd 的 885~994KB),可评估更小方案(OpenWrt linkd / libmdns,或自研极简响应器——仅回 A 记录 + _ssh 服务)以塞进固件 <200KB。