刷机与装置Magisk,工具与流程,雏鹰腾飞,一条龙手把手式文档

Magisk呈现的背景

抉择Android手机的同时,也抉择了一种有限的可能,究竟还是时势造英雄

  • 为了冲破OEMOriginal Equipment Manufacturer,代工生产)定制利用的机型限度,给Android插上一双翅膀
  • 为了解决NetflixGoogle 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之后再次装置才胜利

前提常识

手机刷机rootunlockBootloader的比照

  • 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

关上开发者选项,点击进入设施解锁状态,而后会看到官网的设施解锁操作流程,依照其流程操作

  1. 个别是插入SIM卡之后,绑定实现小米账号
  2. 从小米的官网获取到解锁工具地址,在windows零碎上,下载安装解锁工具,拜访地址 http://www.miui.com/unlock/index.html进行下载,下载之后运行压缩包外面的miflash_unlock.exe,这时须要再次登录小米账号(如果显示miflash有更新,肯定要抉择更新
  3. 之后应用usb数据线连贯手机与电脑,同时手机须要关上USB调试模式,配置USB可传输文件形式
  4. windows上关上设施管理器,在其余设施选项上面会有一个Android Phone的选项,点击更新驱动,抉择浏览计算机以查找驱动程序软件(R),抉择从http://www.miui.com/unlock/index.htmlmiui下载的解锁工具解压进去的driver文件夹进行驱动更新(旧版本的解锁工具是没有driver文件夹的,所以在运行解锁工具的时候有更新提醒,肯定要更新,目前下载的版本是miflash_unlock-6.5.406.31,解压进去会有个driver文件夹)
  5. 更新实现之后查看电脑端解锁工具,根据提醒操作手机
  6. 操作手机进入到bootloader模式,该模式有点相似与PC装机时候常常看到的BIOS模式
  7. 最初windows上的解锁工具检测到设施之后点击解锁,重启手机,进入开发者模式,看到如下信息,示意手机unlock胜利

    Android platform tools装置

官网下载拜访地址

https://developer.android.com/tools/releases/platform-tools

Ubuntu零碎装置ADBfastboot

$ 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 devicesList of devices attached

手机应用数据线连贯电脑的时候,关上手机开发者选项-USB调试模式,会弹出手机与计算机RSA密钥指纹匹配的确认按钮,之后再次执行查看曾经连贯设施,如下示意手机与电脑之间的调试连贯胜利

$ adb devicesList of devices attached5ba7ca2f    device

通过adb进入到手机的shell环境,前缀violet是红米note 7 Pro的版本代号

$ adb shellviolet:/ $ pwd/violet:/ $ lsacct       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按钮重启零碎(如果零碎卡住不能进入零碎,间接按住电源键强制关机再启动)

进入零碎后续操作

首先看到的是MagiskApp,短少图片素材版本的,点击图标弹出一个提示框,Magisk须要下载完整版Magisk能力失常运行,前面查看Magisk版本信息发现是1.0版本,依照提醒点击确认之后发现没什么反馈,是因为Magisk更新的时候申请的地址须要迷信解决

此处举荐v2ray我的项目

https://github.com/v2fly/v2ray-corehttps://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过程中,报错操作未被容许,该谬误可能和twrprecovery 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

抉择一个releasezip版本下载

目前抉择的版本是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 devicesList of devices attached5ba7ca2f    unauthorized

失常输入如下

$ adb devicesList of devices attached5ba7ca2f    unauthorized

把模块压缩推送到手机/sdcard地位(如果该地位不存在,能够间接把文件推送到/门路)

$ adb push acc_v2022.7.30-dev_202207300_2206.zip /sdcardacc_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/...- DoneLINKS....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