website/docs/zh_TW/guide/rescue-from-bootloop.md
在寫入裝置時,我們很可能會遇到裝置「變磚」的狀況,從理論上講,如果您只是使用 Fastboot 寫入 Boot 分區或者安裝不合適的模組導致裝置無法開機,那麼這都可以透過合適的作業還原您的手機;這個文件提供一些緊急方法可以讓您在「變磚」中還原。
在 KernelSU 中,寫入 boot 時變磚有下列原因:
gz,但您寫入 lz4 格式的映像,那麼此時手機將無法開機。無論哪種狀況,您都可以透過寫入原廠 Boot 還原;因此,在安裝教學最開始,我們已經強烈建議大家,在寫入之前備份自己的原廠 Boot!如果您沒有備份,那麼您可以透過其他與您相同裝置的使用者或官方韌體擷取 Boot。
安裝模組變磚可能是大家遇到的更常見的狀況,但是這裡要嚴正警示大家:不要安裝未知來源的模組!!。因為模組擁有 Root 權限,它能完全對您的裝置造成無法復原的損壞!
如果大家安裝了某些開放原始碼的或者被證明是安全的模組使手機無法開機,那麼這種狀況在 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 將不會載入任何模組。
操作步驟:
mount /data
rm -f /data/adb/ksud
mount /metadata
rm -f /metadata/ksu/modules.rc
rm -f /metadata/watchdog/ksu/modules.rc
reboot
重新啟動後 KernelSU 將跳過所有模組的載入。進入系統後,即可重新打開 KernelSU 管理員處理模組的問題。
如果以上方法無法搶救您的裝置,那麼很可能您安裝的模組存在惡意作業或透過其他方式損壞了您的裝置,在這種狀況下,只有兩個建議: