Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mkbootimg: Add the hability to use the files generated by unpackbootimg #18

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

osvcos
Copy link

@osvcos osvcos commented Mar 23, 2022

Added the parameter --from-unpackbootimg-files in order to use the files generated by the tool instead of typing each parameter one by one

Added the parameter --from-unpackbootimg-files <preffix> in order to use the files generated by the tool instead of typing each parameter one by one
@osm0sis
Copy link
Owner

osm0sis commented Apr 19, 2022

Thanks! I had planned something similar using a directory as the input arg to read things from. Not sure when I'll have time to review this since I'm working full time and have a 2 month old baby at home I need to help out with, but I'll take a look when I can!

@osvcos
Copy link
Author

osvcos commented Apr 19, 2022

I understand. Thank you for your time.

@yetnelson
Copy link

hi @osvcos, I fetched your PR and when run unpack and repack.

➜ redmi_cactus git:(master) ✗ ./mkbootimg/unpackbootimg -i boot.img -o boot2
ANDROID! magic found at: 0
BOARD_KERNEL_CMDLINE bootopt=64S3,32S1,32S1 buildvariant=user
BOARD_KERNEL_BASE 0x40000000
BOARD_NAME
BOARD_PAGE_SIZE 2048
BOARD_HASH_TYPE sha1
BOARD_KERNEL_OFFSET 0x00008000
BOARD_RAMDISK_OFFSET 0x11b00000
BOARD_SECOND_OFFSET 0x00f00000
BOARD_TAGS_OFFSET 0x07880000
BOARD_OS_VERSION 9.0.0
BOARD_OS_PATCH_LEVEL 2020-08
BOARD_HEADER_VERSION 1
BOARD_HEADER_SIZE 1648
➜ redmi_cactus git:(master) ✗ ./mkbootimg/mkbootimg --from-unpackbootimg-files boot2/boot.img -o booty.img
error: could not load second 'boot2/boot.img-second'

There is no second stage in unpacked folder. Im doing with device readmi6a.

➜ redmi_cactus git:(master) ✗ tree boot2/
boot2/
├── boot.img-base
├── boot.img-board
├── boot.img-cmdline
├── boot.img-hashtype
├── boot.img-header_version
├── boot.img-kernel
├── boot.img-kernel_offset
├── boot.img-os_patch_level
├── boot.img-os_version
├── boot.img-pagesize
├── boot.img-ramdisk
├── boot.img-ramdisk_offset
├── boot.img-second_offset
└── boot.img-tags_offset

0 directories, 14 files

How to skip not exists file? Sorry to raise issue in here.

@osvcos
Copy link
Author

osvcos commented May 5, 2022

Hi @yetnelson, thank you. I assumed that second stage should exists.

@yetnelson
Copy link

Thanks @osvcos , It works now;)

I noticed the size of output file is smaller than original file.

➜ redmi_cactus git:(master) ✗ ls -l *.img
-rw-r--r--@ 1 Nelson  staff    67108864  5  5 09:16 boot.img
-rw-r--r--  1 Nelson  staff     9078784  5  5 20:08 booty.img

Im worry about to flash the new img. Could u give some suggest or help check it? The original img uploaded at Google Driver

@osvcos
Copy link
Author

osvcos commented May 5, 2022

To test my changes I downloaded a patched image of your device, and the sizes are very similar. You don't have to flash it to your device, you could test it withfastboot boot <image> in fastboot mode.

@yetnelson
Copy link

Pass test with fastboot boot <image>.
Thanks the project and @osvcos really solved me.

mkbootimg.c Outdated Show resolved Hide resolved
@lebigmac1
Copy link

lebigmac1 commented Mar 21, 2023

Hello. Great work guys. The binary is very easy to compile even for beginners like myself ;)

It works great on most boot.imgs that I've tested it with but unfortunately I ran into a problem with one particular Xiaomi device (Poco X3 NFC). I tried to unpack its boot.img and repack it using mkbootimg binary but sadly it throws this error when trying to repack everything.

error: unsupported page size 0

This is how I am calling the mkbootimg binary

mkbootimg --header_version 2 --os_version 10.0.0 --os_patch_level 2020-08 --kernel out/kernel --ramdisk out/ramdisk --dtb out/dtb --pagesize 0x00001000 --base 0x00000000 --kernel_offset 0x00008000 --ramdisk_offset 0x01000000 --second_offset 0x00f00000 --tags_offset 0x00000100 --dtb_offset 0x0000000001f00000 --cmdline "$cmdline" -o test.img

Here is the stock boot.img in question:
https://mega.nz/file/uMJkDZzY#uhI7W-9tvDC3wFVnznBp2iYUqrBfhPvT5vwLY7gevh4

I'm not expert but I have reasons to believe that 0x00001000 is actually equivalent to 2048 and not 0. Then why is mkbootimg complaining about a pagesize value of 0 ? Thanks for your assistance!

Kind regards

@osvcos
Copy link
Author

osvcos commented Mar 22, 2023

Hello @lebigmac1. The --pagesize parameters expects a base 10 number. You provided a hexadecimal number (base 16). The correct form would be:
--pagesize 4096

@lebigmac1
Copy link

lebigmac1 commented Mar 22, 2023

WORKS! Thank you very much!

@osvcos do you have any idea how to run the mkbootimg in a bash script? I always get
error: unknown argument 'androidboot.hardware=qcom'
on --cmdline parameter when trying to pipe all those arguments back into the mkbootimg binary dynamically...
For some reason when I do that in a script mkbootimg doesn't properly understand the cmdline string but when I copy paste the same arguments into terminal and try it manually it works?!

I guess I am searching for something like this:
https://github.com/xiaolu/mkbootimg_tools

Do you think that old bash script could still work with this latest mkbootimg binary? Or do you have something similar in your repository that I could try? Thanks!

I originally wanted to use AIK-mobile by the very talented Mr. Osm0sis to unpack and repack the boot.img dynamically on the fly but sadly I failed at installing it systemfully on my Android device :(

@lebigmac1
Copy link

Nevermind I fixed it by coming up with my own RepackBoot program :D
Thanks for your great work guys! @osm0sis @osvcos

More info here: (for some reason the credits don't show up in the program itself?! - need to update that...)
https://github.com/lebigmac1/Universal-RepackBoot-for-Android-by-lebigmac

@darker16

This comment was marked as spam.

Repository owner locked as spam and limited conversation to collaborators Sep 24, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants