共计 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