androidlinux-kernelandroid-sourceandroid-kernelcustom-rom

Stock boot.img not booting after re-packing


I have a fully functional and previously tested official boot.img for my device.

But when I tried to unpack it and repack it again(with no modifications whatsoever), the kernel fails to start as usual.

I get a "Kernel is not seandroid enforcing" text on the top left of my screen when I try to boot the new kernel and the device seems to be stuck showing the logo.

I'm using the bootimg-tools located here: https://github.com/pbatard/bootimg-tools

Here's how I'm unpacking it:

$ ./unmkbootimg -i stock/boot.img 
kernel written to 'kernel' (11273048 bytes)
ramdisk written to 'ramdisk.cpio.gz' (2856269 bytes)

To rebuild this boot image, you can use the command:
  mkbootimg --base 0 --pagesize 2048 --kernel_offset 0x00008000 --ramdisk_offset 0x01000000 --second_offset 0x00f00000 --tags_offset 0x00000100 --cmdline 'console=ttyS1,115200n8' --kernel kernel --ramdisk ramdisk.cpio.gz -o stock/boot.img

I'm using the same exact command in the unpack command to re-pack it:

$ ./mkbootimg --base 0 --pagesize 2048 --kernel_offset 0x00008000 --ramdisk_offset 0x01000000 --second_offset 0x00f00000 --tags_offset 0x00000100 --cmdline 'console=ttyS1,115200n8' --kernel kernel --ramdisk ramdisk.cpio.gz -o stock/boot.img

I have no idea whats the issue here, I'm not even sure if this is the correct way to make a zImage bootable.

Any help would be greatly appreciated.

Thank you.


Solution

  • I needed to use up-to-date tools.

    It seems the boot.img file format changed in the past few years.

    The working tools are located here: https://github.com/GameTheory-/mktool/tree/master/tools . The .jar tool didn't work for me but the backend tools did :)

    * To unpack *

    $ ./unpackbootimg -i stock/boot.img -o stockoutdir
    BOARD_KERNEL_CMDLINE console=ttyS1,115200n8
    BOARD_KERNEL_BASE 00000000
    BOARD_NAME 
    BOARD_PAGE_SIZE 2048
    BOARD_HASH_TYPE sha1
    BOARD_KERNEL_OFFSET 00008000
    BOARD_RAMDISK_OFFSET 01000000
    BOARD_SECOND_OFFSET 00f00000
    BOARD_TAGS_OFFSET 00000100
    BOARD_DT_SIZE 673792
    

    * To pack again *

    $ ./mkbootimg --kernel stockoutdir/boot.img-zImage --ramdisk stockoutdir/boot.img-ramdisk.gz --cmdline "console=ttyS1,115200n8" --base 00000000 --pagesize 2048 --dt stockoutdir/boot.img-dt --kernel_offset 00008000 --ramdisk_offset 01000000 --second_offset 00f00000 --tags_offset 00000100 --hash sha1 -o custom.img