救砖
在刷机的时候我们可能会遇到设备“变砖”的情况,理论上讲,如果你只是使用 fastboot 刷入 boot 分区或者安装不合适的模块导致设备无法启动,那么这都可以通过合适的操作恢复手机;本文档旨在提供一些急救方法让你可以在“变砖”中恢复。
刷入 boot 变砖
在 KernelSU 中,刷入 boot 变砖有如下可能:
- 你刷入了错误格式的 boot 镜像。比如你的手机 boot 格式是
gz的,但你刷入了lz4格式的镜像,那么此时手机无法启动。 - 你的手机需要关闭 avb 验证才能正常启动(注意这通常意味着需要清除手机所有数据)。
- 你的 kernel 有某些 bug 或者你的 kernel 不适合你这个手机刷入。
无论哪种情况,你都可以通过刷入原厂 boot恢复;因此,在安装教程最开始,我们已经强烈建议大家,在刷机之前备份自己的原厂 boot!如果你没有备份,那么你可以通过其他跟你相同设备的童鞋或者官方固件包获取原厂 boot。
刷入模块变砖
刷入模块变砖可能是大家遇到更常见的情况,但是这里必须郑重告诉大家:请勿刷入来路不明的模块!!。因为模块其实是有 root 权限的,它完全可能导致你的设备发生不可逆的损坏!
普通模块变砖
如果大家刷入某些开源的或者被证明是安全的模块使得手机无法启动,那么这种情况在 KernelSU 中非常容易恢复,完全无需担心。KernelSU 内置了安全模式来救砖:
音量键救砖
你可以尝试使用安全模式来救砖。进入安全模式之后,所有的模块都会被禁用。
进入安全模式的方法有两种:
- 某些系统自带的安全模式;有些系统是长按音量下,有些系统(比如MIUI)可以在 Recovery 中开启安全模式。进入系统的安全模式后,KernelSU 也会进入安全模式,自动禁用模块。
- KernelSU 内置的安全模式;操作方法:开机第一屏后,连续按音量下键超过三次。注意是按下-松开、按下-松开、按下-松开,不是按着不动。
进入安全模式以后,KernelSU 管理器的模块页面所有模块都被禁用,但你可以执行“卸载”操作,卸载可能会有问题的模块。
内置的安全模式是在内核里面实现的,因此不会出现按键事件被拦截导致捕获不到的情况。不过对于非 GKI 内核,可能需要手动集成代码,可以参考官网教程。
WARNING
KernelSU 在内核模块初始化时注册音量键监听(LKM模式下在内核执行init进程的时候加载),到on_post_fs_data 阶段时(开机动画前)时注销。你需要把握好时机并在开机第一屏后快速按下音量下键三次。如果设备启动速度快或操作不及时,可能无法触发安全模式。
如果模块在 initrc 中编写了不合理的代码导致设备无法启动,即使在安全模式下这些代码仍然会执行。
手动救砖
当安全模式无法解决问题时,可以尝试手动救砖。根据设备状态选择以下方法。
方法一:通过 ADB 使用 ksud 管理模块
如果设备能通过 ADB 获取 root shell,可以直接使用 ksud 命令行来禁用或卸载问题模块:
TIP
挂载 metadata 和 data 分区后,你可以在 Recovery 模式下运行 /data/adb/ksud 命令来管理模块。
由于 GKI 设备共用 init,因此 Recovery 模式下仍会加载 KernelSU 内核模块,你应该可以正常使用 ksud 的大部分功能(如设置 feature)。
adb shell
su
ksud module list # 列出所有模块
ksud module disable <id> # 禁用问题模块
ksud module uninstall <id> # 或直接卸载
reboot方法二:通过 Recovery 手动清理
如果无法进入系统(连 ADB 都无法连接),需要设备有第三方 Recovery(如 TWRP)。
KernelSU 的模块加载依赖内核侧的 init.rc 注入文件和用户态的 ksud 进程。删除这些文件后重新启动,KernelSU 将不会加载任何模块。
操作步骤:
- 进入 Recovery(如 TWRP)。
- 挂载 data 分区:(你可能需要先解密 data 分区。具体操作取决于设备和解密方式。)
mount /data - 删除 ksud,阻止模块加载:
rm -f /data/adb/ksud - (可选)挂载 metadata 分区并删除模块生成的 init.rc 注入文件:
mount /metadata rm -f /metadata/ksu/modules.rc rm -f /metadata/watchdog/ksu/modules.rc - 重启设备:
reboot
重启后 KernelSU 将跳过所有模块的加载。进入系统后,即可重新打开 KernelSU 管理器处理模块的问题。
格机或其他病毒模块变砖
如果以上方法无法拯救你的设备,那么很有可能你装的模块有恶意操作或者通过其他方式损坏了你的设备,这种情况下,只有两个建议:
- 清除数据后刷入完整刷入官方系统。
- 咨询售后服务。