M2.54: 字体归MeowOS/fonts+SDK跟随+多字体+全屏?(等)+boot板载+状态栏28+亮度/音量修复+mDNS固化(meow_svcd双源+meow_mdns)+hostname=meowos+文档

This commit is contained in:
MeowOS Dev committed 2026-08-30 09:25:16 +08:00
1 parent 064635b3c4
commit 9b8a1e5c8b
13 files changed
+807 -35

No files matched your search

+84
View File
@@ -0,0 +1,84 @@
#!/bin/sh
#
# S89meow_svcd - MeowOS 服务管理器开机自启 + 主机名应用 + 板载服务预置
#
# 位置:S84ssh 之后、S90meow_bootmenu 之前(S80 < S84 < S89 < S90)。
# * rcS 顺序执行 /etc/init.d/S??*,而 S90meow_bootmenu 里 `exec /usr/bin/meow_bootmenu
# --fork` 会阻塞 rcS(选单后 exec meow_launcherd 或 fork 播放器监督),故任何 S90
# 之后的 init.d(如 S91/S92)**都不会执行**——svcd 必须排在 S90 之前。
# * 本脚本只装「稳定框架/KB级设置」:meow_svcd(固件 /usr/bin/)+ 板载服务配置
# (/usr/data/meow/services.d/,Data 区,首启预置 mdnsd.conf)+ 应用主机名。
#
# 红线:不 killall、不碰播放器信号、不刷机。svcd 以 -f 前台被本脚本重挂循环拉起
#(失败降级不死——若 svcd 死,其所托管服务已是独立子进程、被 init 收养继续运行);
# 服务本身(mdnsd)由 svcd 按 restart=on-fail 托管。
#
case "$1" in
start)
echo -n "Starting meow_svcd (S89): "
# 1) 应用主机名:读板载设置 system.hostname(settings.conf),缺省 meowos。
# 须早于 meow_mdns 启动(mdnsd 默认用 gethostname() 公布 <host>.local)。
host="meowos"
if [ -f /usr/data/meow/settings.conf ]; then
v=$(awk -F= '$1 ~ /^[[:space:]]*system\.hostname[[:space:]]*$/ {gsub(/[[:space:]]/,"",$2); print $2; exit}' /usr/data/meow/settings.conf)
[ -n "$v" ] && host="$v"
fi
# 仅允许 RFC1035 首标签字符(A-Za-z0-9 和 '-'/'.'/'_'),否则回退 meowos
case "$host" in
''|*[!A-Za-z0-9_.-]*) host="meowos" ;;
esac
sethostname "$host" 2>/dev/null || hostname "$host" 2>/dev/null
echo -n "host=$host "
# 2) 首启预置板载 mdnsd.conf(Data 区可写才建;已存在不覆盖)
if [ -d /usr/data/meow ] && [ -w /usr/data/meow ]; then
mkdir -p /usr/data/meow/services.d
if [ -f /usr/data/meow/services.d/mdnsd.conf ]; then
echo -n "mdnsd.conf exists "
else
cat > /usr/data/meow/services.d/mdnsd.conf <<'EOF'
exec=/usr/bin/meow_mdns
args=
enabled=1
restart=on-fail
backoff_ms=2000
max_restart=5
trigger=boot
cap=
EOF
chmod 644 /usr/data/meow/services.d/mdnsd.conf
echo -n "provisioned mdnsd.conf "
fi
else
echo -n "skip mdnsd.conf (/usr/data/meow not writable) "
fi
# 3) 拉起 meow_svcd(-f 前台,重挂循环防死;/tmp/meow_svcd.stop 标记防停循环)
rm -f /tmp/meow_svcd.stop
if [ -x /usr/bin/meow_svcd ]; then
if [ -f /tmp/meow_svcd.pid ] && kill -0 "$(cat /tmp/meow_svcd.pid 2>/dev/null)" 2>/dev/null; then
echo "already running"
else
( while [ ! -f /tmp/meow_svcd.stop ]; do /usr/bin/meow_svcd -f; sleep 1; done ) &
echo "started (supervisor pid $!)"
fi
else
echo "MISSING /usr/bin/meow_svcd"
fi
;;
stop)
echo -n "Stopping meow_svcd: "
touch /tmp/meow_svcd.stop
for p in $(ps | grep "[m]eow_svcd" | awk '{print $1}'); do kill "$p" 2>/dev/null; done
echo "OK"
;;
restart|reload)
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0