cfig / Android_boot_image_editor

Parsing and re-packing Android boot.img/vbmeta.img/payload.bin, supporting Android 15
Apache License 2.0
1.04k stars 232 forks source link

repack a custom pixel6 boot.img + vendor_boot.img #91

Closed 99degree closed 2 years ago

99degree commented 2 years ago

https://forum.xda-developers.com/t/proof-of-concept-5-15-mainline-for-pixel-6-pro.4364699/

the images are from above thread, below is their uploaded address https://www.androidfilehost.com/?w=files&flid=329868

i put althgether boot.img and vendor_boot.img and do gradlew unpack success ./gradlew unpack

Task :unpack 02:27:34.720 [main] WARN cfig.packable.PackableLauncher - [vendor_boot.img] will be handled by [VendorBootParser] 02:27:34.808 [main] WARN cfig.packable.PackableLauncher - 'unpack' sequence initialized 02:27:34.811 [main] INFO cfig.packable.IPackable - deleting build/unzip_boot/ ... 02:27:34.878 [main] INFO Helper - deleting uiderrors 02:27:34.978 [main] WARN cfig.bootimg.v3.VendorBootHeader - VendorBootHeader constructor 02:27:35.021 [main] WARN cfig.bootimg.v3.VendorBoot - VrtEntry(size=19642503, offset=0, type=PLATFORM, name='', boardIdStr='', file='build/unzip_boot/ramdisk.1') 02:27:35.021 [main] WARN cfig.bootimg.v3.VendorBoot - VrtEntry(size=8372445, offset=19642503, type=DLKM, name='dlkm', boardIdStr='', file='build/unzip_boot/ramdisk.2') 02:27:35.298 [main] INFO Helper - CMD: [lz4, -t, build/unzip_boot/ramdisk.img], workDir: null build/unzip_boot/ram : decoded 68020480 bytes 02:27:35.345 [main] INFO cfig.bootimg.Common - ramdisk is compressed lz4 02:27:35.351 [main] INFO Helper - CMD: [lz4, -d, -fv, build/unzip_boot/ramdisk.img.lz4, build/unzip_boot/ramdisk.img], workDir: null LZ4 command line interface 64-bits v1.9.2, by Yann Collet build/unzip_boot/ram : decoded 68020480 bytes 02:27:35.479 [main] WARN EnvironmentVerifier - 'dtc' not installed. Please install it manually to analyze DTB files 02:27:35.479 [main] WARN EnvironmentVerifier - Like this: $ sudo apt install device-tree-compiler 02:27:35.484 [main] INFO cfig.bootimg.v3.VendorBoot - dumping vendor ramdisk 1/2 ... 02:27:35.550 [main] INFO Helper - CMD: [lz4, -t, build/unzip_boot/ramdisk.1], workDir: null build/unzip_boot/ram : decoded 38467072 bytes 02:27:35.572 [main] INFO cfig.bootimg.Common - ramdisk is compressed lz4 02:27:35.573 [main] INFO Helper - CMD: [lz4, -d, -fv, build/unzip_boot/ramdisk.1.lz4, build/unzip_boot/ramdisk.1], workDir: null LZ4 command line interface 64-bits v1.9.2, by Yann Collet build/unzip_boot/ram : decoded 38467072 bytes 02:27:35.627 [main] INFO cfig.bootimg.cpio.AndroidCpio - Cleaning /root/source/Android_boot_image_editor/build/unzip_boot/root.1 ... 02:27:35.668 [main] WARN cfig.bootimg.cpio.AndroidCpio - root/config has improper file mode 555, fix it 02:27:36.234 [main] INFO cfig.bootimg.cpio.AndroidCpio - cpio trailer found, mode=000001ed 02:27:36.236 [main] INFO cfig.bootimg.Common - ramdisk extracted : build/unzip_boot/ramdisk.1 -> build/unzip_boot/root.1 02:27:36.237 [main] INFO cfig.bootimg.v3.VendorBoot - dumping vendor ramdisk 2/2 ... 02:27:36.296 [main] INFO Helper - CMD: [lz4, -t, build/unzip_boot/ramdisk.2], workDir: null build/unzip_boot/ram : decoded 29553408 bytes 02:27:36.314 [main] INFO cfig.bootimg.Common - ramdisk is compressed lz4 02:27:36.315 [main] INFO Helper - CMD: [lz4, -d, -fv, build/unzip_boot/ramdisk.2.lz4, build/unzip_boot/ramdisk.2], workDir: null LZ4 command line interface 64-bits v1.9.2, by Yann Collet build/unzip_boot/ram : decoded 29553408 bytes 02:27:36.362 [main] INFO cfig.bootimg.cpio.AndroidCpio - Cleaning /root/source/Android_boot_image_editor/build/unzip_boot/root.2 ... 02:27:36.665 [main] INFO cfig.bootimg.cpio.AndroidCpio - cpio trailer found, mode=000001ed 02:27:36.666 [main] INFO cfig.bootimg.Common - ramdisk extracted : build/unzip_boot/ramdisk.2 -> build/unzip_boot/root.2 02:27:36.684 [main] INFO avb.AVBInfo - parseFrom(FILE:vendor_boot.img) ... 02:27:36.690 [main] INFO avb.AVBInfo - image FILE:vendor_boot.img has no AVB Footer 02:27:36.692 [main] ERROR cfig.bootimg.v3.VendorBoot - extraceVBMeta(): java.lang.IllegalArgumentException: stream doesn't look like valid VBMeta Header 02:27:36.751 [main] INFO cfig.bootimg.v3.VendorBoot - Unpack Summary of vendor_boot.img ┌───────────────────────────────────────┬──────────────────────────────────────┐ │What │Where │ └───────────────────────────────────────┴──────────────────────────────────────┘ ┌───────────────────────────────────────┬──────────────────────────────────────┐ │image info │build/unzip_boot/vendor_boot.json │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │ramdisk │build/unzip_boot/ramdisk.img.lz4 │ │-- PLATFORM ramdisk[1/2] │build/unzip_boot/ramdisk.1.lz4 │ │------- extracted rootfs │build/unzip_boot/root.1 │ │-- DLKM ramdisk[2/2] │build/unzip_boot/ramdisk.2.lz4 │ │------- extracted rootfs │build/unzip_boot/root.2 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │dtb │build/unzip_boot/dtb │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │bootconfig │build/unzip_boot/bootconfig │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │AVB info │build/unzip_boot/vendor_boot.avb.json │ └───────────────────────────────────────┴──────────────────────────────────────┘ 02:27:36.827 [main] WARN cfig.packable.PackableLauncher - 'unpack' sequence completed

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.4/userguide/command_line_interface.html#sec:command_line_warnings

./gradlew pack

Task :pack 02:28:36.784 [main] WARN cfig.packable.PackableLauncher - [vendor_boot.img] will be handled by [VendorBootParser] 02:28:36.865 [main] WARN cfig.packable.PackableLauncher - 'pack' sequence initialized 02:28:36.873 [main] INFO cfig.packable.VendorBootParser - Loading config from build/unzip_boot//vendor_boot.json 02:28:37.080 [main] INFO cfig.bootimg.Common - Deleting build/unzip_boot/ramdisk.1.lz4 ... 02:28:37.089 [main] INFO cfig.bootimg.v3.VendorBoot - build/unzip_boot/root.1 -> build/unzip_boot/ramdisk.1.lz4 02:28:37.097 [main] INFO cfig.bootimg.Common - Packing rootfs build/unzip_boot/root.1 ... 02:28:37.119 [main] INFO cfig.bootimg.cpio.AndroidCpio - loading build/unzip_boot/ramdisk.1_filelist.txt 02:28:37.557 [main] WARN cfig.bootimg.cpio.AndroidCpio - init.recovery.qcom.rc ~ init*, stMode=100750 02:28:37.857 [main] INFO Helper - lz4 --version 02:28:37.876 [main] INFO Helper - LZ4 command line interface 64-bits v1.9.2, by Yann Collet 02:28:37.876 [main] INFO ZipHelper - [lz4, -l, -12, --favor-decSpeed] 02:28:43.929 [main] INFO cfig.bootimg.Common - build/unzip_boot/ramdisk.1.lz4 is ready 02:28:43.929 [main] INFO cfig.bootimg.Common - Deleting build/unzip_boot/ramdisk.2.lz4 ... 02:28:43.930 [main] INFO cfig.bootimg.v3.VendorBoot - build/unzip_boot/root.2 -> build/unzip_boot/ramdisk.2.lz4 02:28:43.930 [main] INFO cfig.bootimg.Common - Packing rootfs build/unzip_boot/root.2 ... 02:28:43.933 [main] INFO cfig.bootimg.cpio.AndroidCpio - loading build/unzip_boot/ramdisk.2_filelist.txt 02:28:44.220 [main] INFO Helper - lz4 --version 02:28:44.222 [main] INFO Helper - LZ4 command line interface 64-bits v1.9.2, by Yann Collet 02:28:44.223 [main] INFO ZipHelper - [lz4, -l, -12, --favor-decSpeed] 02:28:54.577 [main] INFO cfig.bootimg.Common - build/unzip_boot/ramdisk.2.lz4 is ready 02:28:54.583 [main] INFO cfig.bootimg.v3.VendorBoot - Writing data ... 02:28:54.864 [main] INFO cfig.bootimg.v3.VendorBoot - dumping vendor ramdisk 1/2 ... 02:28:54.867 [main] INFO cfig.bootimg.v3.VendorBoot - dumping vendor ramdisk 2/2 ... 02:28:54.868 [main] INFO cfig.bootimg.v3.VendorBoot - [aosp/system/tools/mkbootimg/mkbootimg.py, --ramdisk_type, PLATFORM, --board_id0, 0x0, --board_id1, 0x0, --board_id2, 0x0, --board_id3, 0x0, --board_id4, 0x0, --board_id5, 0x0, --board_id6, 0x0, --board_id7, 0x0, --board_id8, 0x0, --board_id9, 0x0, --board_id10, 0x0, --board_id11, 0x0, --board_id12, 0x0, --board_id13, 0x0, --board_id14, 0x0, --board_id15, 0x0, --ramdisk_name, , --vendor_ramdisk_fragment, build/unzip_boot/ramdisk.1.lz4, --ramdisk_type, DLKM, --board_id0, 0x0, --board_id1, 0x0, --board_id2, 0x0, --board_id3, 0x0, --board_id4, 0x0, --board_id5, 0x0, --board_id6, 0x0, --board_id7, 0x0, --board_id8, 0x0, --board_id9, 0x0, --board_id10, 0x0, --board_id11, 0x0, --board_id12, 0x0, --board_id13, 0x0, --board_id14, 0x0, --board_id15, 0x0, --ramdisk_name, dlkm, --vendor_ramdisk_fragment, build/unzip_boot/ramdisk.2.lz4, --vendor_bootconfig, build/unzip_boot/bootconfig, --dtb, build/unzip_boot/dtb, --vendor_cmdline, earlycon=exynos4210,0x10A00000 console=ttySAC0,115200 androidboot.console=ttySAC0 printk.devkmsg=on at24.write_timeout=100 buildvariant=userdebug log_buf_len=1024K bootconfig, --header_version, 4, --base, 0, --tags_offset, 268435712, --kernel_offset, 268468224, --ramdisk_offset, 285212672, --dtb_offset, 300941312, --pagesize, 2048, --vendor_boot, vendor_boot.img.google] 02:28:55.317 [main] INFO Helper - vendor_boot.img.clear hash a63780c968a66a32503665d21da5ad11fb828aeb, vendor_boot.img.google hash a63780c968a66a32503665d21da5ad11fb828aeb 02:28:55.318 [main] INFO Helper - Hash verification passed: a63780c968a66a32503665d21da5ad11fb828aeb 02:28:55.320 [main] INFO cfig.bootimg.Signer - Adding hash_footer with verified-boot 2.0 style Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97) at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113) at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108) at cfig.packable.PackableLauncherKt.main(PackableLauncher.kt:108) Caused by: java.io.FileNotFoundException: build/unzip_boot/vendor_boot.avb.json (No such file or directory) at java.base/java.io.FileInputStream.open0(Native Method) at java.base/java.io.FileInputStream.open(FileInputStream.java:219) at java.base/java.io.FileInputStream.(FileInputStream.java:157) at com.fasterxml.jackson.core.JsonFactory.createParser(JsonFactory.java:1029) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3494) at cfig.bootimg.Signer$Companion.signAVB(Signer.kt:35) at cfig.bootimg.v3.VendorBoot.sign(VendorBoot.kt:316) at cfig.packable.VendorBootParser.pack(VendorBootParser.kt:45) ... 8 more

Task :pack FAILED

FAILURE: Build failed with an exception.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.4/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 21s 13 actionable tasks: 3 executed, 10 up-to-date

cfig commented 2 years ago

The "vendor_boot.img" has no AVB footer, it should be an internal testing image, which is even not sighed with any development keys. I will fix it soon ...

cfig commented 2 years ago

Fixed. Please have a try :)