当前位置: 首页 > article >正文

MagiskBoot编译解包打包boot.img

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/

编译环境准备

1. Windows下启用开发者模式,因为需要 symbolic link 支持
image.png

image.png

2. 安装 python3.8+,并配置PATH环境变量

# 查看python版本信息
py --version
# 查看所有已安装的 Python 解释器路径
py -0p

3. git 启用 symbolic links

# 启用 symbolic links
git config --global core.symlinks true
# 查看 git 配置
git config --global --list

4. 安装 Android Studio ,设置环境变量 ANDROID_HOME 为 Android SDK 文件夹的路径。该路径可以在 Android Studio 的设置中找到。

5. 下载 Magisk 源码

# 下载 Magisk 源码
git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git

# 如果子模块克隆失败,可以手动克隆这些子模块。进入对应的子模块路径,然后执行以下命令
git submodule update --init --recursive

6. 运行 ./build.py ndk,下载并安装 NDK。

py .\build.py ndk

编译MagiskBoot

# 编译 native 模块,包括 magiskinit magisk magiskboot magiskpolicy
py .\build.py native

# 编译所有模块
py .\build.py all

编译成功后,在 Magisk\native\out\arm64-v8a 目录下可以看到 magiskboot 文件已经生成
image.png

使用 magiskboot 解包&打包内核

# 解包 boot.img
./magiskboot unpack boot.img

# 重新打包 img,得到一个 new-boot.img
./magiskboot repack boot.img

在Windows下使用magiskboot

在 magiskboot_build 上下载 magiskboot-e159716-release-windows-mingw-w64-msvcrt-i686-standalone.zip 并解压到 D:\App\magiskboot 目录下

image.png

新建 unpack.bat,扩展 magiskboot 使其可指定解压目录

@echo off
:: 检查是否提供了 IMG_PATH 参数
if "%~1"=="" (
    echo 请提供boot.img文件的路径作为参数!
    exit /b 1
)

:: 获取当前批处理文件所在的目录
set "SCRIPT_DIR=%~dp0"

:: 将相对路径转换为绝对路径
for %%I in ("%~1") do (
    set "IMG_PATH=%%~fI"
    set "OUTPUT_DIR=%%~dpI%%~nI"
)

:: 创建输出目录(如果不存在)
if not exist "%OUTPUT_DIR%" (
    mkdir "%OUTPUT_DIR%"
)

:: 解包 boot.img 到输出目录
cd "%OUTPUT_DIR%"
"%SCRIPT_DIR%magiskboot" unpack "%IMG_PATH%"

echo 解包完成,文件已解包到 "%OUTPUT_DIR%" 目录中。

新建 repack.bat,根据指定解压目录重新打包 img,并把 new-boot.img 存放在解压目录下

@echo off
:: 检查是否提供了解包目录路径作为参数
if "%~1"=="" (
    echo 请提供解包目录的路径作为参数!
    exit /b 1
)

:: 获取当前批处理文件所在的目录
set "SCRIPT_DIR=%~dp0"

:: 将相对路径转换为绝对路径并获取解包目录名称
for %%I in ("%~1\.") do (
    set "UNPACK_DIR=%%~fI"
    set "UNPACK_NAME=%%~nxI"
)

:: 检查是否成功获取目录名称
if "%UNPACK_NAME%"=="" (
    echo 无法获取解包目录的名称!
    exit /b 1
)

:: 获取 UNPACK_DIR 的父目录路径
for %%I in ("%UNPACK_DIR%\..") do (
    set "PARENT_DIR=%%~fI"
)

:: 设置新的 BOOT_IMG 路径,位于 UNPACK_DIR 的父目录
set "BOOT_IMG=%PARENT_DIR%\%UNPACK_NAME%.img"

:: 切换到解包目录
cd "%UNPACK_DIR%"

:: 打包回 boot.img
"%SCRIPT_DIR%magiskboot" repack "%BOOT_IMG%"

echo 打包完成,新的 "%BOOT_IMG%" 已生成并存放在 "%UNPACK_DIR%"。

将 magiskboot 解压路径添加到系统 Path 环境变量
image.png

# 解包 boot.img
unpack .\boot.img
# 重新打包 img,得到一个 new-boot.img 在 boot 目录下
repack .\boot\

源码地址:https://github.com/CYRUS-STUDIO/MagiskBootWindows

参考:
Magisk V26.1 编译
在 macOS/Windows/Linux 上使用 magiskboot


http://www.kler.cn/a/282008.html

相关文章:

  • 表格的选择弹窗,选中后返显到表格中
  • 学习大数据DAY61 宽表加工
  • Liunx-Ubuntu22.04.1系统下配置Anaconda+pycharm+pytorch-gpu环境配置
  • 亿咖通科技应邀出席微软汽车行业智享会,分享ECARX AutoGPT全新实践
  • Skywalking搭建-来自于图灵课堂
  • Macmini中普通鼠标与TrackPad联动问题解决
  • Linux系统使用Docker compose搭建开源文档系统Paperless-ngx
  • TS学习笔记
  • 【计算机网络】计算机网络的组成和功能
  • SpringBoot 项目——抽奖系统
  • webContextUnify的作用
  • mac安装java17(jdk17)
  • Netty+WebSocket实现高并发网络编程
  • 【Go - interface, 强类型语言中的任意类型 】
  • 【项目日记】高并发内存池---实现线程缓存
  • Linux学习记录(十三)----信号
  • 使用 JavaScript 实现图片上传
  • 视源CVTE嵌入式面试题及参考答案(200+面试题,17万字)
  • TCP vs UDP:揭秘可靠性与效率之争
  • Linux 软件包管理器yum 自动化构建工具-make/makefile
  • 游卡,三七互娱,得物,顺丰,快手,oppo,莉莉丝,康冠科技,途游游戏,埃科光电25秋招内推
  • PN结--
  • R 语言学习教程,从入门到精通,R 绘图饼图(23)
  • vector容器---性能优化
  • 人工智能算力FP32、FP16、TF32、BF16、混合精度解读
  • 深度解析:防火墙技术在网络安全中的应用与发展