forked from AKuHAK/pxa-mkbootimg
-
-
Notifications
You must be signed in to change notification settings - Fork 15
osm0sis/pxa-mkbootimg
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Samsung/Marvell PXA1088 and PXA1908 Board boot image tools More information on the PXA1088 and PXA1908 bootimg header differences here: https://forum.xda-developers.com/showthread.php?p=53464533 Known PXA1088 devices (unknown = 0x02000000): Samsung Galaxy Core Mini 4G (SM-G3568 and SM-G2568V), Samsung Galaxy Tab 4 7.0 (SM-T230, SM-T230NU and SM-T231) Known PXA1908 devices (unknown = 0x02000000): Samsung Galaxy J1 (SM-J100F, SM-J100FN and SM-J100M), Samsung Galaxy Tab 4 7.0 4G LTE (SM-T2397) (unknown = 0x02800000): Samsung Galaxy J1 Ace (SM-J110F and SM-J110G) (unknown = 0x03000000): Samsung Galaxy Core Prime VE LTE (SM-G361F), Samsung Galaxy Grand Prime (SM-G531F, SM-G531M and SM-G531Y), Samsung Galaxy J1 Ace (SM-J110M), Samsung Galaxy Xcover 3 (SM-G388F) * These lists are by no means exhaustive Unpack boot.img: $ mkdir boot $ ./pxa-unpackbootimg -i boot.img -o boot Unpack ramdisk: $ mkdir -p boot/ramdisk $ cd boot/ramdisk/ $ gunzip -c ../boot.img-ramdisk.gz | cpio -i $ cd ../ Unpack uImage (for PXA1908): $ dumpimage -l boot.img-zImage > uImage.txt $ dumpimage -i boot.img-zImage -p 0 Image.gz $ gunzip Image.gz Repack ramdisk: Ramdisk can be packed with minigzip if you need exactly the same output image as input. $ mkbootfs ramdisk | minigzip > boot.img-ramdisk-new.gz but if you don't want to get the same result, you can use simple gzip $ mkbootfs ramdisk | gzip > boot.img-ramdisk-new.gz Repack uImage (for PXA1908): zImage is packed with gzip maximum compression without header. zImage.new - your altered unpacked kernel. $ gzip -n -9 -k zImage.new WARNING!!! Repacked image will always have a different hashsum because uImage has a timestamp in its header so mkimage will take the machine time, but the resulting uImage will still be valid. uImage header information can be found in uImage.txt. $ mkimage -A arm64 -O linux -T kernel -C gzip -a 01000000 -e 01000000 -d zImage.new.gz -n "pxa1928dkb linux" "boot.img-zImage.new" Repack boot.img: unpackbootimg now has an --unknown value flag so you can alter it if needed. $ ./pxa-mkbootimg --kernel boot.img-zImage.new \ --ramdisk boot.img-ramdisk-new.gz --dt boot.img-dtb \ --signature boot.img-signature --unknown 0x03000000 -o ../boot-new.img $ cd ../ The signature doesn't seem to be enforced, so you can try without the --signature option. By comparing boot image to recovery image, I found a different signature and of course a different ramdisk but the rest is the same, including kernel and device tree table. On devices with unknown=0x03000000 the signature also has the 16 byte "SEANDROIDENFORCE" string prepended to it. You can use only this to get rid of the annoying red phrase "android is not seandroid enforcing". Of course the resulting image will never be identical without it but is still valid. So without the signature you can use the following: $ ./pxa-mkbootimg --kernel boot.img-zImage.new \ --ramdisk boot.img-ramdisk-new.gz --dt boot.img-dtb \ --unknown 0x03000000 -o ../boot-new.img $ echo "SEANDROIDENFORCE" >> boot-new.img Unknown seems to be different in different devices so a flag was added for writing it. To generalize 0x02000000 is used for PXA1088 and 0x02800000 or 0x03000000 for PXA1908. This is possibly a version number denoting the signature/kernel differences. To confirm these tools' reliability, you can unpack and then repack original boot/recovery image without modification. You will get two identical images, which can be checked using a diff tool. DTB image has different magic in header: 'PXA-DT' for PXA-1088 and 'PXA-19xx' for PXA1908. Generate kernel spesific device tree table for PXA1088: $ ./pxa1088-dtbTool -o boot.img-dt-new -p kernel/scripts/dtc/ kernel/arch/arm/boot/dts/ or for PXA1908 $ ./pxa1908-dtbTool -o boot.img-dt-new -p kernel/scripts/dtc/ kernel/arch/arm64/boot/dts/ Repack a new recovery as a flashable Odin: $ tar -H ustar -c recovery-testkey.img > recovery-testkey.img.tar $ md5sum -t recovery-testkey.img.tar >> recovery-testkey.img.tar $ mv recovery-testkey.img.tar recovery-testkey.img.tar.md5 DISCLAIMER: USE THESE TOOLS AT YOUR OWN RISK, I DON'T OWN ANY PXA1088 OR PXA1908 DEVICES FOR TESTING kumajaya, June 2014 AKuHAK, October 2016 / August 2017 osm0sis, June 2017 -
About
Boot image tool variants for the Marvell PXA1088 and PXA1908 boards
Resources
Stars
Watchers
Forks
Languages
- C 97.4%
- Makefile 2.6%