文章目录

  • 预备环节
  • 基础参考内容
  • 视频教程 ★ \bigstar
  • 基础知识准备
  • 推荐具有的技能(optional)
  • 工具/材料准备
  • 硬件和软件
  • magisk app注意事项/刷入面具
  • 关于刷进入magisk面具方式
  • 玩机root注意事项
  • 工作窗口预览(optional)
  • GUI工具箱辅助操作
  • 交互式脚本进行root
  • 核心步骤(正式)
  • 操作声明
  • 设置工作路径(语境约定!🤗⛔推荐小白使用)
  • 方式1:在platform-tools文件夹下打开cmd
  • 方式2:基于桌面下的文件夹设置默认路径(目录/文件夹)
  • 获取boot.img(可选的步骤)
  • 获取magisk_patched文件
  • 注意事项
  • 传输boot.img到手机(optional)
  • 修补过程的操作细节(包括不同android版本)
  • 早期版本的android修补boot.img
  • 较高版本的android修补boot.img
  • 修补操作小结
  • 将修补好的magisk_patched文件传输到电脑(required!)
  • 修补后的文件放置在哪里/如何传输文件
  • 文件传输到那个文件夹
  • fastboot刷入修补好的magisk_patched文件
  • 进入fastboot(bootloader)模式
  • 验证fastboot是否联通(可用)
  • 刷入命令格式
  • 开始刷写&结果
  • 上面的命令做了什么&原理(optional)
  • 重启手机查看效果
  • android12注意事项:刷入magisk获取&管理root权限
  • 预期结果
  • root 之后的玩机部分
  • 更多参考内容
  • 线刷&卡刷(第三方recovery)
  • android推荐工具(optional)(文件管理客户端)
  • 驱动/命令行工具:adb&fastboot的使用和注意事项
  • RSA秘钥指纹
  • adb链接
  • 大小写问题&斜杠问题(optional)
  • adb 文件传输示例
  • 绝对路径传输文件实例
  • 相对路径传输示例
  • 利用adb shell 检查android 设备文件
  • 配置命令行工具相关环境变量或命令行工具别名(optional)
  • 环境变量方式
  • 别名方式
  • 什么都不配置
  • 关于fastboot工具和adb工具的使用场景和帮助名令
  • 基础知识补习
  • 玩机论坛/网站
  • fastboot命令
  • bootloader(fastboot)下的常用操作
  • 常用的fastboot子命令Commands
  • android 分区
  • 附(资源)
  • 小米/redmi 刷机包获取(optional)


预备环节

基础参考内容

基础知识准备

  • 将前面列出的参考都看一遍
  • 最好把文章结尾的基础知识以看看
  • 特别是@晨钟(极客湾)的视频,相对全面,可以看他个两三遍(一遍估计不太好消化),当然如果不搞游戏什么的进阶后面的部分可以略过

推荐具有的技能(optional)

  • 遇到问题时,会使用搜索引擎/论坛寻求帮助查找问题
  • 会google更好,会使用搜索语法就更好
  • 能完整版酷安搜贴也不错(或xda)
  • 会点英文更好

工具/材料准备

硬件和软件

  • 已经解锁的android手机(譬如小米/redmi手机)
  • 但是不排除例外,请自行搜索驱动打上
  • 极端情况下(对于使用过软连接修改过%userprofile%\.android的android开发者,下面这篇文章或许有用)
  • 数据线(usb cabl)
  • pc(windows10/11)
  • windows terminal+powershell(或者cmd) 组合
  • 命令行工具下载(adb/fastboot(platform-tools工具箱))
  • 下载magisk app
  • boot.img和magisk_patched文件会在后续操作中产生

