[U-Boot] supported image compression types?
Robert P. J. Day
rpjday at crashcourse.ca
Mon Jul 18 12:16:15 CEST 2016
reading u-boot wiki page on image formats:
http://www.denx.de/wiki/view/DULG/UBootImages
wherein one reads:
"Compression Type (Provisions for uncompressed, gzip, bzip2, lzo;
Currently supported: uncompressed, gzip, bzip2, lzo)."
clearly, that wiki page list is incomplete, but there's more here.
first, the full list appears to live in include/image.h:
/*
* Compression Types
*/
enum {
IH_COMP_NONE = 0, /* No Compression Used */
IH_COMP_GZIP, /* gzip Compression Used */
IH_COMP_BZIP2, /* bzip2 Compression Used */
IH_COMP_LZMA, /* lzma Compression Used */
IH_COMP_LZO, /* lzo Compression Used */
IH_COMP_LZ4, /* lz4 Compression Used */
IH_COMP_COUNT,
};
but how those types are selected seems a bit inconsistent.
first, gzip appears to be automatic(?) for everyone, from
include/config_defaults.h:
#define CONFIG_GZIP 1
however, of all 5 types of compression, only one has a Kconfig file
entry, LZ4, in lib/Kconfig:
menu "Compression Support"
config LZ4
bool "Enable LZ4 decompression support"
help
If this option is set, support for LZ4 compressed images
is included. The LZ4 algorithm can run in-place as long as the
compressed image is loaded to the end of the output buffer, and
trades lower compression ratios for much faster decompression.
NOTE: This implements the release version of the LZ4 frame
format as generated by default by the 'lz4' command line tool.
This is not the same as the outdated, less efficient legacy
frame format currently (2015) implemented in the Linux kernel
(generated by 'lz4 -l'). The two formats are incompatible.
endmenu
for consistency, isn't it standard for any CONFIG_* settings to be
defined in Kconfig files? the other compression types seem to be
selectable simply by manually setting them in config files, as in:
$ grep -r "define CONFIG_LZMA" *
include/configs/bfin_adi_common.h:#define CONFIG_LZMA
include/configs/VCMA9.h:#define CONFIG_LZMA
include/configs/ap143.h:#define CONFIG_LZMA
include/configs/qemu-mips.h:#define CONFIG_LZMA
include/configs/iconnect.h:#define CONFIG_LZMA
include/configs/ap121.h:#define CONFIG_LZMA
include/configs/nsa310s.h:#define CONFIG_LZMA
include/configs/mv-plug-common.h:#define CONFIG_LZMA
include/configs/ib62x0.h:#define CONFIG_LZMA
include/configs/qemu-mips64.h:#define CONFIG_LZMA
include/configs/tplink_wdr4300.h:#define CONFIG_LZMA
include/configs/sandbox.h:#define CONFIG_LZMA
include/configs/smdk2410.h:#define CONFIG_LZMA
$
should not all compression types get their own entries in lib/Kconfig?
anyway, i'll at least update the wiki page.
movin' on ...
rday
--
========================================================================
Robert P. J. Day Ottawa, Ontario, CANADA
http://crashcourse.ca
Twitter: http://twitter.com/rpjday
LinkedIn: http://ca.linkedin.com/in/rpjday
========================================================================
More information about the U-Boot
mailing list