Files
MeowOS-For-R3P2/patch_v2/meow_sysui/S70meow_sysui
T
MeowOS c0f7a95719 feat(font+sys): 字库内存纪律(agent-215)+sysui接管launcher监管(agent-216)
215: meow_font.c 流式分块解码(gbk峰值40→23.5MB, 逐字节校验一致) + 多字体槽5→4+16MB驻留预算; 量化: gbk稳态驻留17.3MB vs common 4.2MB(OOM主因); meow_font.a→67113c03 meow_ui.a→223d5401
216: bootmenu让位(sysui在则start launcher让位, 不在则exec兜底) + S70预置launcher.conf enabled=1(+旧设备升级迁移); launcher崩溃可自动拉起; bootmenu 4441822d / S70 e435affc / S90 e0ace111
216注: S70早启动与选单共存为真机重点观察项
2026-08-31 13:28:07 +08:00

107 lines
4.7 KiB
Bash
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.
#!/bin/sh
#
# S70meow_sysui - MeowOS 系统进程总监(Supervisor Tree 顶层)
#
# 位置:**最早**(早于 S84ssh / S89meow_svcd / S90meow_bootmenu)。
# * 定案启动链:meow_sysui 先起(S70)→ meow_svcd(由 sysui 拉起)→ 各项服务子进程。
# * S90meow_bootmenu `exec /usr/bin/meow_bootmenu --fork`:HibyOS 模式 fork 播放器并转监督者,
# 阻塞 rcS;MeowOS 模式在 sysui 托管下让位退出(rcS 推进,S92 见 mode=meow 跳过播放器)。
# 故 sysui 必须排在 S90 之前(S70 满足)——launcher 已在 S70 由 sysui 拉起。
#
# 职责:监管系统进程(launcher / meow_svcd / meow_mdns / …),一个崩只拉起它、绝不级联。
# 本脚本只做三件事:
# 1) 预置板载监管配置 /usr/data/meow/sysui.d/*.conf(首启建;除 launcher.conf 迁移升级外已存在不覆盖);
# 2) 拉起 meow_sysui(默认后台 daemon);
# 3) stop 时优雅停 sysui(其会 SIGTERM 被监管的 svcd 并收尸)。
#
# 红线:不 killall、不碰播放器信号、不刷机、不碰 recovery_all。sysui 自身最小依赖,
# 失败兜底(某被监管进程起不来 → 仅记日志 + 有限次重试,不阻塞其它/不拖垮自身)。
#
case "$1" in
start)
echo -n "Starting meow_sysui (S70): "
# 1) 预置板载监管配置(Data 区可写才建;已存在不覆盖)
if [ -d /usr/data/meow ] && [ -w /usr/data/meow ]; then
mkdir -p /usr/data/meow/sysui.d
if [ -f /usr/data/meow/sysui.d/svcd.conf ]; then
echo -n "svcd.conf exists "
else
cat > /usr/data/meow/sysui.d/svcd.conf <<'EOF'
# meow_sysui 监管条目:meow_svcd(服务管理器)。系统进程总监 → svcd 被监管 → 服务为 svcd 子进程。
# 语义同 services.d:key=value,'#'/';' 注释,未知键忽略。无 trigger——enabled=1 即常驻监护。
exec=/usr/bin/meow_svcd
args=-f
enabled=1
restart=always
backoff_ms=3000
max_restart=5
EOF
chmod 644 /usr/data/meow/sysui.d/svcd.conf
echo -n "provisioned svcd.conf "
fi
# launcher 监管(M2.83 迁移):已交 sysui 托管——bootmenu 在 MeowOS 模式让位(sysui 在则
# 不再 exec launcher,lifecycle 归 sysui:崩→sysui 按 restart=always 重启;bootmenu 仅在
# sysui 不在时兜底 exec)。故此处 enabled=1。检测到旧版(enabled=0,bootmenu 时代)→ 升级。
# mdns 是 svcd 的服务子进程,由 svcd 负责,本阶段不直接监管(或作兜底条目,默认关)。
LAUNCHER_UPGRADE=''
if [ -f /usr/data/meow/sysui.d/launcher.conf ]; then
if grep -qE '^[[:space:]]*enabled[[:space:]]*=[[:space:]]*0([[:space:]]|#|$)' /usr/data/meow/sysui.d/launcher.conf; then
LAUNCHER_UPGRADE=1
else
echo -n "launcher.conf exists "
fi
fi
if [ -n "$LAUNCHER_UPGRADE" ] || [ ! -f /usr/data/meow/sysui.d/launcher.conf ]; then
cat > /usr/data/meow/sysui.d/launcher.conf <<'EOF'
# meow_sysui 监管条目:launcher(系统 UI 渲染宿主)。系统进程总监 → launcher 被监管。
# 语义同 services.d:key=value,'#'/';' 注释,未知键忽略。无 trigger——enabled=1 即常驻监护。
# M2.83 launcher 监管迁移:bootmenu 在 MeowOS 模式让位(sysui 在则不 exec launcher),
# launcher 生命周期归 sysui:崩→sysui 按 restart=always 重启;bootmenu 仅在 sysui 不在时兜底。
exec=/usr/bin/meow_launcherd
args=
enabled=1
restart=always
backoff_ms=3000
max_restart=5
EOF
chmod 644 /usr/data/meow/sysui.d/launcher.conf
if [ -n "$LAUNCHER_UPGRADE" ]; then
echo -n "upgraded launcher.conf (enabled 0->1) "
else
echo -n "provisioned launcher.conf "
fi
fi
else
echo -n "skip provision (/usr/data/meow not writable) "
fi
# 2) 拉起 meow_sysui(默认后台 daemon;S89meow_svcd 会因 sysui 在而把 svcd 拉起权交还 sysui)
rm -f /tmp/meow_sysui.stop
if [ -x /usr/bin/meow_sysui ]; then
if [ -f /tmp/meow_sysui.pid ] && kill -0 "$(cat /tmp/meow_sysui.pid 2>/dev/null)" 2>/dev/null; then
echo "already running"
else
/usr/bin/meow_sysui
echo "started"
fi
else
echo "MISSING /usr/bin/meow_sysui"
fi
;;
stop)
echo -n "Stopping meow_sysui: "
touch /tmp/meow_sysui.stop
for p in $(ps | grep "[m]eow_sysui" | awk '{print $1}'); do kill "$p" 2>/dev/null; done
echo "OK"
;;
restart|reload)
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0