[TOOL] Android Image Kitchen - Unpack/Repack Kernel Ramdisk [Win/Android/Linux/Mac]

Search This thread

Wolfcity

Recognized Contributor

Attachments

  • Screenshot_20171210-202105.png
    Screenshot_20171210-202105.png
    13.1 KB · Views: 169

osm0sis

Senior Recognized Developer / Contributor
Mar 14, 2012
16,773
40,451
Halifax
GT-i9250
Google Nexus 4
With this major release we finally get to bid good riddance to mkbootfs. The idea behind this is to ensure everything is as likely to work correctly as possible the first time, with no added command-line switches, no matter if OEM X adds crazy binary Y into /sbin and it requires stupid Z specific permissions, any file from the original unpacked ramdisk will now retain all of its original permissions. Please see my previous Development Update posts regarding AIK-mobile, AIK-Win32 and the NEW(!) macOS (Darwin) support for AIK-Linux for more details on the specific workarounds I had to employ for each platform.

Please also note that for now SIN support is absent from macOS in AIK-Linux because I cannot compile the SIN unpacking tool myself due to the closed-source nature of it. However, I have been in contact with @munjeni and he assures me that he will work on macOS cross-compiles of it when he has some time; hopefully we'll have full feature parity for macOS in AIK v3.1.

Special thanks to @nathanchance who spent several long hours with me trying to work out the totally crazy loop mount command behaviors on the Pixel 2; AIK-mobile would not support Pixel devices right now if it weren't for his excellent help! Check out Flash Kernel if you're on one of his supported devices.

Per usual, the AIK Build Farm has been updated accordingly. Happy hacking!

Flashlt v3.0 is available over in my Odds and Ends thread in case anyone missed it, as it's the perfect companion package to AIK-mobile. It now has some new features like flashing/dumping any device partition and Pixel 2 support.

NOTE: Downloads are hosted on the XDA DevDB Project Downloads page since AIK-mobile exceeds the 20mb zip attachment size limit. These are now also direct-linked in the OP which should get around any issues from downloading via Tapatalk/XDA Labs or without an account, as I'd noticed the download rates and counts were pretty much cut in half on the first versions served from the DevDB.

I work on these projects in my limited time off, so if you like the progress I'm making, or enjoy anything else I've done on xda, please do hit the donate link from my profile. Thanks for your support!


Android Image Kitchen v3.0:
- remove mkbootfs
- add proper cpio repacking, setting UID:GID to root:root to work around Windows incompatibilities
- use Windows "sudo" (Administrator privileges) with find to traverse 000 permissioned (restricted) directories for the cpio repack when detected
- use chmod during cleanup to ensure full removal of 000 permissioned (restricted) ramdisk directories
- when no file name is supplied use the first one found in the working directory
- actually fix AVB signature detection in some scenarios
- fix bug where cpio would dump to main working directory if ramdisk directory could not be accessed (e.g. open in another window/prompt)
- fix handling of filenames with ), as would fail inside if()else() statements
- explicitly set ramdisk root directory (booted "/") to 755 permissions (AOSP default) to avoid issues in some environments
- fix bizarre expansion of saved script paths if run from outside AIK directory
- fix to remain in start directory when cleanup run from outside AIK directory
- fix unpacking with relative filename in start directory when run from outside AIK directory
- update to the latest Cygwin binaries and libraries
- update dumpimage and mkimage binaries (2017.11)
- update mkbootimg, unpackbootimg, pxa-mkbootimg, pxa-unpackbootimg, unpackelf, futility, mkmtkhdr and dhtbsign binaries from my repos
- add current run directory to --avbkey name search list

AIK-mobile v3.0 + AIK-Linux v3.0:
- remove mkbootfs
- loopback mount a make_ext4fs .img to unpack the ramdisk into to allow proper cpio repacking within booted Android with full control of ramdisk properties (AIK-mobile)
- add remount.sh script and README into unmounted ramdisk directory in case the ramdisk .img becomes unmounted (AIK-mobile)
- call cleanup.sh from unpackimg.sh for cleanup functions
- make --sudo functionality the only unpack/repack method to ensure proper full control of ramdisk properties (dummy switch remains for backwards compatibility) (AIK-Linux)
- create magisk.img if needed (e.g. clean recovery flash of Magisk 14+) (AIK-mobile)
- possible fix for stuck Magisk module update message on some devices by ensuring install is to magisk_merge.img (AIK-mobile)
- bump Magisk template version to 1400 (AIK-mobile)
- actually fix AVB signature detection in some scenarios (AIK-Linux)
- fix unpacking with relative filename in start directory when run from outside AIK directory
- add a silent run of cleanup.sh to aik --uninstall functionality to avoid any mount issues (AIK-mobile)
- add macOS (Darwin support), with readlink, dd, cpio, file and tail functions/substitutions as workarounds for poor/broken distro binaries (AIK-Linux)
- add the latest MacPorts binaries and libraries for dd, cpio, file, lzop, tail and xz functionality on macOS (AIK-Linux)
- add workaround to use the latest installed JRE on macOS since it still ships with JDK 7, too old for AVBv1 signing (AIK-Linux)
- fix to ensure the ramdisk root is always root:root ownership (AIK-Linux)
- update dumpimage and mkimage binaries (2017.11)
- update mkbootimg, unpackbootimg, pxa-mkbootimg, pxa-unpackbootimg, unpackelf, futility, mkmtkhdr and dhtbsign binaries from my repos
- fix --avbkey name without path
- clean up --level output (AIK-Linux)
- add current run directory to --avbkey name search list


More on my own build changes in the commits here: https://github.com/osm0sis/mkbootimg; https://github.com/osm0sis/pxa-mkbootimg; https://github.com/osm0sis/unpackelf; https://github.com/osm0sis/futility; https://github.com/osm0sis/mkmtkhdr; https://github.com/osm0sis/dhtbsign.

Installation information and details on each edition can be found in the OP for Win32 or the AIK-mobile and AIK-Linux initial release notes.


If you are reporting a problem with your device, please clearly state your device name and model/variant as well as provide a link to the image file.
 
Last edited:

Alxoom33

Senior Member
May 18, 2011
5,184
1,857
New York
www.sack-ip.com
Google Pixel Tablet
With this major release we finally get to bid good riddance to mkbootfs. The idea behind this is to ensure everything is as likely to work correctly as possible the first time, with no added command-line switches, no matter if OEM X adds crazy binary Y into /sbin and it requires stupid Z specific permissions, any file from the original unpacked ramdisk will now retain all of its original permissions. Please see my previous Development Update posts regarding AIK-mobile, AIK-Win32 and the NEW(!) macOS (Darwin) support for AIK-Linux for more details on the specific workarounds I had to employ for each platform.

