共计 8795 个字符,预计需要花费 22 分钟才能阅读完成。
刷机与装置Magisk
,工具与流程,雏鹰腾飞,一条龙手把手式文档
Magisk
呈现的背景
抉择 Android
手机的同时,也抉择了一种有限的可能,究竟还是时势造英雄
- 为了冲破
OEM
(Original Equipment Manufacturer
,代工生产)定制利用的机型限度,给Android
插上一双翅膀 - 为了解决
Netflix
,Google Play
等一众利用不能在曾经root
的手机上失常运行 - 为了解决改变过的系统文件的
ROM
(硬盘存储) 不能通过OEM
渠道进行失常的OTA
降级(Over-the-Air Technology
, 在线降级手机零碎)
Magisk
做了什么
通过挂载一个与系统文件相隔离的文件系统来加载自定义内容,为零碎分区关上了一个通往平行世界的入口,所有改变在那个世界(Magisk
分区)里产生,在必要的时候却又能够被认为是(从零碎分区的角度而言)没有产生过
达到的成果
- 不毁坏或更改原有零碎的完整性,零碎处于一个非
root
状态,然而Magisk
外部运行的模块能够获取到root
权限 - 当被挂载的
Magisk
分区被暗藏甚至被勾销挂载时,原有零碎分区的完整性丝毫未损 - 能够运行须要
root
验证的程序 - 能够运行对设施认证状态有要求的利用
- 能够进行须要验证零碎完整性的
OTA
更新 Magisk
能够被看作是一种挂载文件系统,这种文件系统通过奇妙的实现形式避开了对系统文件的间接批改,从稳定性上来看要优于以往任何一种零碎框架
Magisk
我的项目信息
官网我的项目地址
https://github.com/topjohnwu/Magisk
release
包信息
https://github.com/topjohnwu/Magisk/releases
须要在 release
模块下载一个 release apk
包,目前最新的是Magisk-v26.1.apk
,后续如果有更新的就先尝试下载更新的包,下载实现之后把文件名称改一下,后缀改成zip
,改成Magisk.zip
本机测试的时候可能因为机型比拟旧,Magisk
装置实现之后点击 Android
图标无反馈,所以就降版本到 Magisk-v25.2.apk
之后再次装置才胜利
前提常识
手机刷机 root
和unlockBootloader
的比照
root
手机是获得了零碎的最高权限,应用该账号能够读写以及执行零碎的任意文件UnlockBootloader
是解除系统启动加载器Bootloader
的原厂限度,让用户能够进行更多操作 (刷新内核,刷ROM
),bootloader/fastboot 模式
处于设施上电开机到进入零碎前的一个阶段或者模式,实现刷机是在bootloader
阶段之后的recovery
模式
Android 分区与模式
Android
设施有 3 个重要分区:启动加载程序(Boot loader)
、复原(Recovery)
和 手机零碎(Android ROM)
Boot loader
最先加载并决定要加载的下一个分区,此分区通常是Android ROM
Recovery
模式是一个小型Linux
操作系统,用于装置Android ROM
分区更新的模式,在对手机复原出厂设置时也会应用Recovery
模式Fastboot
是一种协定,可用于通过USB
从计算机连贯到设施,并向设施的分区收回更新fastboot
模式是android sdk
附带的工具,能够用来re-flash
设施的分区,能够装置recovery image
进入到不同的模式
每个手机进入到 fastboot
界面和 recovery
的按钮操作是不同的
- 小米手机是按住
电源键
+音量下键
进入到fastboot
界面 - 小米手机在启动的时候,按住
电源键
+音量上键
,当呈现小米logo
界面,松开电源键
,呈现recovery
界面的时候能力松开音量上键
其余手机进入到 fastboot
界面,参考
https://tutorials.how/android/boot-into-fastboot-mode/
其余手机进入到 recovery
界面,参考
https://www.xda-developers.com/how-to-boot-to-recovery/?newsletter_popup=1
试验设施信息
Xiaomi Redmi note 7 Pro
小米 / 一加等手机官网反对unlock Bootloader
,操作起来会比拟不便
最初要做好思维筹备,试验手机上的所有数据即便全副失落也没关系,当手机启动的时候界面弹出 your system has been destroyed
而后只能关机的时候也不要慌乱(这个状况下尽管不能进入到手机零碎,然而还是能够进入到 bootloader
界面,能够进入到 recovery
模式刷机解决)
手机刷机必要步骤
unlock bootloader
- 配置手机的明码解锁(输出字符的)以及图案明码,如果有指纹解锁,也配置一下,如果不配置可能影响到前面手机进入
recovery
模式时候的操作,手机进入到recovery
模式失常的时候是须要输出一下明码的,该明码就是配置的手机解锁明码 - 开启手机
USB
调试模式,手机刷机过程中,重启之后USB
调试模式可能会被敞开,所以每次开机实现之后尽量检查一下该模式
解锁bootloader
关上开发者选项,点击进入设施解锁状态,而后会看到官网的设施解锁操作流程,依照其流程操作
- 个别是插入
SIM
卡之后,绑定实现小米账号 - 从小米的官网获取到解锁工具地址,在
windows
零碎上,下载安装解锁工具,拜访地址http://www.miui.com/unlock/index.html
进行下载,下载之后运行压缩包外面的miflash_unlock.exe
,这时须要再次登录小米账号( 如果显示miflash
有更新,肯定要抉择更新) - 之后应用
usb
数据线连贯手机与电脑,同时手机须要关上USB
调试模式,配置USB
可传输文件形式 - 在
windows
上关上设施管理器
,在其余设施
选项上面会有一个Android Phone
的选项,点击更新驱动
,抉择浏览计算机以查找驱动程序软件 (R)
,抉择从http://www.miui.com/unlock/index.html
的miui
下载的解锁工具解压进去的driver
文件夹进行驱动更新 (旧版本的解锁工具是没有driver
文件夹的,所以在运行解锁工具的时候有更新提醒,肯定要更新,目前下载的版本是miflash_unlock-6.5.406.31
,解压进去会有个driver
文件夹) - 更新实现之后查看电脑端解锁工具,根据提醒操作手机
- 操作手机进入到
bootloader
模式,该模式有点相似与PC
装机时候常常看到的BIOS
模式 -
最初
windows
上的解锁工具检测到设施之后点击解锁,重启手机,进入开发者模式,看到如下信息,示意手机unlock
胜利Android platform tools
装置
官网下载拜访地址
https://developer.android.com/tools/releases/platform-tools
在 Ubuntu
零碎装置 ADB
与fastboot
$ sudo apt install android-tools-adb android-tools-fastboot
ADB
工具(Android Debug Bridge
)
一种容许模拟器或已连贯的 Android 设施进行通信的命令行工具,它可为各种设施操作提供便当,如装置和调试利用,并提供对 Unix shell
(可用来在模拟器或连贯的设施上运行各种命令)的拜访
次要性能
- 在设施上运行
Shell
命令 - 将本地
apk
软件装置至模拟器或 Android 设施 - 治理设施或手机模拟器上的预约端口
- 在设施或手机模拟器上复制或粘贴文件
adb
命令的根本语法
$ adb [-d|-e|-s <serial-number>] <command>
参数解释
-d
指定以后惟一通过USB
连贯的 Android 设施为命令指标-e
指定以后惟一运行的模拟器为命令指标-s <serial-number>
指定相应设施序列号的设施 / 模拟器为命令指标
如果只有一个设施 / 模拟器连贯时,能够省略掉 [-d|-e|-s <serial-number>]
这一部分,间接应用 adb <command>
在多个设施 / 模拟器连贯的状况下较罕用的是 -s <serial-number>
参数,serial-number
是指设施的设施序列号,能够通过 adb devices
命令获取
查看曾经连贯的设施
$ adb devices
List of devices attached
手机应用数据线连贯电脑的时候,关上手机 开发者选项
–USB 调试模式
,会弹出手机与计算机RSA
密钥指纹匹配的确认按钮,之后再次执行查看曾经连贯设施,如下示意手机与电脑之间的调试连贯胜利
$ adb devices
List of devices attached
5ba7ca2f device
通过 adb
进入到手机的 shell
环境,前缀 violet
是红米 note 7 Pro
的版本代号
$ adb shell
violet:/ $ pwd
/
violet:/ $ ls
acct charger debug_ramdisk mnt product_services sys
apex config default.prop odm res system
bin cust dev oem sbin vendor
bugreports d etc proc sdcard
cache data lost+found product storage
把电脑端的某个文件推送到手机,假如电脑端以后门路存在一个文件 test.txt
,推送到手机门路为/sdcard/test.txt
地位(在手机处于 recovery
模式的时候也能够应用该操作)
$ adb push test.txt /sdcard
或者也能够间接推送到根门路下
$ adb push test.txt /
重启手机
$ adb reboot
重启手机到 recovery
模式
$ adb reboot recovery
重启手机到 fastboot/bootloader
模式
$ adb reboot bootloader
更多应用请参考
https://juejin.cn/post/6844903645289398280
fastboot
工具与模式
fastboot
意思是疾速启动,在安卓手机中 fastboot
是一种比 recovery
更底层的刷机模式,应用 USB
数据线,连贯电脑的一种刷机模式,通常称为“线刷”刷机,当手机不能进入到零碎或者不能进入到 recovery
模式的时候,如果还能进入到 fastboot
模式,手机还能援救,如果不能进入到fastboot
,则彻底变砖了
当手机进入到 fastboot
模式的时候,adb
工具就不能应用了,只能应用 fastboot
工具
次要性能有
- 实现分区镜像烧录
- 分区擦除
- 设施重启
- 获取设施状态信息
当手机和电脑端应用数据线连贯的时候 (之前执行了adb
绑定手机与电脑)
重启设施操作
$ fastboot reboot
假如电脑以后 shell
门路下存在一个文件 twrp.img
,把该文件刷到手机recovery
分区
$ fastboot flash recovery twrp.img
TWRP recovery
镜像
twrp(Team Win Recovery Project)
是一款第三方刷机软件,是一个 recovery image
,在recovery
模式下应用
官网地址
https://twrp.me/
不同设施抉择镜像地址,每个设施都有对应的镜像
https://twrp.me/Devices/
Xiaomi Redmi Note 7 Pro
抉择镜像如下
https://twrp.me/xiaomi/xiaomiredminote7pro.html
recovery
模式装置Magisk
在手机处于 fastboot
模式的时候,电脑端执行命令(演示须要,在下载实现 twrp
镜像之后把名称对立批改为 twrp.img
),把第三方的recovery image
刷入手机的 recovery
分区,替换掉零碎厂商自带的 recovery
,有些手机重启之后第三方的recovery image
可能会被零碎自带的 recovery image
还原,从新刷入第三方 recovery image
即可
$ fastboot flash recovery twrp.img
之后执行命令重启手机
$ fastboot reboot
在手机重启的一瞬间,要依照不同手机的按键操作,保障前面进入 recovery
模式
进入到 recovery
分区之后须要输出开机明码,如果没有弹出开机明码输入框,后续装置 Magisk
的时候报错 Operation not permitted
可能与这个无关 (从recovery
模式启动阶段输入的日志来看,开机明码输出之后,明码参数可能是解密某些区域数据的一个解密参数,如果缺失该参数,加密数据未被解密,就会导致装置 magisk
的时候报错operation not permitted
)
格式化手机 data
分区
该步骤不是必须的,如果装置 Magisk
不胜利,能够尝试本步骤
该步骤会清空手机零碎保留的用户数据信息,下载安装的软件,相当于复原出厂设置
进入到 recovery
模式之后点击抉择 Wipe
模块,再点击Format Data
,最初在弹出的确认框输出yes
装置Magisk
在 recovery
模式 adb
工具是可用的
电脑端操作发送之前下载好的 Magisk.zip
到手机根门路
$ adb push Magisk.zip /
Magisk.zip: 1 file pushed. 34.0 MB/s (11278270 bytes in 0.317s)
手机操作,点击 Install
模块,文件夹操作找到根门路下的 Magisk.zip
文件,点击抉择之后,滑动图标 Swipe to confirm Flash
确认装置,查看装置终端日志输入无报错之后点击 Reboot System
按钮重启零碎(如果零碎卡住不能进入零碎,间接按住电源键强制关机再启动)
进入零碎后续操作
首先看到的是 Magisk
的App
,短少图片素材版本的,点击图标弹出一个提示框,Magisk 须要下载完整版 Magisk 能力失常运行
,前面查看Magisk
版本信息发现是 1.0
版本,依照提醒点击确认之后发现没什么反馈,是因为 Magisk
更新的时候申请的地址须要迷信解决
此处举荐 v2ray
我的项目
https://github.com/v2fly/v2ray-core
https://www.v2fly.org/
手机端能够装置 Android
版本利用
https://github.com/2dust/v2rayNG
迷信实现之后,再次点击 Magisk
图标进行更新
之后进入 Magisk
界面查看,留神看到版本号地位是有参数的,同时 超级用户
和模块
地位是能够点击的(如果 Magisk
这三块中央异样,可能就不是通过 recovery
模式装置的 Magisk
,可能是间接在零碎运行之后装置Magisk
,这样的话就不能应用到Magisk
的魔法了)
Operation not permitted
报错
该报错是 redmi note 7 pro
的报错,miui
论坛发现有很多 redmi note
系列的都会有这个报错
在装置 Magisk
过程中,报错操作未被容许,该谬误可能和 twrp
的recovery image
无关,所以决定换另外一个三方的镜像
解决方案参考
https://xiaomi.eu/community/threads/rn8-problems-with-twrp-recovery.58846/
redme note 7 pro
解决方案镜像下载地址
https://www.mediafire.com/file/9g239qv3wk6sz5k/violet01-01-2021test.img/file
后续操作依照后面章节 刷入 recovery image
操作
最初装置胜利界面如下
your system has been destroyed
解决方案
手机开机的时候呈现这个界面,不要慌,这个状况还能补救,每个人遇到这个界面的状况可能千奇百怪,我这边是进入到 recovery
的时候格式化了一些分区,手抖了一下意外的把 system
分区都格式化了
解决方案参考
https://droidwin.com/the-system-has-been-destroyed-error-on-xioami-fix/
小米手机能够拜访 https://xiaomifirmwareupdater.com/
下载对应手机型号的fastboot rom
,其余手机搜寻fastboot rom
我的手机是抉择了如下版本,china
发行版本,stable
, fastboot
模式的,比拟新的一个版本(事实上我是看这个文件又大又新还是 stable
才抉择这个的)
下载实现压缩包后解压,解压进去的文件夹内蕴含 flash_all.sh
相干文件
放弃数据线连贯到手机,手机进入到 fastboot
模式,执行命令如下(PS:有些人可能会感觉只须要刷入一点 vbmeta.img
或者一些 boot.img
之后再启动零碎,能够最大限度的保留数据,然而我的理论经验示意,手机都快变砖了,数据什么都无所谓了,可能失常开机进入零碎才是我惟一在乎的)
$ ./flash_all.sh
Magisk
模块介绍与装置
Magisk
就像是一个 docker
技术,是一个平台,Magisk modules
是平台上用户理论应用的货色,就像是一个个运行的 docker
容器
优良 Magisk
模块举荐与装置参考文章
https://www.xda-developers.com/best-magisk-modules/
Magisk
开发者文档参考
https://topjohnwu.github.io/Magisk/guides.html
装置模块抉择一个高级充电管制的 Magisk Module
我的项目,模块装置能够应用 Magisk App
点击装置,也能够抉择应用 adb
装置
充电管制我的项目仓库地址
https://github.com/VR-25/acc
抉择一个 release
的zip
版本下载
目前抉择的版本是acc_v2022.7.30-dev_202207300_2206.zip
下载之后应用压缩包管理器查看外面的文件,留神看压缩包外面的根门路的地位,Magisk
在解压压缩包的时候默认提取实现之后 install.sh
等文件就是在以后门路,而不是还要去某个文件夹拜访
假如当初有个 temp
文件夹,须要打包压缩为zip
能够在文件夹里面执行命令,这个是最常见的办法
$ zip -r temp.zip temp/
也能够进入到 temp
文件夹外面执行命令,两个命令产生的压缩包的文件根门路是不一样的,Magisk module
要求的就是 zip
包外面的文件根门路就是/
,否则装置模块的时候会报错Unzip error
$ zip -r temp.zip *
为不便演示,此处应用 adb
形式装置模块
查看 adb
连贯设施信息,如果是像上面这样的输入,须要敞开手机USB 调试模式
,再次关上保障手机和电脑配对
$ adb devices
List of devices attached
5ba7ca2f unauthorized
失常输入如下
$ adb devices
List of devices attached
5ba7ca2f unauthorized
把模块压缩推送到手机 /sdcard
地位(如果该地位不存在,能够间接把文件推送到 /
门路)
$ adb push acc_v2022.7.30-dev_202207300_2206.zip /sdcard
acc_v2022.7.30-dev_202207300_2206.zip:...hed. 3.7 MB/s (173493 bytes in 0.045s)
进入到手机 shell
环境
$ adb shell
# 查看对应地位是否有相干压缩包文件
violet:/ $ ls /sdcard/
Alarms Lark Pictures miad
Android MIUI Podcasts sogou
AppTimer Movies Ringtones
DCIM Music TWRP
Download Notifications acc_v2022.7.30-dev_202207300_2206.zip
# 获取到 root 权限, 输出 su,点击回车之后手机上会弹出一个确认框,点击确认即可
violet:/ $ su
# 开始装置模块
violet:/ # magisk --install-module /sdcard/acc_v2022.7.30-dev_202207300_2206.zip
- Device is system-as-root
...
Installing in /data/adb/modules/acc/...
- Done
LINKS
....
Rebooting is unnecessary.
- acc commands may require the /dev/.vr25/acc/ prefix (e.g., /dev/.vr25/acc/acc -v) until system is rebooted.
- Daemon started.
violet:/ #
个别装置模块之后是须要重启手机的,这个模块的装置信息显示Rebooting is unnecessary
装置实现之后关上 Magisk App
,点击抉择 模块
按钮,就能够看到装置好的模块
参考浏览
每个 Android 玩家都不可错过的神器(一):Magisk
初识与装置
The system has been destroyed error on Xiaomi: How to Fix
How to boot into recovery mode using button combos, ADB, and root apps
Boot any Android Device into Fastboot Mode
ADB
操作命令详解及用法大全
Android 调试桥 (adb
)
Best Magisk modules
Magisk Developer Guides