专为无音量加减键设备设计的全新一代自动救砖 Magisk 模块:传统救砖依赖音量键组合(手动进 REC、Magisk 安全模式),而无音量键设备(部分平板/车机/电视盒子/学习机)一旦变砖就彻底抓瞎。本模块把整套救砖流程做成全自动、零按键:当设备无法正常开机时,先自动冻结致砖嫌疑模块(下次开机 Magisk 不再挂载它们)、解冻被系统后台冻结的应用,再重启进入 Recovery 模式,方便进 REC 清数据、刷机或救砖。支持两种独立的触发条件:
| # | 触发条件 | 默认参数 |
|---|---|---|
| ① | 连续多次开机失败(反复重启于开机动画) | 连续 3 次 |
| ② | 卡在开机动画(第二屏)超时 | 超过 2 分钟 |
任一条件触发后的动作:冻结嫌疑模块 → 解冻 APP 后台限制 → 清零计数 → 重启进 Recovery。
post-fs-data.sh(每次开机的极早期执行,此时系统远未启动完成):把失败计数boot_count+1;若计数 ≥ MAX_FAILS,说明之前几次开机全部失败 → 冻结模块、清零计数,然后reboot recovery。service.sh(开机较后阶段执行):等到sys.boot_completed=1(系统完整启动成功)后把计数清零,并保存本次正常开机的模块清单。
只要有一次成功进入桌面,计数立即归零;只有连续失败达到阈值才会触发。
post-fs-data.sh 会启动一个后台看门狗进程(独立于系统服务,系统服务卡死它也能工作):
- 等待
WATCHDOG_TIMEOUT秒(默认 120,即 2 分钟); - 到时间后检查:
sys.boot_completed仍未置 1 且init.svc.bootanim仍为running/restarting(开机动画还在转)→ 判定"卡第二屏" → 冻结模块、清零计数并reboot recovery; - 若系统已正常启动完成,看门狗自动退出,无任何残留。
为什么还要看 bootanim 状态? 两个好处:
- 避免误判锁屏等密码:FBE 加密机型设了锁屏密码时,系统其实已启动完成,但要输完密码
boot_completed才置 1。此时开机动画早已退出(bootanim=stopped),看门狗会识别为"在等密码"继续观察,不会误触发。 - 识别动画崩溃循环:zygote/system_server 崩溃导致的动画反复重启(
bootanim=restarting)也能被识别,这种故障整机不重启、条件①的计数器覆盖不到。
触发救砖时,先把嫌疑模块冻结(在对应模块目录创建 disable 标志文件,这是 Magisk 的原生禁用机制,下次开机不再挂载该模块),再进 REC。这样即使你不进 REC 操作、直接从 REC 重启回系统,致砖模块也已经被隔离,大概率能正常开机。
精准模式(FREEZE_MODE=auto,默认):
- 每次正常开机成功后,
service.sh把当前处于启用状态的模块名单保存到good_modules.list; - 救砖时逐个对比
/data/adb/modules/下的模块:不在清单里的 = 上次正常开机后新增/新启用的嫌疑模块,只冻结它们; - 识别不出嫌疑人(清单不存在、或没有任何新增模块——比如是系统更新导致的变砖)→ 回退为全量冻结(除自身与白名单外的所有模块)。
全量模式(FREEZE_MODE=all):跳过对比,直接冻结全部模块(除自身与白名单)。
豁免规则(任何模式都生效):
- 本模块自身(
bootloop_guard)永远不被冻结; whitelist.conf白名单内的模块不被冻结;- 已禁用(有
disable标志)或待卸载(有remove标志)的模块自动跳过。
冻结记录:每次救砖冻结的模块名单写入 frozen_modules.log,点 Magisk 里本模块的"操作"按钮可查看哪些还在冻结状态。
解冻方法(救回系统后):删除对应模块目录下的 disable 文件再重启即可,例如:
su
rm /data/adb/modules/<模块id>/disable
reboot系统把"应用后台限制/滥用冻结名单"记录在 /data/system/users/<用户id>/package-restrictions.xml 中。这个文件损坏、或某个关键应用被误冻结时,会导致 system_server 反复崩溃、系统永远进不了桌面——救砖时只冻结 Magisk 模块是解决不了的。
触发救砖时,本模块把各用户的该文件改名备份为 package-restrictions.xml.bak-bootloopguard(不直接删除,可恢复)。系统下次启动时找不到原文件会自动重建,所有被后台冻结的应用随之解冻。
恢复原名单(一般不需要):在 REC 或有 root 的环境里把备份改回原名即可:
mv /data/system/users/0/package-restrictions.xml.bak-bootloopguard \
/data/system/users/0/package-restrictions.xml副作用:重建后各应用的后台限制状态(如省电策略白名单外的限制记录)会回到系统默认,需要系统重新学习,对日常使用无实质影响。
开机 → 计数+1 ──成功进桌面──→ 计数清零 + 保存正常模块清单(service.sh)
│ └─ 看门狗启动 ──2分钟后── 动画还在转 → 冻结模块+解冻APP → 进 REC
│ └─ 已进桌面/在等密码 → 自动退出/继续观察
└─ 失败(重启) → 再+1 → 再失败 → 第3次 → 冻结模块+解冻APP → 进 REC
| 文件 | 作用 |
|---|---|
module.prop |
模块信息 |
post-fs-data.sh |
核心逻辑:失败计数 + 卡动画看门狗 + 模块冻结 + APP 解冻 |
service.sh |
开机成功后清零计数、保存正常模块清单 |
action.sh |
Magisk 管理器"操作"按钮:查看状态/冻结记录并手动清零 |
config.conf |
配置触发阈值、看门狗参数、冻结开关与模式 |
whitelist.conf |
冻结白名单(每行一个模块 id) |
customize.sh |
安装时设置文件权限 |
boot_count / guard.log |
运行时自动生成:当前计数 / 运行日志 |
good_modules.list |
运行时自动生成:上次正常开机的启用模块清单 |
frozen_modules.log |
运行时自动生成:上次救砖冻结的模块名单 |
- 从 Releases 页面下载
bootloop_guard_v2.0.0-NEXT.zip,拷到手机; - 打开 Magisk → 模块 → 从本地安装 → 选择该 zip;
- 安装完成后重启手机即生效。
模块数据保存在
/data/adb/modules/bootloop_guard/。
⚠️ 不要与其他防砖/救砖模块同时安装(如 magisk-brick-guardian、自动神仙救砖等):多个模块各自计数、各自冻结、各自重启,会互相干扰导致行为不可预期。本模块 v1.2.0 已合入 brick-guardian 的核心冻结机制,二选一即可。
用 root 文件管理器(或 adb shell)编辑:
/data/adb/modules/bootloop_guard/config.conf
| 参数 | 默认 | 说明 |
|---|---|---|
MAX_FAILS |
3 |
连续失败多少次后触发救砖 |
WATCHDOG_ENABLE |
true |
卡动画看门狗开关(false 关闭) |
WATCHDOG_TIMEOUT |
120 |
看门狗超时秒数(2 分钟;最低 60) |
FREEZE_MODULES |
true |
触发时是否先冻结模块(false 则只进 REC) |
FREEZE_MODE |
auto |
auto=精准冻结嫌疑模块(识别不出则全量);all=直接全量冻结 |
UNFREEZE_APPS |
true |
触发时是否同时解冻 APP 后台限制(package-restrictions.xml 改名备份) |
冻结白名单(永远不会被冻结的模块):
/data/adb/modules/bootloop_guard/whitelist.conf
每行一个模块 id(即 /data/adb/modules/ 下的目录名),# 开头为注释。若你之前使用 magisk-brick-guardian,可直接把它的 白名单.conf 内容复制过来。
修改后无需重装模块,下次开机自动生效。
不用真把手机搞坏,手动模拟失败计数即可:
# adb shell(需 root)
su
echo 2 > /data/adb/modules/bootloop_guard/boot_count # 阈值3时,写入2
reboot下次开机会在 post-fs-data 阶段把计数变成 3,达到阈值 → 冻结嫌疑模块(日志可查)→ 手机在开机动画出现前自动重启进 Recovery。在 REC 里选"重启系统"即可正常开机(触发前计数已被清零,不会循环进 REC)。
注意:测试时若不想真的冻结其他模块,先把
config.conf里FREEZE_MODULES改为false,测完再改回来;或在whitelist.conf里把重要模块都列上。
su
# 查看上次正常开机保存的模块清单
cat /data/adb/modules/bootloop_guard/good_modules.list
# 手动触发一次"嫌疑人识别"演练(只查看,不冻结):装个新模块后不重启,
# 它不在 good_modules.list 里,下次救砖时就会被精准冻结正常开机后 2 分钟内(看门狗存活期间):
su
ps -A | grep sleep # 能看到看门狗的 sleep 120 进程2 分钟后系统已启动完成,看门狗确认 boot_completed=1 后自动退出。卡屏触发的完整链路只能在真卡死时验证;日志会记录每次触发:
cat /data/adb/modules/bootloop_guard/guard.log- 正常卸载:Magisk App → 模块 → 移除 → 重启。
- 解冻被冻结的模块:删除
/data/adb/modules/<模块id>/disable后重启(或参考frozen_modules.log逐个恢复)。 - 若模块导致问题无法开机(理论上不会,但以防万一):
- 有音量键设备:开机出现开机动画时按住音量减进入 Magisk 安全模式,所有模块将被禁用;重启后到 Magisk 里移除本模块。
- 无音量键设备(本模块的主要使用场景):本模块自身就是救砖通道——连续强制重启 3 次让它自然触发进 REC,在 REC 里删除目录
/data/adb/modules/bootloop_guard;或用adb wait-for-device shell在系统启动早期抢删模块目录。
- 条件①统计的是"开机尝试次数":设备彻底卡死不动时不计数(由条件②兜底);卡死时你每次长按电源强制重启都会计数,连续 3 次后同样触发。
- 连续 3 次手动断电/强制关机(在系统启动完成前)也会触发条件①,属预期行为——此时若触发了全量冻结,救回后参考
frozen_modules.log解冻即可。 - 2 分钟的看门狗比较激进:大版本 OTA / 刷大包后的首次开机要做应用优化,开机动画很容易超过 2 分钟而触发。此时从 REC 重启即可(已优化的应用不会重做,第二次开机通常能在时限内完成);如果嫌麻烦,刷机/OTA 前可把
WATCHDOG_TIMEOUT临时调大到 900~1800,或把WATCHDOG_ENABLE改为false。 - 设备硬死机(内核挂死、画面完全定格)时看门狗进程同样被冻结,无法触发——这种情况只能靠人工强制重启,由条件①计数兜底。
- 触发进 REC 前会先冻结模块、解冻 APP、再清零计数,避免从 REC 重启回系统后立刻又触发造成死循环。
- APP 解冻的影响:
package-restrictions.xml重建后,各应用的后台限制/冻结状态回到系统默认(原文件已备份为.bak-bootloopguard,可手动恢复);这是救砖的必要代价,正常使用无感知。 - 精准冻结依赖 good_modules.list:该清单在每次正常开机成功后更新。新装/新启用的模块第一次重启就失败时会被精准识别;若模块装好但还没成功开过一次机就出了其他问题,它也会被当作嫌疑人——这正是期望行为。
- 需要 Magisk v20.4+;"操作"按钮(action.sh)需要 Magisk v24+,旧版本忽略该文件不影响使用。
- 本 zip 为 Magisk App 直装格式;如需在 Recovery 里线刷,请使用 Magisk 官方模块模板加入
META-INF安装器重新打包。
本项目以 GNU General Public License v3.0(GPL v3)开源,完整协议文本见 LICENSE。
Copyright (C) 2026 昱yu(QQ:3895958954)
- 可自由使用、修改、再分发;衍生作品必须以相同协议(GPL v3)开源并保留版权声明。
- 本程序不提供任何担保(ABSOLUTELY NO WARRANTY),因使用本模块导致的任何后果需自行承担。
- 模块冻结机制(精准识别嫌疑模块 +
disable标志冻结 + 白名单)与 APP 解冻机制(处理package-restrictions.xml)参考自 magisk-brick-guardian(作者 Kirk Lin),已精简适配本模块的触发流程(解冻改为改名备份而非直接删除,可恢复)。
- v2.0.0-NEXT:合入 APP 解冻功能——触发救砖时把
/data/system/users/*/package-restrictions.xml改名备份(.bak-bootloopguard),系统重启自动重建,解除应用后台冻结/限制;新增UNFREEZE_APPS开关(默认开);action.sh 显示解冻开关与备份存在状态。 - v1.2.0:合入模块冻结功能——触发救砖时先冻结嫌疑模块再进 REC;精准模式自动识别"上次正常开机后新增/启用"的模块(识别不出回退全量冻结);新增
whitelist.conf白名单、good_modules.list正常清单、frozen_modules.log冻结记录;action.sh 显示冻结状态。 - v1.1.1:看门狗默认超时从 10 分钟调整为 2 分钟;更新作者信息(昱yu,QQ:3895958954)。
- v1.1.0:新增条件②——卡开机动画(第二屏)超时自动进 REC(可配置开关/时长,智能区分锁屏等密码场景)。
- v1.0.0:首版,条件①——连续 3 次开机失败自动进 REC。