Please also note that for now SIN support is absent from macOS in AIK-Linux because I cannot compile the SIN unpacking tool myself due to the closed-source nature of it. However, I have been in contact with @munjeni and he assures me that he will work on macOS cross-compiles of it when he has some time; hopefully we'll have full feature parity for macOS in AIK v3.1.

Special thanks to @nathanchance who spent several long hours with me trying to work out the totally crazy loop mount command behaviors on the Pixel 2; AIK-mobile would not support Pixel devices right now if it weren't for his excellent help! Check out Flash Kernel if you're on one of his supported devices.

Per usual, the AIK Build Farm has been updated accordingly. Happy hacking!

Flashlt v3.0 is available over in my Odds and Ends thread in case anyone missed it, as it's the perfect companion package to AIK-mobile. It now has some new features like flashing/dumping any device partition and Pixel 2 support.

NOTE: Downloads are hosted on the XDA DevDB Project Downloads page since AIK-mobile exceeds the 20mb zip attachment size limit. These are now also direct-linked in the OP which should get around any issues from downloading via Tapatalk/XDA Labs or without an account, as I'd noticed the download rates and counts were pretty much cut in half on the first versions served from the DevDB.

I work on these projects in my limited time off, so if you like the progress I'm making, or enjoy anything else I've done on xda, please do hit the donate link from my profile. Thanks for your support!


Android Image Kitchen v3.0:
- remove mkbootfs
- add proper cpio repacking, setting UID:GID to root:root to work around Windows incompatibilities
- use Windows "sudo" (Administrator privileges) with find to traverse 000 permissioned (restricted) directories for the cpio repack when detected
- use chmod during cleanup to ensure full removal of 000 permissioned (restricted) ramdisk directories
- when no file name is supplied use the first one found in the working directory
- actually fix AVB signature detection in some scenarios
- fix bug where cpio would dump to main working directory if ramdisk directory could not be accessed (e.g. open in another window/prompt)
- fix handling of filenames with ), as would fail inside if()else() statements
- explicitly set ramdisk root directory (booted "/") to 755 permissions (AOSP default) to avoid issues in some environments
- fix bizarre expansion of saved script paths if run from outside AIK directory
- fix to remain in start directory when cleanup run from outside AIK directory
- fix unpacking with relative filename in start directory when run from outside AIK directory
- update to the latest Cygwin binaries and libraries
- update dumpimage and mkimage binaries (2017.11)
- update mkbootimg, unpackbootimg, pxa-mkbootimg, pxa-unpackbootimg, unpackelf, futility, mkmtkhdr and dhtbsign binaries from my repos
- add current run directory to --avbkey name search list

AIK-mobile v3.0 + AIK-Linux v3.0:
- remove mkbootfs
- loopback mount a make_ext4fs .img to unpack the ramdisk into to allow proper cpio repacking within booted Android with full control of ramdisk properties (AIK-mobile)
- add remount.sh script and README into unmounted ramdisk directory in case the ramdisk .img becomes unmounted (AIK-mobile)
- call cleanup.sh from unpackimg.sh for cleanup functions
- make --sudo functionality the only unpack/repack method to ensure proper full control of ramdisk properties (dummy switch remains for backwards compatibility) (AIK-Linux)
- create magisk.img if needed (e.g. clean recovery flash of Magisk 14+) (AIK-mobile)
- possible fix for stuck Magisk module update message on some devices by ensuring install is to magisk_merge.img (AIK-mobile)
- bump Magisk template version to 1400 (AIK-mobile)
- actually fix AVB signature detection in some scenarios (AIK-Linux)
- fix unpacking with relative filename in start directory when run from outside AIK directory
- add a silent run of cleanup.sh to aik --uninstall functionality to avoid any mount issues (AIK-mobile)
- add macOS (Darwin support), with readlink, dd, cpio, file and tail functions/substitutions as workarounds for poor/broken distro binaries (AIK-Linux)
- add the latest MacPorts binaries and libraries for dd, cpio, file, lzop, tail and xz functionality on macOS (AIK-Linux)
- add workaround to use the latest installed JRE on macOS since it still ships with JDK 7, too old for AVBv1 signing (AIK-Linux)
- fix to ensure the ramdisk root is always root:root ownership (AIK-Linux)
- update dumpimage and mkimage binaries (2017.11)
- update mkbootimg, unpackbootimg, pxa-mkbootimg, pxa-unpackbootimg, unpackelf, futility, mkmtkhdr and dhtbsign binaries from my repos
- fix --avbkey name without path
- clean up --level output (AIK-Linux)
- add current run directory to --avbkey name search list


More on my own build changes in the commits here: https://github.com/osm0sis/mkbootimg; https://github.com/osm0sis/pxa-mkbootimg; https://github.com/osm0sis/unpackelf; https://github.com/osm0sis/futility; https://github.com/osm0sis/mkmtkhdr; https://github.com/osm0sis/dhtbsign.

Installation information and details on each edition can be found in the OP for Win32 or the AIK-mobile and AIK-Linux initial release notes.


If you are reporting a problem with your device, please clearly state your device name and model/variant as well as provide a link to the image file.
Tried to use for repacking modified TWRP 3.2.0-1 boot image with custom splash on Pixel 2XL. Did not boot. Any suggestions?

Sent from my Pixel 2 XL using Tapatalk
 

martyfender

Senior Member
Mar 9, 2017
3,391
1,860
Indianapolis, IN
Tried to use for repacking modified TWRP 3.2.0-1 boot image with custom splash on Pixel 2XL. Did not boot. Any suggestions?

Sent from my Pixel 2 XL using Tapatalk

I had a similar issue with AIK 2.9 on Linux Mint, when unpacking the custom TWRP 3.0.2 for my Intel x86 tablet. I don't recall what I modified in the ramdisk, but it would not boot for me either. I did not, at the time, pursue it any further as I assumed AIK didn't work with TWRP.

Now I recall. I have 4 different Nextbook Ares 8As. I have V1.1.1, 1.2.0, V2.1.5 and V3.0.4. They all have the same Android 6.0.1 version with the same kernel version: 3.14.64-x86_64. One thing that is different on each device is the build number. In default properties I had changed the build fingerprint to match the current version of that tablet. @vampirefo had built the TWRP on a V1.0.8 version of the tablet. I don't recall if I modified anything else. Each tablet also has a different IFWI (Intel Firmware Interface) version.
 
Last edited:
  • Like
Reactions: Alxoom33

osm0sis

Senior Recognized Developer / Contributor
Mar 14, 2012
16,773
40,451
Halifax
GT-i9250
Google Nexus 4
Tried to use for repacking modified TWRP 3.2.0-1 boot image with custom splash on Pixel 2XL. Did not boot. Any suggestions?

Tried via the Materialised theme in recovery, or while booted?

I tested for 4 hours with @nathanchance and his Pixel 2 to work out all the weird Pixel 2 kinks so it should definitely work booted. I'll investigate the setup commands for using it in recovery again.

