diff --git a/ARM/README.md b/ARM/README.md index b8c8642..05d632c 100755 --- a/ARM/README.md +++ b/ARM/README.md @@ -1,8 +1,60 @@ Original Source Modified By: -Modding.MyMind XDA +Modding.MyMind XDA \ ModdingMyMind AF Built to be used on Arm devices. Move the bash binary to /system/xbin. -The rest must remain in the project folder \ No newline at end of file +The rest must remain in the project folder. + +### Unpack Boot.img or Recovery.img: +root@android:/data/local/tmp/mkbootimg_tool/ARM # ./mkboot recovery_stock.img recoveryfolder + +Unpack & decompress recovery_stock.img to recoveryfolder + +****** WARNING ******* WARNING ******* WARNING ****** + +This image is built using NON-standard mkbootimg! +BASE is 0x001fff00 +KERNEL_OFFSET is 0x00408100 +RAMDISK_OFFSET is 0x00100100 +SECOND_OFFSET is 0x00d00100 + +You can modify mkbootimg.c with the above value(s) + +****** WARNING ******* WARNING ******* WARNING ****** + + kernel : zImage + ramdisk : ramdisk + page size : 2048 + kernel size : 6597520 + ramdisk size : 3141533 + base : 0x001fff00 + kernel offset : 0x00408100 + ramdisk offset : 0x00100100 + second_offset : 0x00d00100 + tags offset : 0x00000100 + cmd line : vmalloc=384M mem=2044m@0x200000 psci=enable mmcparts=mmcblk0:p1(vrl),p2(vrl_backup),p7(modemnvm_factory),p18(splash),p22(dfx),p23(modemnvm_backup),p24(modemnvm_img),p25(modemnvm_system),p26(modem),p27(modem_dsp),p28(modem_om),p29(modemnvm_update),p30(3rdmodem),p31(3rdmodemnvm),p32(3rdmodemnvmbkp) + +ramdisk is gzip format. +Unpack completed. + +root@android:/data/local/tmp/mkbootimg_tools-master/ARM # + +### Repack Boot.img or Recovery.img: +root@android:/data/local/tmp/mkbootimg_tools-master # ./mkboot recoveryfolder recovery_stock.img +mkbootimg from recoveryfolder/img_info. + kernel : zImage + ramdisk : new_ramdisk.gz + page size : 2048 + kernel size : 6597520 + ramdisk size : 3142833 + base : 0x001fff00 + kernel offset : 0x00408100 + ramdisk offset : 0x00100100 + tags offset : 0x00000100 + cmd line : vmalloc=384M mem=2044m@0x200000 psci=enable mmcparts=mmcblk0:p1(vrl),p2(vrl_backup),p7(modemnvm_factory),p18(splash),p22(dfx),p23(modemnvm_backup),p24(modemnvm_img),p25(modemnvm_system),p26(modem),p27(modem_dsp),p28(modem_om),p29(modemnvm_update),p30(3rdmodem),p31(3rdmodemnvm),p32(3rdmodemnvmbkp) +Kernel size: 6597520, new ramdisk size: 3142833, recovery_stock.img: 9744384. +recovery_stock.img has been created. +... +root@android:/data/local/tmp/mkbootimg_tools-master # \ No newline at end of file diff --git a/ARM/mkboot b/ARM/mkboot index ab57ca4..b76ce04 100755 --- a/ARM/mkboot +++ b/ARM/mkboot @@ -153,7 +153,7 @@ if [ -e $2 ]; then fi tempdir=$2 mkdir -p "$tempdir" -pout "Unpack & decompress $1 to $2" +pout "\nUnpack & decompress $1 to $2" #get boot.img info cp -f $1 $tempdir/ @@ -184,11 +184,84 @@ ramdisk_offset=$((ramdisk_addr-base_addr)) second_offset=$((second_addr-base_addr)) tags_offset=$((tags_addr-base_addr)) +######################################################### + +non_standard_base=$((tags_addr-0x00000100)) # Need this to get the TRUE Base Address +non_standard_base_addr=$(printf "0x%08x" $non_standard_base) +base_addr_verify=$(printf "0x%08x" $base_addr) base_addr=$(printf "0x%08x" $base_addr) -kernel_offset=$(printf "0x%08x" $kernel_offset) -ramdisk_offset=$(printf "0x%08x" $ramdisk_offset) -second_offset=$(printf "0x%08x" $second_offset) -tags_offset=$(printf "0x%08x" $tags_offset) + +if [ $base_addr == $non_standard_base ]; then + base_addr=$(printf "0x%08x" $base_addr) +else + base_addr=$(printf "0x%08x" $non_standard_base_addr) +fi + +# Accurate offsets used on images with non standard mkbootimg.c +kernel_offset_ns=$((kernel_addr-non_standard_base)) +ramdisk_offset_ns=$((ramdisk_addr-non_standard_base)) +second_offset_ns=$((second_addr-non_standard_base)) +tags_offset_ns=$((tags_addr-non_standard_base)) + +# Do the Offsets match with the Base Address for standard mkbootimg.c? +kernel_offset_s=$((kernel_addr-0x00008000)) +ramdisk_offset_s=$((ramdisk_addr-0x01000000)) +second_offset_s=$((second_addr-0x00f00000)) +tags_offset_s=$((tags_addr-0x00000100)) + +if [ $non_standard_base -eq $kernel_offset_s ]; then + kernel_offset=$(printf "0x%08x" $kernel_offset) +else + kernel_offset_ns=$(printf "0x%08x" $kernel_offset_ns) + kernel_offset=$(printf "0x%08x" $kernel_offset_ns) + kernel_offset_warning=$kernel_offset_ns +fi + +if [ $non_standard_base -eq $ramdisk_offset_s ]; then + ramdisk_offset=$(printf "0x%08x" $ramdisk_offset) +else + ramdisk_offset_ns=$(printf "0x%08x" $ramdisk_offset_ns) + ramdisk_offset=$(printf "0x%08x" $ramdisk_offset_ns) + ramdisk_offset_warning=$ramdisk_offset_ns +fi + +if [ $non_standard_base -eq $second_offset_s ]; then + second_offset=$(printf "0x%08x" $second_offset) +else + second_offset_ns=$(printf "0x%08x" $second_offset_ns) + second_offset=$(printf "0x%08x" $second_offset_ns) + second_offset_warning=$second_offset_ns +fi + +if [ $base_addr_verify != $non_standard_base_addr ]; then + base_warning=$non_standard_base_addr +fi + +tags_offset=$(printf "0x%08x" $tags_offset_ns) + +# Below are the known offsets for non standard mkbootimg.c +if [[ ! -z $kernel_offset_warning ]] || [[ ! -z $ramdisk_offset_warning ]] || [[ ! -z $second_offset_warning ]]; then + pout "\n****** WARNING ******* WARNING ******* WARNING ******\n" + pout "This image is built using NON-standard mkbootimg!" +fi +if [ ! -z $base_warning ]; then + pout "BASE is $base_warning" +fi +if [ ! -z $kernel_offset_warning ]; then + pout "KERNEL_OFFSET is $kernel_offset_ns" +fi +if [ ! -z $ramdisk_offset_warning ]; then + pout "RAMDISK_OFFSET is $ramdisk_offset_ns" +fi +if [ ! -z $second_offset_warning ]; then + pout "SECOND_OFFSET is $second_offset_ns" +fi +if [[ ! -z $kernel_offset_warning ]] || [[ ! -z $ramdisk_offset_warning ]] || [[ ! -z $second_offset_warning ]]; then + pout "\nYou can modify mkbootimg.c with the above value(s)" + pout "\n****** WARNING ******* WARNING ******* WARNING ******" +fi + +######################################################### k_count=$(((kernel_size+page_size-1)/page_size)) r_count=$(((ramdisk_size+page_size-1)/page_size)) @@ -237,22 +310,23 @@ if [ $? -gt 0 ]; then #try lz4 $lz4 -d ../ramdisk.gz ../ramdisk.cpio if [ $? -gt 0 ]; then - pout "ramdisk is unknown format,can't unpack ramdisk" + pout "\nramdisk is unknown format,can't unpack ramdisk" busybox rm ../ramdisk.cpio else - pout "ramdisk is lz4 format." + pout "\nramdisk is lz4 format." $cpio -i -d -m --no-absolute-filenames 2>/dev/null < ../ramdisk.cpio fi else - pout "ramdisk is lzma format." + pout "\nramdisk is lzma format." $lzma -d -c ../ramdisk.gz | $cpio -i -d -m --no-absolute-filenames 2>/dev/null fi else - pout "ramdisk is gzip format." + pout "\nramdisk is gzip format." $gzip -d -c ../ramdisk.gz | $cpio -i -d -m --no-absolute-filenames 2>/dev/null fi #Unpack Finish to exit. -pout "Unpack completed." +pout "Unpack completed.\n" exit +