android mgisk 安装
android magiskMagisk 是一套用于定制开源 Android 系统的软件。最基础的用法为替代 SuperSu 进行 root 和授权管理。
此外,由于 magisk patch 了 boot 镜像,拥有几乎完全定制 android 系统的能力,magisk 有许多社区插件,可以实现许多强大的功能。
这些模块可以在 XDA-msgisk 中寻找。
本文以 oneplus 8T 刷 pixelexperience ROM 并安装 Magisk 为例。
准备
设备:oneplus 8T(kebab),已经解锁 bootloader。如果未解锁 bootloader,请先自行解锁。
PC:
- 下载 PixelExperience ROM(卡刷包),PixelExperience_Plus_kebab-12.1-20220410-0820-OFFICIAL.zip.
- 安装 payload 提取工具:payload-dumper-go 或者 payload_dumper
- 新版本 adb 和 fastboot 命令。没有可以通过安装 SDK Platform Tools 来提供。
macos 上可以使用
brew install --cask android-platform-tools
安装。 - 数据线,用于连接手机和 PC。
安装刷机包(可选)
如果系统无需更新,可以跳过此步骤。
重启手机,按住 vol+ 键,进入 recovery 模式。选择 sideload 模式。
$ ls
PixelExperience_Plus_kebab-12.1-20220410-0820-OFFICIAL.zip
$ adb sideload PixelExperience_Plus_kebab-12.1-20220410-0820-OFFICIAL.zip
如果 recovery 支持直接安装刷机包,则可以提前将刷机包下载至手机上,并选择直接安装。
完成后重启手机进入系统。
安装 Magisk App
下载 Msgisk 并安装。
根据Magisk/Installation,还需要:
- 判断设备是否具有 ramdisk,从 magisk app 中判断。
- 如果您的设备具有引导 ramdisk,请获取
boot.img
,否则获取recovery.img
. - 判断设备是否有单独的 vbmeta 分区。
- 如果您的官方固件包包含
vbmeta.img
,那么是您的设备有一个单独的 vbmeta 分区 - 您还可以通过将设备连接到 PC 并运行以下命令进行检查:
adb shell ls -l /dev/block/by-name
,如果您找到vbmeta
、vbmeta_a
或vbmeta_b
,那么是的,您的设备有一个单独的 vbmeta 分区 - 否则,您的设备没有单独的 vbmeta 分区。
- 如果您的官方固件包包含
根据上述准备:
- 是否有 ramdisk
- 一个用于 patch 的 img(boot.img 或者 recovery.img)。这可以从官方刷机包中的
payload.bin
中提取出来。 - 是否有 vbmeta 分区
提取 boot.img
有 ramdisk 的设备需要提取 boot.img 可以用两种方式:
- 从官方刷机包中的
payload.bin
中提取 - 从设备上的 boot 分区提取
从 boot 分区提取:
dd if=/dev/block/bootdevice/by-name/boot of=boot.img
从刷机包提取:
从刷机包中提取 boot.img 或 recovery.img,需要使用到 payload dump 工具
$ ls
PixelExperience_Plus_kebab-12.1-20220410-0820-OFFICIAL.zip
#解压 zip 包
$ unzip -d PixelExperience_Plus PixelExperience_Plus_kebab-12.1-20220410-0820-OFFICIAL.zip
Archive: PixelExperience_Plus_kebab-12.1-20220410-0820-OFFICIAL.zip
signed by SignApk
extracting: PixelExperience_Plus/META-INF/com/android/metadata
extracting: PixelExperience_Plus/META-INF/com/android/metadata.pb
extracting: PixelExperience_Plus/apex_info.pb
extracting: PixelExperience_Plus/care_map.pb
extracting: PixelExperience_Plus/payload.bin
extracting: PixelExperience_Plus/payload_properties.txt
inflating: PixelExperience_Plus/META-INF/com/android/otacert
$ ls
PixelExperience_Plus
PixelExperience_Plus_kebab-12.1-20220410-0820-OFFICIAL.zip
# 下载 payload-dumper-go
$ wget https://github.com/ssut/payload-dumper-go/releases/download/1.2.0/payload-dumper-go_1.2.0_darwin_arm64.tar.gz
$ tar -zxvf payload-dumper-go_1.2.0_darwin_arm64.tar.gz
x LICENSE
x README.md
x payload-dumper-go
# 解压 boot.img
$ ./payload-dumper-go -p boot -o boot PixelExperience_Plus/payload.bin
payload.bin: PixelExperience_Plus/payload.bin
Payload Version: 2
Payload Manifest Length: 123625
Payload Manifest Signature Length: 267
Found partitions:
boot (101 MB), dtbo (25 MB), odm (1.4 MB), product (1.8 GB), recovery (101 MB), system (991 MB), system_ext (464 MB), vbmeta (4.1 kB), vbmeta_system (4.1 kB), vendor (1.1 GB)
Number of workers: 4
boot (101 MB) [==========================================================================================================] 100 %
$ ls boot
boot.img
修补 boot.img
修补 boot.img 需要使用到 magisk app 进行
# 通过 adb 发送至 android 设备
$ adb push boot/boot.img /sdcard/Download/boot.img
boot/boot.img: 1 file pushed, 0 skipped. 133.1 MB/s (100663296 bytes in 0.721s)
# 打开 magisk app 选择 “选择并修补一个文件” 选择 Download/boot.img, 选择后 “开始” 修补。
# 修补完成后会在日志中显示修补后的文件名,一般位于 /sdcard/Download/magisk_patchd-[random string].img
# 下载修补后的 boot.img
$ adb pull /sdcard/Download/magisk_patched-24300_f0pFX.img .
/sdcard/Download/magisk_patched-24300_f0pFX.img: 1 file pulled, 0 skipped. 35.2 MB/s (100663296 bytes in 2.726s)
# 使用 fastboot 刷新 boot 分区
$ fastboot flash boot magisk_patched-24300_f0pFX.img
# 禁用vbmeta验证(可选)
$ fastboot flash vbmeta --disable-verity --disable-verification vbmeta.img
重启设备,All Done.