magisk app注意事项/刷入面具

  • 下载完后,及时安装上magisk app,即,在刷入之前就安装好
  • 这个步骤主要是针对修补文件是来自其他人提供的情况下
  • 如果是自己修补的,那么一般不会有问题(自己修补,magisk app是肯定是已经安装好了才有的修补(不用第二台手机参与的情况下)
  • 我试过如果在刷入后,才安装magisk app可能会使得root无法被magisk app接管
  • 但如果,你是线刷入修补文件而后才安装magisk app,那么请重启一下,看看magisk app能否接管root(但不一定有效,这时候考虑再刷以便面具)
  • 重启对于twrp刷入magisk的方式有效(试验过)
关于刷进入magisk面具方式
  • 刷入面具 这个说法不完全准确
  • 对于线刷的方式而言,称呼为刷入修补后的boot.img(即magisk_patched文件)
  • 但是对于卡刷刷入面具,这种叫法没有问题
  • 卡刷依赖于第三方recovery(比如流行的twrp)
  • 这依赖于相关人员的适配

玩机root注意事项

  • 玩机有风险
  • 硬件损坏风险
  • 数据/信息泄漏风险
  • 建议用旧手机(备用机)试着操作一遍,总体简单
  • android7之后的都可以(root过程差不多),提高主设备刷写的成功率(当然,如果只是体验一下,主设备就不用root了)

工作窗口预览(optional)

android 12 root android12开启root_android 12 root

GUI工具箱辅助操作

交互式脚本进行root

  • 有的酷安玩机达人编写了root脚本,脚本会提示你一步步操作下去,可以降低门槛

核心步骤(正式)

操作声明

  • 主要内容为:获取boot.img并修补为magisk_patched文件
  • 为了使文章主体部分简洁,将一些细节放置到了文末(按自己需要,查看目录跳转)

设置工作路径(语境约定!🤗⛔推荐小白使用)

  • 默认路径(我们也叫默认工作目录):如果你对命令行工具的使用比较陌生,那么推荐你选定一个工作路径,我们可以将其称之为默认路径,之后的所有的操作到集中到该目录下!
  • 将前面提到的命令行工具下载下来(下载后建议拖到桌面,并解压该压缩包,得到一个platform-tools文件夹)
  • 如果你不设置环境变量(文章末尾会提供),那么采用下面的方案中的一种即可

方式1:在platform-tools文件夹下打开cmd

  • 这种方式和简单(推荐)
  • 首先打开解压后的platform-tools.zip文件夹
  • 在资源管理器的地址栏中输入cmd
  • 弹出一个命令行窗口(最小化,备用)
  • 此时的默认工作目录就是这个被打开的文件夹
  • 后续的操作需要把修补的文件也放入到这个目录中!
  • 下面的方式2也还行,选择一种即可

方式2:基于桌面下的文件夹设置默认路径(目录/文件夹)

  • 我们最熟悉,最明显的路径就是桌面了
  • 这有利于我们可视化操作文件!
  • 打开cmd
  • 打开开始菜单搜索cmd
  • 或者键盘同时按下windows徽标联合字母键r启动窗口
  • 输入cmd 回车即可打开cmd窗口
  • 一般来说,会是一个黑黑的窗口
  • 命令行跳转到桌面做准备:
  • cd %userprofile%/desktop/
  • 复制上述命令行,并粘贴到cmd窗口中
  • 正式设定默认工作目录🤗🤗🤗🤗
  • 工作目录就设定在platform-tools文件夹下
  • 将这个文件夹放在桌面上,将下面的命令行粘贴到cmd窗口回车执行
  • cd %userprofile%/desktop/platform-tools

获取boot.img(可选的步骤)

  • 未修补的初始boot.img的获取方式多种
  • 可以自己下载rom然后(转化)提取
  • 也可以直接到网上找找别人提取好的boot.img文件(譬如酷安论坛中找找帖子)
  • 可选操作:把boot.img文件拖入到默认工作目录platform-tools

获取magisk_patched文件

注意事项

  • 将之前获取的boot.img进行修补,即可得到magisk_patched文件
  • 获取boot.img可以是别人分享的(酷安找帖子),也可以是自己提取
  • 但是,修补boot.img建议自己修补,即,使用自己安装的magisk app自行修补
  • 这样可以保证magisk app(客户端)和修补出来的magisk_patched文件具有一致性和兼容性,不容易出现异常
  • 异常情况包括但不限于
  • 无法开机
  • 开机了,但是magisk app无法管理root权限
  • 上述方式是推荐的方式,不过你还是可以试试用别人修补过的magisk_patched文件
  • 但不建议,会增加风险(本人失败过(❁´◡`❁),幸好找到了一份未修补的boot.img,成功重刷恢复过来)

传输boot.img到手机(optional)

  • 如果只是用手机就下载/提取到了boot.img那么这一步骤就可以跳过
  • 如果是通过电脑获取的boot.img文件,那么将boot.img 通过任意一种你喜欢或你会的方式传输到手机
  • 可以用qq/微信发送
  • 也可以用adb push方式传输
  • 可选操作:(将文件拖入到默认工作目录platform-tools中,以便于使用adb 传输
  • 下载软件工具和修补过的.img文件都已经放置到合适的位置了,下面准备刷写

修补过程的操作细节(包括不同android版本)

早期版本的android修补boot.img

注意,对于较早版本的android(譬如下面的情况是我的android7老设备(已经有了AB分区的概念了)
(第二幕中,会使用android12设备root的实践报告)


修补前肯能遇到的选项:

  • 保留AVbobo2.0
  • 保持强制加密(默认勾选)
  • 修补boot镜像中的vbmeta
  • (一般我们保持默认即可)
  • 点击下一步
  • 选择boot.img文件
  • 选择完毕会回到面具,点击开始修补(let's go)
较高版本的android修补boot.img
  • 对于android12设备,应该没有这么多选项(反而简洁),也是直接默认,在方式(method)选择boot.img文件直接进行修补

  • 简而言之,如果有选项这一栏,实际保持默认即可

    • (建议保持加密,否则系统可能无法引导,
    • 不过救砖不难,只需要刷入未修补的boot.img即可恢复)
  • 选择下一步,选择我们前面准备好的boot.img,文件进行修补(选择完文件后点击开始)

  • 输出过程和低版本android类似,等待all done!提示

修补操作小结

  • 利用已经安装的magisk 手机端app进行修补boot.img文件
    • 这将得到一个修补过的boot.img(实际名字类似于magisk_patched-some-id-token.img)
    • 例如我的这次操作:得到修补后的文件magisk_patched-25200_LFBPs.img

将修补好的magisk_patched文件传输到电脑(required!)

修补后的文件放置在哪里/如何传输文件

  • 首先注意,手机端,magisk app修补出来的文件会被magisk app放置到手机的/sdcard/Download/目录下

    • 对应到模拟路径也就是,/storage/emulated/0/Download/magisk_patchedxxxx.img
    • 具体以magisk app修补完给出的提示为准(见上一目的截图:output file is written to...)
  • adb方式传输文件

    • PS D:\usersByCxxu\DownloadsAll> adb pull /storage/emulated/0/Download/magisk_patched-25200_VBQAh.img
      /storage/emulated/0/Download/magisk_patched-25200..., 0 skipped. 20.6 MB/s (29777192 bytes in 1.379s)
  • 也可以使用qq/微信传输文件(友好方式)

  • 或者其他方式

    • 感觉windows资源管理器不太靠谱

文件传输到那个文件夹

  • 有多种方式传输文件到pc端,电脑路径可以是你熟悉的任何路径(譬如桌面)
    • 可选操作:将修补好的magisk_patched文件拖入到先前约定的默认工作目录platform-tools文件夹中

fastboot刷入修补好的magisk_patched文件

  • 前面说到,adb是个好用的工具,但对于本教程并不是必须的
  • fastboot是本教程必须的

进入fastboot(bootloader)模式

  • 按住电源键+音量键下(不同机型可能有不同组合键)
    • 在开机状态下可能可以直接进入到fastboot
    • 如果这不生效,可以关机后再按住上述组合键
  • 或者在开机状态下,允许计算机usb调试手机,使用命令行工具adb执行adb reboot bootloader
  • 某些recovery提供了重启到bootloader模式,也可以从recovery处重启进入

验证fastboot是否联通(可用)

  • 至此,电脑可以通过fastboot对手机执行相关操作
    • 使用命令fastboot devices进行查询设备连通性
    • 如果成功,会返回一串设备号和编码

刷入命令格式

  • 本教程唯一一条必要命令(其他命令的是可以别其他方式替代)

  • fastboot flash boot .\magisk_patched-25xxx.img

    • 注意,上述命令在以下环境条件才可以
      • 上述命令的magisk_patchedxxx文件名字要修改为自己修补好的文件名
      • cmd进入到默认工作目录platform-tools文件夹中再执行
        • 这是为了简化命令行(fastboot.exe和magisk_patchedxxx.img文件都在同一个目录下)
  • 可选方式:用绝对路径也可以,这样就可以在任何目录下执行相应命令

    • 例如:C:\Users\userName\Desktop\platform-tools\fastboot.exe --help

      • C:\Users\userName\Desktop\platform-tools\fastboot.exe flash boot C:\Users\userName\Desktop\platform-tools\magisk_patched-25200_VBQAh.img
      • 这样就无视任何环境,但是命令行变得很长
    • PS C:\Users\cxxu> C:\Users\cxxu\Desktop\platform-tools\fastboot.exe --help
      
      usage: fastboot [OPTION...] COMMAND...
      
      flashing:
       update ZIP                 Flash all partitions from an update.zip package.
       flashall                   Flash all partitions from $ANDROID_PRODUCT_OUT.
                                  On A/B devices, flashed slot is set as active.
    • 总之,如果没有相应配置,甚至没有默认工作目录的语句,可以考虑用绝对路径来帮助系统找到命令行工具fastbootmagisk_patched文件路径(但是建议用默认路径比较方便)

开始刷写&结果

  • 调整好路径后,开始刷写
PS D:\usersByCxxu\DownloadsAll> fastboot flash boot .\magisk_patched-25200_VBQAh.img
Sending 'boot' (29079 KB)                          OKAY [  0.936s]
Writing 'boot'                                     OKAY [  0.818s]
Finished. Total time: 2.015s

上面的命令做了什么&原理(optional)

  • 查看帮助文档

    • PS D:\usersByCxxu\DownloadsAll> fastboot -h
      usage: fastboot [OPTION...] COMMAND...
      
      flashing:
       update ZIP                 Flash all partitions from an update.zip package.
       flashall                   Flash all partitions from $ANDROID_PRODUCT_OUT.
                                  On A/B devices, flashed slot is set as active.
                                  Secondary images may be flashed to inactive slot.
       flash PARTITION [FILENAME] Flash given partition, using the image from
                                  $ANDROID_PRODUCT_OUT if no filename is given.
      
      basics:
       devices [-l]               List devices in bootloader (-l: with device paths).
       getvar NAME                Display given bootloader variable.
       reboot [bootloader]        Reboot device.
    • 可以看到, flash PARTITION [FILENAME] .(Flash given partition, using the image from $ANDROID_PRODUCT_OUT if no filename is given)

    • 而我们的命令fastboot flash boot magisk_patchedxx.img就是让fastboot这个程序执行子命令flash,flash 会把指定的文件刷入到指定分区partition(这里也就是boot分区);从而实现对boot分区的修改

重启手机查看效果

  • 打开magisk app

  • android 12 root android12开启root_android_02

  • 顺利的话,则成功获取

android12注意事项:刷入magisk获取&管理root权限

  • 注意较高版本的android7+之后引入的a/b分区,如果上述刷入无效
    • fastboot flash boot magisk_patch-xxx.img不生效(或异常)
    • 那么尝试显式指定boot为boot_a&boot_b分别执行并刷写之
    • 然后使用fastboot reboot重启手机

android 12 root android12开启root_android_03

预期结果

  • 如果上述步骤都顺利的话,并且能够重启成功,那么magisk app应该能够获取到root权限并进行管理
root 之后的玩机部分更多参考内容

线刷&卡刷(第三方recovery)

  • 关于卡刷第三方包(经常使用流行的twrp来操作)
  • twrp虽然不是本主题(root)的重点,但是可以参考一下思路和操作
  • TeamWin - TWRP
  • 例如redmi 4x的教程

android推荐工具(optional)(文件管理客户端)

驱动/命令行工具:adb&fastboot的使用和注意事项

RSA秘钥指纹

  • 驱动现在一般不是问题,win10/11自带对android的驱动

  • 但是注意,除了驱动问题可能导致命令行工具链接不上手机

    • 特别是,如果没有经过下面的授权,在关机状态下的fastboot模式可能无法使用fastboot指令!
  • 还可能是因为手机端没有同意电脑对设备的控制(RSA秘钥指纹)

  • 所以说,建议在开机状态下,确保命令行工具可以访问手机

    • adb devices -l
    • 将上述命令行复制到cmd窗口(cmd处于默认工作目录platform-tools下),既可以检查连通性

adb链接

大小写问题&斜杠问题(optional)

  • 由于linux(android)都是区分大小写的,windows虽然不区分,但是本教程要求区分

    • 特别是使用adb&fastboot相关命令的时候是区分大小写的,传输文件的时候末尾斜杠不要多(访问目录则是可加可不加)
    • 总之就是,传输文件的时候,文件名末尾没有斜杠/
    • 指定目录参数的时候,推荐加上斜杠/
  • 尤其是,手机上的目录是,/sdcard/Download

    • 斜杠方向
    • Download而不是小写download(x)
    • 是不带s的单数Download
    • android 12 root android12开启root_android 12 root_05


  • 尽管如此,选择一个短的路径会有利于找到文件

    • 譬如,push 文件到android 设备目录设置为/sdcard/,而不必放到/sdcard/Download/这一子目录下
    • 只要确保你可以方便的找到该文件即可

adb 文件传输示例

绝对路径传输文件实例

  • 这里我将一个压缩包传输到手机上
    • 这里要注意,第二个路径参数的斜杠是linux规范的/,如果写成\会导致意外的结果(文件传输到意料之外的地方,找不到了)
  • 对于目录,即为可以不加斜杠,但是推荐加上,这样一目了然
PS C:\Users\cxxu\Downloads> adb push C:\Users\cxxu\downloads\Compressed\MK90.0-santoni-210620-HISTORY.zip /sdcard/Download
C:\Users\cxxu\downloads\Compressed\MK90.0-santoni-21062...shed, 0 skipped. 25.2 MB/s (695991497 bytes in 26.315s)
PS C:\Users\cxxu\Downloads>

相对路径传输示例

  • PS C:\Users\cxxu\Downloads\Compressed> adb push  .\lineage-18.1-20220720-UNOFFICIAL-0xCAFEBABE-Mi8937.zip /sdcard/Download/
    .\lineage-18.1-20220720-UNOFFICIAL-0xCAFEBAB...pped. 23.7 MB/s (783898135 bytes in 31.594s)
    PS C:\Users\cxxu\Downloads\Compressed>

利用adb shell 检查android 设备文件

  • 可选操作:检查android指定目录下是否存在某文件(下面是已经root的才有权限)

    • santoni:/ # cd sdcard/
      santoni:/sdcard # ls
      Alarms   MIUI     Music         Ringtones baidu                did    sogou
      Android  MT2      Notifications TWRP      browser              jeejen wlan_logs
      DCIM     MiMarket Pictures      Xiaomi    com.miui.voiceassist miad
      Download Movies   Podcasts      backups   dctp                 mipush
      santoni:/sdcard # cd Download/
      santoni:/sdcard/Download # ls
      3b515ef2c77d9f04e58c1d75a3add549-0-o_1g8cle2dk1mia12ds1vjs13eost32c-uid-408649.apk
      DevCheck_4.37.apk
      GitHub\ -\ yc9559_uperf_\ Userspace\ performance\ controller\ for\ android.mhtml
      MK90.0-santoni-210620-HISTORY.zip
      app-releas.zip
      app-release.apk
      app-release_mini.apk
      boot.img
      boots.zip
      magisk_patched-25200_VBQAh.img
      miui_HM4X_V11.0.1.0.NAMCNXM_7e7448fe6d_7.1.zip
      uperf-dev-22.07.24.zip

配置命令行工具相关环境变量或命令行工具别名(optional)

环境变量方式

  • 这不是必须的,但是推荐配置一下,这会是你在用命令行的时候更加方便,而不需要将工作目录定在(fastboot.exe和adb.exe目录下)
  • 如果你对此看兴趣,可以参考以下文章(只需要看一小部分,就可以满足本教程需求)

别名方式

  • 如果你熟悉powershell,可以对上述两个命令行工具配置别名,同样是方便的,由于是可选的内容我就不展开了,另外查阅资料,或者查看powershell帮助手册
    • man Set-Alias
    • 如果喜欢,你还可以固化别名配置

什么都不配置

  • 都不想配置,那就得老老实实的将工作目录锁定在工具箱目录下

  • 😂还有一种方式,就是每次执行命令,都将命令行工具的绝对路径打出来,很不方便

关于fastboot工具和adb工具的使用场景和帮助名令

  • adb可以在开机的状态下使用

    • 在一些不需要root权限但又高于普通android用户权限的时候,adb用得多
    • 本教程中,adb是可选的(例如,可以做到以下事情
      • 检查设备是否成功链接(驱动是否正常):adb devices -l
        • 注意devices的拼写
      • adb reboot bootloader使得开机的(并且已经允许计算机调试的android直接重启到bootloader(fastboot模式))
        • 这可以省去关机后按音量减&电源键的物理方式进入fastboot模式,更加高效
      • 使用adb push可以用来向anroid设备传输文件
      • 另一方面,adb pull可以从android 设备将文件拉取到电脑上
      • 以上都是可选,可以用你喜欢的传输方式进行传输文件
  • 获取帮助 adb --help

    • PS D:\usersByCxxu\DownloadsAll> adb --help
      Android Debug Bridge version 1.0.41
      Version 33.0.2-8557947
      Installed as D:\exes\platform-tools\adb.exe
      
      global options:
       -a                       listen on all network interfaces, not just localhost
       -d                       use USB device (error if multiple devices connected)
       -e                       use TCP/IP device (error if multiple TCP/IP devices available)
       -s SERIAL                use device with given serial (overrides $ANDROID_SERIAL)
       -t ID                    use device with given transport id
       -H                       name of adb server host [default=localhost]
       -P                       port of adb server [default=5037]
       -L SOCKET                listen on given socket for adb server [default=tcp:localhost:5037]
       很长,省略篇幅
  • fastboot是线刷的主角命令

    • 用来对处于fastboot模式下的android设备进行操作
  • fastboot帮助手册fastboot --help

    • PS D:\usersByCxxu\DownloadsAll> fastboot --help
      usage: fastboot [OPTION...] COMMAND...
      
      flashing:
       update ZIP                 Flash all partitions from an update.zip package.
       flashall                   Flash all partitions from $ANDROID_PRODUCT_OUT.
                                  On A/B devices, flashed slot is set as active.
                                  Secondary images may be flashed to inactive slot.
       flash PARTITION [FILENAME] Flash given partition, using the image from
                                  $ANDROID_PRODUCT_OUT if no filename is given.
      
      basics:
       devices [-l]               List devices in bootloader (-l: with device paths).
       getvar NAME                Display given bootloader variable.
       reboot [bootloader]        Reboot device.
       
       省略篇幅
基础知识补习

玩机论坛/网站

fastboot命令

bootloader(fastboot)下的常用操作

常用的fastboot子命令Commands

Some of the most commonly used fastboot commands include:

  • flash – rewrites a partition with a binary image stored on the host computer.

  • flashing unlock/oem unlock – unlocks an OEM locked bootloader for flashing custom/unsigned ROMs. The is a device specific unlock key.

  • flashing lock/oem lock – an opposite action.

  • erase – erases a specific partition.

  • reboot – reboots the device into either the main operating system, the system recovery partition or back into its boot loader.

  • devices – displays a list of all devices (with the serial number) connected to the host computer.

  • format – formats a specific partition; the file system of the partition must be recognized by the device.

  • oem device-info – checks the bootloader state.

    • 例如,对于未解锁的设备,有如下提示

      • 这种情况下,许多fastboot的指令无法顺利执行.
    • fastboot oem device-info
      (bootloader) Verity mode: true
      (bootloader) Device unlocked: false
      (bootloader) Device critical unlocked: false
      (bootloader) Charger screen enabled: false
      OKAY [  0.015s]
      Finished. Total time: 0.015s
  • getvar all – displays all information about device (IMEI, bootloader version, battery state etc.).

android 分区

附(资源)

小米/redmi 刷机包获取(optional)