參考資訊:
https://knulli.org/guides/h700-firmware-extract/
https://github.com/anestisb/android-unpackbootimg
步驟如下:
$ cd $ git clone https://github.com/anestisb/android-unpackbootimg $ cd android-unpackbootimg $ make $ cd $ wget https://github.com/steward-fu/website/releases/download/rg28xx/RG28XX-V1.0.4-EN16GB-240511.7z $ 7za x RG28XX-V1.0.4-EN16GB-240511.7z $ sudo fdisk -l RG28XX-V1.0.4-EN16GB-240511.IMG Disk RG28XX-V1.0.4-EN16GB-240511.IMG: 14.48 GiB, 15552479232 bytes, 30375936 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: AB6F3888-569A-4926-9668-80941DCB40BC Device Start End Sectors Size Type RG28XX-V1.0.4-EN16GB-240511.IMG1 73728 8880127 8806400 4.2G Microsoft basic data RG28XX-V1.0.4-EN16GB-240511.IMG2 8880128 8945663 65536 32M Microsoft basic data RG28XX-V1.0.4-EN16GB-240511.IMG3 8945664 8978431 32768 16M Microsoft basic data RG28XX-V1.0.4-EN16GB-240511.IMG4 8978432 9109503 131072 64M Microsoft basic data RG28XX-V1.0.4-EN16GB-240511.IMG5 9109504 25886719 16777216 8G Microsoft basic data RG28XX-V1.0.4-EN16GB-240511.IMG6 25886720 30373887 4487168 2.1G Microsoft basic data $ dd if=RG28XX-V1.0.4-EN16GB-240511.IMG of=boot.img bs=512 skip=8978432 count=131072 $ file boot.img boot.img: Android bootimg, kernel (0x40080000), ramdisk (0x42000000), page size: 2048 $ ./android-unpackbootimg/unpackbootimg -i boot.img -o boot_image/ BOARD_KERNEL_CMDLINE BOARD_KERNEL_BASE 40078000 BOARD_NAME sun50i_arm64 BOARD_PAGE_SIZE 2048 BOARD_HASH_TYPE sha1 BOARD_KERNEL_OFFSET 00008000 BOARD_RAMDISK_OFFSET 01f88000 BOARD_SECOND_OFFSET 00e88000 BOARD_TAGS_OFFSET fff88100 BOARD_DT_SIZE 2 $ cd boot_image/ $ file boot.img-zImage boot.img-zImage: Linux kernel ARM64 boot executable Image, little-endian, 4K pages $ od -A d -t x1 boot.img-zImage | grep '1f 8b 08' 9489504 1f 8b 08 00 00 00 00 00 02 03 94 3c cb 76 db b8 13476832 00 00 00 00 00 00 00 00 1f 8b 08 00 00 00 00 00 $ dd if=boot.img-zImage of=kernel bs=1 count=9489504 $ dd if=boot.img-zImage of=config.gz bs=1 skip=9489504 $ strings kernel | grep Linux Linux version 4.9.170 (cc@cc-H81M-S1) (gcc version 5.3.1 20160412 (Linaro GCC 5.3-2016.05) ) #178 SMP PREEMPT Fri May 10 17:37:24 CST 2024 Linux $ zcat config.gz | head # # Automatically generated file; DO NOT EDIT. # Linux/arm64 4.9.170 Kernel Configuration # CONFIG_ARM64=y CONFIG_64BIT=y CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_MMU=y CONFIG_DEBUG_RODATA=y CONFIG_ARM64_PAGE_SHIFT=12