Search code examples
linux-kernelkernelopenwrt

LEDE: The uImage compress type not supported


I am trying to build kernel image in LEDE for Atmel at91 SAMA5D3 platforms and the compressed type is XZ. Once uImage is successfully, I transferred this image to my SD card and tried to boot up with it. However, the boot up is always failed with following message:

Booting uImage … The uImage compress type not supported SD/MMC: Failed to load image

I tried with some other’s image and that will work well so I am not sure if there is any kernel config I also need to enable or disable.

Could anyone help with this? Thanks!


Solution

  • The message seems to indicate that whatever boot program that you're using to load the Linux kernel does not have any decompression capability.
    Therefore instead of expecting the boot program to perform the decompression, you need to build a kernel image that is self-decompressing, i.e. a zImage.
    If you insist, you can wrap the zImage in a uImage header, but since the zImage is self-extracting the image needs to be marked as "uncompressed".

    Note that the file type uImage is produced by the U-Boot utility mkimage, and this type of image is for the benefit of U-Boot.
    Other boot programs may or may not recognize a uImage.
    Boot programs for ARM are expected to support zImage.

    Your post is sparse in terms of details.
    If all you did was select XZ instead of the default gzip for the Kernel compression mode in the kernel's menuconfig, and did build a zImage, then the mkimage was used with incorrect arguments.
    A zImage within a uImage must be marked as "uncompressed".