With v3.0 ditching mkbootfs TWRP and any .img should all repack perfectly in AIK-mobile as it would directly with AK2 in recovery or with straight Linux.
 
Last edited:

Alxoom33

Senior Member
May 18, 2011
5,184
1,857
New York
www.sack-ip.com
Google Pixel Tablet
Tried via the Materialised theme in recovery, or while booted?

I tested for 4 hours with @nathanchance and his Pixel 2 to work out all the weird Pixel 2 kinks so it should definitely work booted. I'll investigate the setup commands for using it in recovery again.

With v3.0 ditching mkbootfs TWRP and any .img should all repack perfectly in AIK-mobile as it would directly with AK2 in recovery or with straight Linux.
Thanks for the quick reply. Did you test on the P2XL, as it has its own quirks? I did the repacking in the new TWRP 3.2.0-1 I used the Adapt a Splash in the Black play theme v. 320Xv1. Flashed the modified image using TWRP in Boot. Rebooted and froze.

Tried again with updated AIK 3.0 Mobile signed.zip. Didn't boot, wound up on the G.
Perhaps I am doing something wrong? Should the modified Twrp image be extracted and flashed in
fastboot instad of Twrp.

Thank you for your kind efforts.

Sent from my Pixel 2 XL using Tapatalk
 
Last edited:

osm0sis

Senior Recognized Developer / Contributor
Mar 14, 2012
16,773
40,451
Halifax
GT-i9250
Google Nexus 4
Thanks for the quick reply. Did you test on the P2XL, as it has its own quirks? I did the repacking in the new TWRP 3.2.0-1 I used the Adapt a Splash in the Black play theme v. 320Xv1. Flashed the modified image using TWRP in Boot. Rebooted and froze.

Tried again with updated AIK 3.0 Mobile signed.zip. Didn't boot, wound up on the G.
Perhaps I am doing something wrong? Should the modified Twrp image be extracted and flashed in
fastboot instad of Twrp.

Thank you for your kind efforts.

It'll work if you do it manually while booted to Android (i.e. not recovery). I'm positive we tested the hell out of the Pixel 2 gremlins. There must just be something to fix up in the setup script for recovery execution. Can you upload me dumps of both the working (before) and broken (after) boot.img? The /tmp/recovery.log from directly after adapt splash was run will also be helpful.

Also worth mentioning it's going to be a losing battle on the Pixels since Magisk is going to start compressing the recovery parts into recovery.cpio.xz and the boot parts into boot.cpio.xz as files within the ramdisk on them or when it detects there's less than 500kb free, so there'll be more hoops to get through to modify the theme other than just unpacking the ramdisk going forward..
 
Last edited:

Alxoom33

Senior Member
May 18, 2011
5,184
1,857
New York
www.sack-ip.com
Google Pixel Tablet
It'll work if you do it manually while booted to Android (i.e. not recovery). I'm positive we tested the hell out of the Pixel 2 gremlins. There must just be something to fix up in the setup script for recovery execution. Can you upload me dumps of both the working (before) and broken (after) boot.img? The /tmp/recovery.log from directly after adapt splash was run will also be helpful.

Also worth mentioning it's going to be a losing battle on the Pixels since Magisk is going to start compressing the recovery parts into recovery.cpio.xz and the boot parts into boot.cpio.xz as files within the ramdisk on them or when it detects there's less than 500kb free, so there'll be more hoops to get through to modify the theme other than just unpacking the ramdisk going forward..
May I send it to you in an email attachment. Having a terrible time attaching files in taptalk.

Sent from my Pixel 2 XL using Tapatalk
 

Alxoom33

Senior Member
May 18, 2011
5,184
1,857
New York
www.sack-ip.com
Google Pixel Tablet
It'll work if you do it manually while booted to Android (i.e. not recovery). I'm positive we tested the hell out of the Pixel 2 gremlins. There must just be something to fix up in the setup script for recovery execution. Can you upload me dumps of both the working (before) and broken (after) boot.img? The /tmp/recovery.log from directly after adapt splash was run will also be helpful.

Also worth mentioning it's going to be a losing battle on the Pixels since Magisk is going to start compressing the recovery parts into recovery.cpio.xz and the boot parts into boot.cpio.xz as files within the ramdisk on them or when it detects there's less than 500kb free, so there'll be more hoops to get through to modify the theme other than just unpacking the ramdisk going forward..
I tried and got a message: This community does not support attachments of this type.
Can I provide them to you on Telegram or by email?

I got the same message in chrome and on Taptalk on my phone.

Sent from my Pixel 2 XL using Tapatalk
 
Last edited:

osm0sis

Senior Recognized Developer / Contributor
Mar 14, 2012
16,773
40,451
Halifax
GT-i9250
Google Nexus 4
I tried and got a message: This community does not support attachments of this type.
Can I provide them to you on Telegram or by email?

I got the same message in chrome and on Taptalk on my phone.

Nah no need, there basically shouldn't be a resulting image because the script didn't execute. See the TWRP Materialised theme thread. The fix that's needed will be on the theme side.
 
  • Like
Reactions: G.M.L

Alxoom33

Senior Member
May 18, 2011
5,184
1,857
New York
www.sack-ip.com
Google Pixel Tablet
Nah no need, there basically shouldn't be a resulting image because the script didn't execute. See the TWRP Materialised theme thread. The fix that's needed will be on the theme side.
So, I need to wait for an updated theme. Thank you! Sorry I couldn't be more of a help. PM me if there is anything I can test for you. I just have a hard time exchanging files on Taptalk, even on chrome.

Sent from my Pixel C using Tapatalk
 

Alxoom33

Senior Member
May 18, 2011
5,184
1,857
New York
www.sack-ip.com
Google Pixel Tablet
Until my friend and my mentor @z31s1g will update his perfect theme and because I don't want to provide here link with downloads from my theme if anyone want can go to my theme with the last fixes for Recovery Splash Picture from @osm0sis and I'm thanks him a lot for this!!!
Do you know if that fix works on the Pixel 2 XL? I tried it on my device and had difficulties... see my posts above. Basically I booted into a black screen.

Sent from my Pixel C using Tapatalk
 

