概述
这篇文章主要记录了如何在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 。
-
首先使用 UltraISO软件 打开下载的ISO镜像,找到
kernel
和ramdisk.img
这两个文件,拷贝出来:
-
接着这时需要一台Linux设备,这里使用的是 Ubuntu,将拷出来的
kernel
和ramdisk.img这两个文件拷贝到Linux系统中,然后安装mkbootimg和abootimg这两个软件,终端执行:$ sudo apt-get install android-tools-mkbootimg abootimg
-
使用 cd 命令进入放置
kernel
和ramdisk.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
将重命名后的 kernel
和 ramdisk.img
打包回ISO镜像,这里使用 UltraISO 可以直接把修改后的文件拖回原iso文件,保存后可以直接得到更新后的镜像。
大功告成
直接安装更新后的镜像,开机即自带 Magisk 及 ROOT。理论上各类Android系统方法通用,部分系统按此方法操作后开机并没有 Magisk 软件,此时重新下载 Magisk APP 安装即可直接获得ROOT权限。