話說好久沒製作 TWRP 了,這次 ZenFone 6 (ZS630KL) 在使用 TWRP 方面有 *很多* 需要注意的地方,以下是開發的一些筆記:
- 由於使用的是 a/b 分區,所以不會有 recovery 只會有 boot,所以如果要 root 還是比較建議使用 Magisk Manager 修補 boot.img 的方式進行,TWRP 只有扮演資料備份或者救援的角色。
- ramdisk 的使用量相較於其他機型來講多了不少,不確定是否與 f2fs 有關,也間接讓 TWRP 產生的 ramdisk 變更大,因此一開始在編譯的時候造成手機無法載入 ramdisk 而無法開機的狀況。嘗試過幾種方法:
a. 使用自定義核心,後來才發現其實是 ramdisk 太大而非核心佔用太多空間。
b. TWRP 內建 /data 解密程式,使用 lzma 壓縮 ramdisk (參數 -8)
c. TWRP 不內建 /data 解密程式,啟動時動態掛載系統啟動解密程序,同樣也使用 lzma 壓縮 ramdisk
d. 同上,但在啟動時先複製解密相關程序到 ramdisk 後再啟動。
目前是使用最後一個方案,lzma 可以讓 ramdisk 更小這就不多做解釋,新版核心都支援這功能。動態複製解密程式的原因在於如果 system / vendor 分區掛載起來,之後要修改的話比較不方便,而且解密程式需要一直在記憶體中執行,所以無法卸載分區。
- ZF6 開始使用 FBE (file base encryption) 而非 FDE (full disk encryption),所以如果沒有成功解密 /data 也是可以掛載,但會看到一堆亂碼檔案。
- 解密一樣也要配合 security patch level 的日期,所以要 刷入對應手機系統版本的 TWRP 才能夠正常解密。
使用前提:
使用方法:
- 手機開到 bootloader (開機按著電源與音量大)
- 刷入 twrp.img: fastboot flash boot twrp.img (目前沒有 fastboot boot 選項)
- 開機進入 twrp:fastboot oem reboot-recovery
目前我編譯的 twrp 可以與 magisk 共存,所以如果你有需要的話可以直接 sideload magisk.zip,但如果重開機之後無法進入系統,而是直接進入 bootloader,或者三不五時就重開機,有可能是因為 ramdisk 太大,請刷入用 Magisk Manager 修補過後的 boot.img 即可。(通常會這樣是因為 Magisk 也會長大也會佔用 ramdisk 空間)
此外如果你有修改 /system 與 /vendor 的需求,請關閉 avb,下載前面資料夾對應版本的 vbmeta.img 之後,使用 fastboot 刷入:fastboot --disable-verification flash vbmeta vbmeta.img 下次更新系統後記得再刷一次。
最後如果你使用我的 twrp 開機進入 system,可以透過 adb root 之後 adb shell 直接取得 root 權限,不管你有沒有刷 magisk。
Happy Hacking !