Android-x86项目提取boot.img并使用Magisk获取ROOT

概述

这篇文章主要记录了如何在Android-x86项目上使用Magisk获取ROOT权限,背景是某日在VMware上安装了Android-x86,原来计划直接用SuperSU+Xposed框架的方法,但无奈2018年SuperSU以及Xposed的作者都纷纷宣布停止更新,因此对Android新版系统的支持着实不好。后来想到了进来大火的Magisk方案,所以有了下面的尝试。其中会包括如何提取制作boot.img文件、获得magisk_patched.img文件并重新打包回ISO文件等内容。

从官方ISO文件提取boot.img

各个版本的Android-x86原始镜像可以从官网下载:https://www.android-x86.org/changelog.html ,演示使用的ISO文件是 android-x86-7.1-r2.iso 。

  1. 首先使用 UltraISO软件 打开下载的ISO镜像,找到 kernelramdisk.img 这两个文件,拷贝出来:
    UltraISO 里直接选中拖出来到目录即可

  2. 接着这时需要一台Linux设备,这里使用的是 Ubuntu,将拷出来的 kernel 和ramdisk.img这两个文件拷贝到Linux系统中,然后安装mkbootimg和abootimg这两个软件,终端执行:

    $ sudo apt-get install android-tools-mkbootimg abootimg
  3. 使用 cd 命令进入放置 kernelramdisk.img 这两个文件的目录中,在终端终端执行:

    $ mkbootimg --kernel kernel --ramdisk ramdisk.img -o boot.img

    这一步会将这两个文件打包成一个文件,执行完后当前目录下会生成一个 boot.img 文件

    mkbootimg 工具的打包命令如下:

    > $ mkbootimg --kernel $kernelimg --ramdisk $ramdiskimg --kernel_base $kernel_base --page_size $page_size --cmd_line $cmd -o $out_image   
    >

    --kernel--ramdisk 分别指定使用的 kernel 和 ramdisk 镜像
    --kernel_base--page_size (为可选项)指定 kernel 基址和页大小,如果有源码可以查看 BoardConfig.mk
    --cmd_line 可以指定一条命令,在开机的时候执行
    -o 指定输出镜像的名字

使用MagiskManager给boot.img打补丁

将生成的boot.img文件复制到任意一台安装了MagiskManager的Android设备。打开MagiskManager,点击 Magisk 的安装:

安装方法点击 选择并修补一个文件

然后选择刚复制的boot.img文件,操作后,同一目录中会生成一个新的文件magisk_patched.img:

提取并打包新镜像

将新文件 magisk_patched.img 复制回Linux工作目录中,并在 magisk_patched.img 所在目录打开终端执行以下命令提取文件:

$ abootimg -x patched_boot.img

提取成功后会在当前目录生成两个文件:
zImage:重命名为 kernel
initrd.img:重命名为 ramdisk.img

将重命名后的 kernelramdisk.img 打包回ISO镜像,这里使用 UltraISO 可以直接把修改后的文件拖回原iso文件,保存后可以直接得到更新后的镜像。

大功告成

直接安装更新后的镜像,开机即自带 Magisk 及 ROOT。理论上各类Android系统方法通用,部分系统按此方法操作后开机并没有 Magisk 软件,此时重新下载 Magisk APP 安装即可直接获得ROOT权限。

文章作者: Yihan
文章链接: https://crushonu.top/android-x86项目提取boot-img并使用magisk获取root-10/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yihan's Blog