Top Liked Posts

  • There are no posts matching your filters.
  • 7
    Well well, it's been a very long while, (roughly the age of a toddler 😛)... let's do things a little differently this time so people can have something hopefully of use until I get all the features and platforms complete... 😉

    Here is the first of likely a number of WIP AIK snapshots I'll do as things progress towards my release checklist. As it is a work in progress, expect some things could change before final, or possible regressions, but that I'm fairly happy with what I've got for the features implemented at this point. 🤠

    It's arm64 AIK-mobile only for now, zipped directly off of the device I'm currently writing it on. The other prerequisite is that you know what you're doing enough to have installed AIK-mobile v3.8 already and can unzip my attached zip over top of it, into /data/local, and know how to help figure things out if something goes wrong in your testing. 🙌

    AIK-mobile v3.9 WIP 20240416:
    - grow ext4 ramdisk.img to 192 MB for unpacking larger ramdisks (AIK-mobile)
    - add latest (1bbcd66) AOSP avbtool.py for AVBv2 signing support (QPython app install required on AIK-mobile)
    - retain and allow modifying important AVBv2 hash footer argument values
    - update loop mount logic to reduce errors (AIK-mobile)
    - update busybox binary (1.36.1) with the latest patches and fixes from my repo (AIK-mobile)
    - support detecting and adding any SEANDROIDENFORCE string before AVBv2 signing

    Lots more to come! 😎
  • 788
    Android Image Kitchen -- Unpack/Repack Kernel+Recovery Images, and Edit the ramdisk.

    Windows ports of the necessary Linux utils for Android image (kernel/recovery) mod work:

    mkbootimg, unpackbootimg: https://github.com/osm0sis/mkbootimg
    pxa-mkbootimg, pxa-unpackbootimg: https://github.com/osm0sis/pxa-mkbootimg
    elftool: https://github.com/osm0sis/elftool
    unpackelf: https://github.com/osm0sis/unpackelf
    mboot: https://github.com/osm0sis/mboot
    dumpimage, mkimage: https://www.denx.de/wiki/U-Boot/WebHome
    mkmtkhdr: https://github.com/osm0sis/mkmtkhdr
    loki_tool: https://github.com/djrbliss/loki
    futility: https://github.com/osm0sis/futility
    boot_signer.jar (requires JRE 8+): https://xdaforums.com/android/software-hacking/signing-boot-images-android-verified-t3600606
    blobpack, blobunpack: https://github.com/AndroidRoot/BlobTools
    dhtbsign: https://github.com/osm0sis/dhtbsign
    rkcrc: https://github.com/linux-rockchip/rkflashtool
    sony_dump: https://xdaforums.com/crossdevice-dev/sony/tool-unpack-format-sony-kernel-image-t3530077
    bzip2, cat, chmod, cpio, cut, dd, file, find, gzip, hexdump, lzop, printf, tail, truncate, xz;
    cygbz2-1, cygcrypto-1.1, cyggcc_s-1, cygiconv-2, cygintl-8, cyglzma-5, cyglzo2-2, cygmagic-1, cygncursesw-10.dll, cygstdc++-6.dll, cygssl-1.1, cygwin1, cygz: https://cygwin.com/
    lz4: https://lz4.github.io/lz4/
    sudo: https://github.com/mattn/sudo
    magic: https://www.darwinsys.com/file/

    See the Mobile Edition (AIK-mobile) initial release notes for the specifics on the native Android version.
    Likewise for the Linux/macOS Edition (AIK-Linux) initial release notes.

    My original intent was to have this package dependency-free, but as you can see, I did have to include Cygwin. Initially just for mkbootimg since the huaixzk standalone version wouldn't work (it wasn't loading the kernel as binary, thanks trevd); then I discovered that using the GNUWin32 cpio to unpack somehow didn't play nice with repacking the ramdisk in a usable state, so at that point I decided I might as well go Cygwin across the board. As it is, I've included the latest Cygwin-dependent executables and required libraries from their repos and built my own custom Cygwin image and ramdisk utilities built from the latest sources.

    Originally only for Google Pixel/Nexus/AOSP standard boot.img files, built-in support has now expanded to Google Pixel/AOSP vendor_boot.img files, Android Verified Boot (AVBv1)/ChromeOS/SignBlob signed boot.img files, Barnes & Noble Nook "Green Loader" signed boot.img files, Samsung/Spreadtrum DHTB header signed boot.img files, the Samsung/Marvell PXA1088/1908 board boot.img variant (AOSP-PXA), Loki patched boot.img files, amonet patched boot.img files, Sony SIN signed/packaged kernel.elf extraction, Sony ELF kernel.elf files, Intel OSIP Android image files, DENX U-Boot uImage files, Rockchip KRNL signed ramdisk image files, MTK headers for kernel/ramdisk, and LG Bump/Samsung SEAndroid footers for boot.img.

    The main advantage here is you don't need Cygwin shell or PERL scripts. Other guides exist but none of them are universal for target device, compression and/or developed for Windows, Android ARM/x86/MIPS + ARM64/x86_64/MIPS64, and now macOS. With this universality in mind I've automated the whole process with batch/shell scripts.

    My development work on my many projects comes out of my free time, so if you enjoy this project or anything else I've done on xda, please consider sponsoring my ongoing work using my GitHub Sponsors profile. For a one-time donation you can hit the donate link from my profile. Thank you for your support!


    Instructions

    1)
    Unzip.
    2) Either use the command-line "unpackimg <image-filename.img>", or simply drag-and-drop the image. This will split the image and unpack the ramdisk to a subdirectory.
    3) Alter the ramdisk as you like.
    4) The repackimg script requires no input and simply recombines the previously split kernel with the newly packed modified ramdisk using all the original image information (which was also split and saved).
    5) The cleanup script resets the folder to its initial state, removing the split_img+ramdisk directories and any new packed ramdisk or image files.

    There are a few optional, advanced command-line arguments for repackimg: "--original", which will cause it to repack using the original split ramdisk instead of repacking, this is useful for testing or trimming dumps; "--origsize", which will cause it to repack then pad it to the size of the original image, this is useful for repacking dumps to then be fastboot flashed; "--level" with 1-9 and possibly 0 allows changing the compression level used to repack to more closely match the original; "--avbkey" with (optionally path and) a keyname allows changing from the default AOSP verity key; "--forceelf" to attempt to make an older unpacked Sony ELF file repack as an ELF.

    All scripts also allow unpacking/repacking with the current directory instead of the AIK directory if "--local" is the first command-line argument.

    Supported ramdisk compression formats in the *-ramdiskcomp file are gzip, lzop, lzma, xz, bzip2, lz4, lz4-l (for lz4 legacy), cpio (for uncompressed), and empty (for no ramdisk).

    Usage is similar for the Android and Linux versions, again, just review the release notes for them.

    Hopefully this is some help to someone. It's been extremely useful for me in my messing around with kernel ramdisks, which is why I created it in the first place.

    Enjoy!
    Questions, comments and feedback welcome.



    If you are reporting a problem with your device, please clearly state your device name and model/variant, attach a log, as well as provide a link to the image file.


    Downloads

    Android.Image.Kitchen.v3.8-Win32.zip

    UPDATE-AIK.Mobile.Installer.v3.8-ALL-signed.zip

    AIK-Linux-v3.8-ALL.tar.gz


    Source Code

    https://github.com/osm0sis/Android-Image-Kitchen


    Credits & Thanks: All authors of the included binaries and libraries for their amazing work, as linked (or linked via GitHub) above. Peteragent5, alansj & iridaki for the general methods used in their PERL scripts and Linux guides. SuperR. & tobias.waldvogel for the general methods used in their kernel.elf unpacking scripts. _that and rayman for the general methods used to repack a working boot.blob. Chainfire for the ChromeOS and SEAndroid general methods. cybojenix for the Bump general method. xyz` & k4y0z for the amonet general method.

    Thanks to Goatshocker for testing out things for the HTC image issues, leading to the workaround and subsequent fix, avinashrocks1990 & tajimura for testing out compression support and the large pagesize fix, civato for testing out dtb support, talich for testing out the Linux version, shoey63 for testing out Linux + ELF support, moonbutt74 for testing out Android-x86 support, nathanchance for testing out the new AIK-mobile cpio method on his Pixel 2, leading to important fixes for its support, shakalaca for the great help with completing and testing Intel OSIP support, and Postman1year & CXZa for their help testing to find out the workaround for the Cygwin cut + symlink regression issues. Huge thank you to trevd and Modding.MyMind/SHM for all the contributing work they've each done and support they've provided.

    Disclaimer: Naturally, you take all the responsibility for what happens to your device when you start messing around with things.

    Download counts:

    AIK - v1.0: 1540; +HTCFix: 430. v1.5: 4718. v1.6: 3556. v1.8: 8678; +Lok2Img: 1629. v1.9: 2580. v2.0: 22886. v2.2: 20522. v2.3: 14524. v2.4: 84432; +LokiAddon: 20071. v2.5: 5004. v2.6: 9354. v2.7: 5442. v2.8: 6639. v2.9: 7672. v3.0: 2810. v3.1: 6502. v3.2: 27104. v3.3: 17736. v3.4: 25988. v3.5: 19051. v3.6: 32472. v3.7: 21457.
    Mobile - v1.0: 311. v1.1: 265. v1.2: 302. v1.3: 100. v1.4: 486. v1.5: 224. v1.6: 3303. v1.7: 7798. v1.8: 16286. v1.9: 3800. v2.0: 5444. v2.1: 2526. v2.2: 926. v2.3: 1346. v2.4: 18426. v2.5: 2586. v2.6: 6068. v2.7: 2936. v2.8: 3932. v2.9: 4181. v3.0: 1301. v3.1: 3300. v3.2: 3254. v3.3: 6824. v3.4: 10786. v3.5: 8624. v3.6: 14020. v3.7: 8951.
    Linux - v1.0: 75. v1.1: 208. v1.2: 233. v1.3: 112. v1.4: 421. v1.5: 173. v1.6: 1838. v1.7: 2596. v1.8: 4818. v1.9: 604; +v1.9.1: 1068. v2.0: 1836. v2.1: 1240. v2.2: 466. v2.3: 522. v2.4: 8126. v2.5: 1052. v2.6: 2018. v2.7: 1248. v2.8: 2486. v2.9: 5057. v3.0: 1455. v3.1: 2957. v3.2: 14508. v3.3: 10046. v3.4: 16294. v3.5: 12651. v3.6: 16478. v3.7: 12927.
    159
    AIK should be universal for Android devices that accept AOSP, ELF, OSIP, U-Boot and KRNL format images in theory, but there is always a chance it doesn't work for your device due to image packing differences, etc. Here is a running list of confirmed working and questionably/confirmed not working devices. If your device isn't in either list odds are that it will still work fine.

    Known Working Devices

    Amazon Fire HD 10
    Asus Nexus 7 (2012, 2013)
    Asus Transformer Pad
    Asus Zenfone (2, 5)
    Auchan QiLive (Q5, Q7)
    Barnes & Noble Nook ( , HD+, 7)
    BQ Aquaris M8
    Coolpad Catalyst
    Essential PH-1
    Google Pixel (C, , XL, 2, 2 XL, 3, 3 XL, 3a, 3a XL, 4, 4 XL, 4a, 4a 5G, 5, 5a)
    Huawei Ascend Y300
    Huawei Mate 8
    Huawei Nexus 6P
    Huawei U8800 Ideos X5
    HTC Nexus 9
    HTC One (M7, M8, S, X)
    HTC Vivid/Raider 4G
    HP Slate 21
    LeEco Le Pro3
    Lenovo A706
    Lenovo K900
    Lenovo Vibe K5
    LG G(2, 2 Mini, 3, 3 Stylus, 5)
    LG GPad (7.0, 8.3, X 8.0)
    LG Nexus (4, 5, 5X)
    LG Optimus (3D, 4X HD)
    LG Stylo 3 Plus
    LG V(10, 20)
    Micromax Ninja/Bolt A27
    Motorola Moto G (2013, 2014)
    Motorola Moto X 2014
    Motorola Nexus 6
    Nextbit Robin
    OnePlus (One, 2, X, 3, 3T, 5, 5T, 6, 6T, 7, 7 Pro, 7T, 7T Pro, 8, 8 Pro, 8T, 9R, 9, 9 Pro)
    OnePlus Nord ( , N10 5G, N100)
    Pantech Vega Iron
    Pantech Vega Secret Note
    Samsung Galaxy A3 2016
    Samsung Galaxy Ace II X
    Samsung Galaxy Core Mini 4G
    Samsung Galaxy Mega
    Samsung Galaxy Nexus
    Samsung Galaxy Note (2, 3, 4, Pro 12.2)
    Samsung Galaxy S(3, 3 Mini, 4, 5, 6, 7, 8, 8+)
    Samsung Galaxy Star
    Samsung Galaxy Tab (2 7.0, 3 10.1, 4 7.0, 4 8.0, 4 10.1, A 7.0, A 10.1, Pro 8.4)
    Samsung Galaxy Victory
    Samsung Galaxy Xcover 3
    Samsung Nexus 10
    Sony Xperia (Arc S, M, Neo, Neo V, SP, Tab Z4, Z, Z1, Z5)
    Spice Mi-355 Stellar Craze
    Vodafone Smart Ultra 6
    Xiaomi Mi Pad
    Xiaomi Poco X2
    Xiaomi Redmi (6A, Note 3 Pro)


    Confirmed Not Working Devices
    • Blackview BV4000 - some newer MediaTek (MTK) devices use special image signing that adds a "BFBF" pre-header signature. While present on multiple MTK devices, it only appears to be enforced by the bootloader on some. See this post.
    • HTC Desire 326G, Huawei Honor Bee, Huawei MediaPad T1 7.0 - some newer Spreadtrum devices use special image signing that adds a "SPRD-SECUREFLAG" pre-header signature, so images will unpack/repack but most likely won't boot unless run through their internal signing tool. See this post.
    • Nibiru V05-A, Pipo Max - some RockChip (RK) devices use a variant of the AOSP image format with extra checksums and hidden sections with extra data. There is not currently an open source tool that can handle repacking these. See this post.
    • Samsung Galaxy S (Advance, Captivate, Vibrant), Samsung Galaxy S2, Samsung Galaxy Note & Samsung Galaxy Tab - contain zImage (kernel) + ramdisk (possibly within the zImage) but are the "headerless" Linux kernel blob format and require a full cross-compiler to repack correctly. See this post.
    • Samsung [various] - the image and SEANDROIDENFORCE footer are followed by a signature that, while present on many Samsung devices, only appears to be enforced by the bootloader on some. See this post.
    • Skyworth 50G2A TV - some newer MediaTek (MTK) devices use special image part signing that adds a 256-byte checksum/signature to both Image.gz-dtb/zImage-dtb (kernel) and ramdisk.cpio.gz, so images will unpack/repack but most likely won't boot unless run through their internal signing tool. See this post.
    • Xiaomi Mi Box 3S, ZTE B860H STB - some newer Amlogic devices use special image signing that adds an "AMLSECU!" signature within the header and appears to encrypt the ramdisk, so the image itself will unpack/repack but cannot be re-signed, and the ramdisk cannot be unpacked or modified.

    Note: For devices requiring Loki patched images (e.g. LG G2, AT&T Samsung Galaxy S4), your device's aboot.img dump must be in the script directory to Re-Loki. (Thank you to jeboo for the original one-way Lok2Img Workaround's binary source, used prior to the official Loki Tool gaining un-Loki support).


    Release Notes

    Windows:
    v1.0 - Dec 30, 2012 - Initial release.    
    v1.5 - May 6, 2013 - Linked.
    v1.6 - Sep 16, 2013 - Linked.
    v1.8 - Dec 9, 2013 - Linked.
    v1.9 - Jun 7, 2014 - Linked.
    v2.0 - Aug 3, 2014 - Linked.
    v2.2 - Mar 25, 2015 - Linked.
    v2.3 - Oct 11, 2015 - Linked.
    v2.4 - Feb 8, 2016 - Linked.
    v2.5 - Jan 26, 2017 - Linked.
    v2.6 - Feb 27, 2017 - Linked.
    v2.7 - May 1, 2017 - Linked.
    v2.8 - Jun 5, 2017 - Linked.
    v2.9 - Sep 14, 2017 - Linked.
    v3.0 - Dec 14, 2017 - Linked.
    v3.1 - Jan 7, 2018 - Linked.
    v3.2 - Mar 19, 2018 - Linked.
    v3.3 - Jul 23, 2018 - Linked.
    v3.4 - Oct 28, 2018 - Linked.
    v3.5 - Apr 17, 2019 - Linked.
    v3.6 - Sep 22, 2019 - Linked.
    v3.7 - May 22, 2020 - Linked.
    v3.8 - May 5, 2021 - Linked.

    Android:
    v1.0 - Mar 23, 2014 - Linked. (ARM only)
    v1.1 - Apr 19, 2014 - Linked. (ARM only)
    v1.2 - May 15, 2014 - Linked. (ARM only)
    v1.3 - Jun 7, 2014 - Linked. (ARM, x86 with emulation)
    v1.4 - Jun 17, 2014 - Linked. (ARM, x86 with emulation)
    v1.5 - Aug 3, 2014 - Linked. (32bit only)
    v1.6 - Aug 19, 2014 - Linked. (32bit only)
    v1.7 - Dec 26, 2014 - Linked. (32bit only)
    v1.8 - Mar 25, 2015 - Linked. (32bit only)    
    v1.9 - Oct 11, 2015 - Linked. (32bit only)
    v2.0 - Dec 7, 2015 - Linked.
    v2.1 - Feb 8, 2016 - Linked.
    v2.2 - Mar 16, 2016 - Linked.
    v2.3 - Apr 1, 2016 - Linked.
    v2.4 - Apr 20, 2016 - Linked.
    v2.5 - Jan 26, 2017 - Linked.
    v2.6 - Feb 27, 2017 - Linked.
    v2.7 - May 1, 2017 - Linked.
    v2.8 - Jun 5, 2017 - Linked.
    v2.9 - Sep 14, 2017 - Linked.
    v3.0 - Dec 14, 2017 - Linked.
    v3.1 - Jan 7, 2018 - Linked.
    v3.2 - Mar 19, 2018 - Linked.
    v3.3 - Jul 23, 2018 - Linked.
    v3.4 - Oct 28, 2018 - Linked.
    v3.5 - Apr 17, 2019 - Linked.
    v3.6 - Sep 22, 2019 - Linked.
    v3.7 - May 22, 2020 - Linked.
    v3.8 - May 5, 2021 - Linked.

    Linux/macOS:
    v1.0 - Apr 11, 2014 - Linked. (x86, Linux only)
    v1.1 - Apr 19, 2014 - Linked. (x86, Linux only)
    v1.2 - May 15, 2014 - Linked. (x86, Linux only)
    v1.3 - Jun 7, 2014 - Linked. (x86, Linux only)
    v1.4 - Jun 17, 2014 - Linked. (x86, Linux only)
    v1.5 - Aug 3, 2014 - Linked. (x86, Linux only)
    v1.6 - Aug 19, 2014 - Linked. (x86, Linux only)
    v1.7 - Dec 26, 2014 - Linked. (Linux only)
    v1.8 - Mar 25, 2015 - Linked. (Linux only)
    v1.9 - Oct 11, 2015 - Linked. (Linux only)
    v2.0 - Dec 7, 2015 - Linked. (Linux only)
    v2.1 - Feb 8, 2016 - Linked. (Linux only)
    v2.2 - Mar 16, 2016 - Linked. (Linux only)
    v2.3 - Apr 1, 2016 - Linked. (Linux only)
    v2.4 - Apr 20, 2016 - Linked. (Linux only)
    v2.5 - Jan 26, 2017 - Linked. (Linux only)
    v2.6 - Feb 27, 2017 - Linked. (Linux only)
    v2.7 - May 1, 2017 - Linked. (Linux only)
    v2.8 - Jun 5, 2017 - Linked. (Linux only)
    v2.9 - Sep 14, 2017 - Linked. (Linux only)
    v3.0 - Dec 14, 2017 - Linked.
    v3.1 - Jan 7, 2018 - Linked.
    v3.2 - Mar 19, 2018 - Linked.
    v3.3 - Jul 23, 2018 - Linked.
    v3.4 - Oct 28, 2018 - Linked.
    v3.5 - Apr 17, 2019 - Linked.
    v3.6 - Sep 22, 2019 - Linked.
    v3.7 - May 22, 2020 - Linked.
    v3.8 - May 5, 2021 - Linked.




    Everyone please let me know if AIK works for your devices or if you encounter any problems, so I can make these lists more comprehensive. 👍

    If you are reporting a problem with your device, please clearly state your device name and model/variant, attach a log, as well as provide a link to the image file.
    63
    Android ARM/ARM64, x86/x86_64 + MIPS/MIPS64 version of Android Image Kitchen! Now you can easily modify ramdisks on the go! :D

    AIK-mobile:
    - Almost complete feature parity with the Windows/Linux version, including compression support, --original to repack with the original ramdisk, --origsize to pad the repacked image to the size of the original, --level to change the compression level of the repacked ramdisk, --avbkey to change the key used for Android Verified Boot (AVBv1) signing of the repacked image, and --forceelf to make an older unpacked Sony ELF file repack as an ELF. The only thing missing is --local since AIK-mobile's ability to unpack/repack while booted in Android is too complex to easily allow moving the unpack/repack directory around.
    - The flashable zip installs AIK for your Android architecture (ARM/ARM64, x86/x86_64, MIPS/MIPS64) to /data/local/AIK-mobile/ and a helper script created at /system/xbin/aik (alternately /su/bin/aik or /sbin/supersu/bin/aik if SuperSU systemless root is detected, or, /sbin/.magisk/img/aik-mobile/bin/aik or /data/adb/modules/aik-mobile/bin/aik if Magisk is detected).
    - Type "aik" in Terminal Emulator to automatically go to the install directory and get a root prompt, then use, eg. "unpackimg.sh boot.img" to get started.
    - Running su -c "/data/local/AIK-mobile/bin/aik --restore" will recreate the aik helper script in the appropriate place (see above), e.g. after a ROM flash with su.img SuperSU or magisk.img Magisk removed.
    - "aik --uninstall" should be self-explanatory, and "--help" is also available for all included scripts.

    Now also possible to run entirely from a file explorer app, see this post for details!

    To run from TWRP (recovery shell), follow the instructions in this post.


    mkbootimg, unpackbootimg: https://github.com/osm0sis/mkbootimg
    pxa-mkbootimg, pxa-unpackbootimg: https://github.com/osm0sis/pxa-mkbootimg
    elftool: https://github.com/osm0sis/elftool
    unpackelf: https://github.com/osm0sis/unpackelf
    mboot: https://github.com/osm0sis/mboot
    dumpimage, mkimage: https://www.denx.de/wiki/U-Boot/WebHome
    mkmtkhdr: https://github.com/osm0sis/mkmtkhdr
    loki_tool: https://github.com/djrbliss/loki
    futility: https://github.com/osm0sis/futility
    boot_signer-dexed.jar: https://xdaforums.com/android/software-hacking/signing-boot-images-android-verified-t3600606
    blobpack, blobunpack: https://github.com/AndroidRoot/BlobTools
    dhtbsign: https://github.com/osm0sis/dhtbsign
    rkcrc: https://github.com/rockchip-linux/rkflashtool
    sony_dump: https://xdaforums.com/crossdevice-dev/sony/tool-unpack-format-sony-kernel-image-t3530077
    busybox: https://busybox.net/; https://github.com/osm0sis/android-busybox-ndk
    file, magic: https://www.darwinsys.com/file/
    xz: https://tukaani.org/xz/
    lz4: https://lz4.github.io/lz4/

    GitHub: https://github.com/osm0sis/Android-Image-Kitchen/commits/AIK-mobile

    Originally all but busybox were compiled natively on my Nexus 7 2013 using a KBox2 build environment, now cross-compiled with the NDK on my PC and my own AIK Build Farm. :cowboy:

    Notes: You may delete /data/local/AIK-mobile/bin/busybox if you want to use your ROM's busybox instead.


    Linux will be next on the list, and should be pretty easy since I did all of the shell script leg work with the Android version. ;) (y)


    If you are reporting a problem with your device, please clearly state your device name and model/variant as well as provide a link to the image file.
    34
    Another longtime request. New Linux version of Android Image Kitchen up in the OP! Bringing my updated binaries back home! ;)

    Now also supporting macOS out-of-the-box (i.e. no Homebrew or MacPorts addons needed) with v3.0+!

    AIK-Linux:
    - Complete feature parity with the Windows/Android versions, including compression support, --original to repack with the original ramdisk, --origsize to pad the repacked image to the size of the original, --level to change the compression level of the repacked ramdisk, --avbkey to change the key used for Android Verified Boot signing of the repacked image, and --forceelf to make an older unpacked Sony ELF file repack as an ELF.
    - Unpacks as root by default to maintain full control over all repacked ramdisk file ownership/permissions, --nosudo argument available to attempt unpack/repack as user if possible.
    - All scripts allow unpacking/repacking with the current directory instead of the AIK directory if --local is the first command-line argument.
    - "--help" is also available for all included scripts.
    - Unpack with "tar -xzvf AIK-Linux-*.tar.gz" in your home directory then you can go to AIK-Linux and use, eg. "./unpackimg.sh boot.img" to get started.

    mkbootimg, unpackbootimg: https://github.com/osm0sis/mkbootimg
    pxa-mkbootimg, pxa-unpackbootimg: https://github.com/osm0sis/pxa-mkbootimg
    elftool: https://github.com/osm0sis/elftool
    unpackelf: https://github.com/osm0sis/unpackelf
    mboot: https://github.com/osm0sis/mboot
    dumpimage, mkimage: https://www.denx.de/wiki/U-Boot/WebHome
    mkmtkhdr: https://github.com/osm0sis/mkmtkhdr
    loki_tool: https://github.com/djrbliss/loki
    futility: https://github.com/osm0sis/futility
    boot_signer.jar (requires JRE 8+): https://xdaforums.com/android/software-hacking/signing-boot-images-android-verified-t3600606
    blobpack, blobunpack: https://github.com/AndroidRoot/BlobTools
    dhtbsign: https://github.com/osm0sis/dhtbsign
    rkcrc: https://github.com/rockchip-linux/rkflashtool
    sony_dump: https://xdaforums.com/crossdevice-dev/sony/tool-unpack-format-sony-kernel-image-t3530077
    lz4: https://lz4.github.io/lz4/
    magic: https://www.darwinsys.com/file/
    cpio, dd, file, lzop, tail, truncate, xz; libiconv.2, libintl.8, liblzma.5, liblzo2.2, libmagic.1 (macOS): https://www.macports.org/
    gzip, bzip2, lzop, xz; awk, basename, bash, cpio, cut, dd, dirname, env, file, find, grep, hexdump, java, printf, rev, sed, stat, sudo, tail, truncate, wc (Linux): (required system packages/commands)

    GitHub: https://github.com/osm0sis/Android-Image-Kitchen/commits/AIK-Linux

    Most included binaries were compiled using my patched crosstool-ng i686 and x86_64 Cygwin to Linux cross-compiler toolchains, now as part of my own AIK Build Farm. :cowboy:

    macOS compiles built with osxcross. Instructions available via my Build Farm post.

    I'm not going to interfere with anyone's Linux installations, nor needlessly bundle a ton of commonly available binaries, so if you need extra compression support you need to have those packages installed. In my Ubuntu Server VM gzip, bzip2 and xz/lzma all seem to come pretty much by default, and "apt-get install lzop bsdmainutils" handles lzop and hexdump. Java depends on your setup, but openjdk-8-jre will be what most will want if not already included. lz4 would be the only one that would have to be built from source on many distros, so I have considered it an exception, built it and included it myself.

    Thanks to shoey63 and talich for testing. Cheers! :)


    If you are reporting a problem with your device, please clearly state your device name and model/variant as well as provide a link to the image file.
    30
    It's been a busy few weeks!

    After a Herculean effort to get the DENX U-Boot utilities to build with the NDK, which required me firing up my Ubuntu VM (for more than testing for once) and then hacking both the NDK toolchains and tool sources, say hello to U-Boot support! It's a *nix standard, and pretty rare on Android but it does exist (e.g. LG Optimus 3D) and I'm extremely pleased to add support for this completely different type of image format to AIK! :cowboy:

    I then added support for the Samsung/Marvell variant of the AOSP standard for their pxa1088 board, which I've termed "AOSP-PXA", by updating a modified bootimg tools fork to continue the excellent work done by @ketut.kumajaya and @akuhak. There aren't a lot of known examples of these either (e.g. Samsung Galaxy Core Mini 4G, Samsung Galaxy Tab 4 7.0 & Samsung Galaxy Xcover 3) but it was pretty straightforward and removes another entry from the "Confirmed Not Working" list in the OPs. ;)

    Next up, Sony SIN packaging/signature unpack support, thanks to the brilliant research and development of @munjeni for his closed-source kernel_dump binary, of which he also supplied the builds.

    Last but not least, it turns out the signatures I identified on the Pixels last month almost immediately went into enforcement after my release.. and it turns out we misunderstood the nature of these signatures so I have reverted the unpackbootimg patch that was originally submitted to me for the Xioami Mi MAX where these signatures were first found; while reappending the original signature was reported to have worked for the Mi MAX, the Pixel bootloader appears to be enforcing it even more strictly and so they must be signed correctly. Luckily, thanks to the great and ongoing work of @Chainfire we've got a cross-platform working signing tool, but it does rely on a Java-like VM - Java Runtime Environment (JRE) 8+ for Windows/Linux to run correctly - and we can use the Dalvik VM on Android without any issues drawing in part from my previous experiments in this area.

    Since the original AVB signing OEM keys are naturally unavailable this presents a bit of a problem and there are numerous keys already floating around including SuperSU, ElementalX and a few custom Pixel ROMs. To be sensible we the modding community should all try to use the same keys for interoperability, to make sure different mods stack correctly and avoid any possible problems with encrypted devices, so I have generated the required extra certificate for AVB signing from the usual AOSP testkeys and would encourage all other boot image modifying projects to use them; they are available for use on my GitHub. They are the default for AIK, but a user may specify --avbkey on the repackimg commandline to force the use of other keys. The keys may be placed in the main AIK directory and specified without path with only the base name of the files (e.g. --avbkey supersu for supersu.pk8 and supersu.x509.der) or with a path, but still omitting the file extensions to keep it simple (e.g. --avbkey /path/to/ex for /path/to/ex.pk8 and /path/to/ex.x509.der). Hopefully that'll cover all the bases and some other projects will come around to using the testkeys.

    Per usual, the AIK Build Farm has been updated accordingly. Enjoy! :)

    NOTE: Downloads have switched to being hosted on the XDA DevDB Project Downloads page since AIK-mobile now exceeds the 20mb zip attachment size limit.

    I work on these projects in my limited time off, so if you like the progress I'm making, or enjoy anything else I've done on xda, please do hit the donate link from my profile. Thanks for your support!


    Android Image Kitchen v2.8:
    - general cleanup using if/else and absolute paths wherever possible and removing hidden hideErrors option for simplicity since it's no longer needed
    - add detection if running directly from a command prompt and do not pause if so
    - add error catching for unsupported/unrecognized formats on repack, and compression formats on unpack
    - update unpackbootimg and unpackelf binaries from my repos
    - add DENX U-Boot uImage detection and use dumpimage and mkimage to unpack/repack
    - add Samsung/Marvell boot.img variant (AOSP-PXA) and use pxa1088-unpackbootimg and pxa1088-mkbootimg to unpack/repack
    - add Sony SIN signature/packaging detection and use kernel_dump to extract the kernel.elf
    - add Android Verified Boot (AVB) signature footer detection and use BootSignature.jar to re-sign with AOSP testkeys
    - dump AVB type (boot/recovery) to -avbtype so that it may be changed for repack if desired
    - refactor repackimg commandline parameter parsing and introduce --avbkey to specify custom keys (accepts path and/or filename minus extensions) to use for AVB re-signing
    - update slimmed magic file (from file 5.31) with my own fixes
    - update to the latest Cygwin binaries and libraries

    AIK-mobile v2.8 + AIK-Linux v2.8:
    - general cleanup using absolute paths wherever possible
    - add error catching for unsupported formats on repack, and compression formats on unpack
    - fix unpack error output on some xz/lzma ramdisks by using included xz binary instead of busybox (AIK-mobile)
    - update unpackbootimg and unpackelf binaries from my repos
    - add DENX U-Boot uImage detection and use dumpimage and mkimage to unpack/repack
    - add Samsung/Marvell boot.img variant (AOSP-PXA) and use pxa1088-unpackbootimg and pxa1088-mkbootimg to unpack/repack
    - add Sony SIN signature/packaging detection and use kernel_dump to extract the kernel.elf
    - add Android Verified Boot (AVB) signature footer detection and use BootSignature.jar to re-sign with AOSP testkeys
    - dump AVB type (boot/recovery) to -avbtype so that it may be changed for repack if desired
    - refactor repackimg commandline parameter parsing and introduce --avbkey to specify custom keys (accepts path and/or filename minus extensions) to use for AVB re-signing
    - actually fix chromeos subfolder permissions during install (AIK-mobile)
    - fix unpackimg --help to show --sudo option (AIK-Linux)
    - update file binary (5.31) (AIK-mobile)
    - update slimmed magic file (from file 5.31) with my own fixes


    More on my own build changes in the commits here: https://github.com/osm0sis/mkbootimg; https://github.com/osm0sis/pxa1088-mkbootimg; https://github.com/osm0sis/unpackelf.

    Installation information and details on each edition can be found in the OP for Win32 or the AIK-mobile and AIK-Linux initial release notes.


    If you are reporting a problem with your device, please clearly state your device name and model/variant as well as provide a link to the image file.