Firmware pro zařízení v Linuxu jsou standardně v adresáři /lib/firmware a velikost tohoto adresáře může být 150–800 MB. Již od jádra 5.3 mohou být jednotlivé soubory komprimovány pomocí xz, který zkomprimuje soubory zhruba na třetinu. Běžné distribuce tuto kompresi zatím moc nevyužívají.
Jedním z problémů je, že se musí použít xz s kontrolním součtem CRC32, nebo žádným. Kdežto výchozím kontrolním součtem pro xz je CRC64. Také výchozí velikost slovníku při volbě –9 je příliš velká, doporučuje se tedy používat xz -C crc32 --lzma2=dict=2MiB.
V jádře 5.19 se však objeví nová možnost komprimovat soubory firmware pomocí zstd, který má rychlejší dekompresi a dává tady větší smysl pro použití na malých embedded zařízeních. Velikost souborů firmware komprimovaných zstd bude však o trochu větší než při kompresi xz.
Stará volba jádra FW_LOADER_COMPRESS, která označovala jen xz bude nyní předvolbou pro dvě volby FW_LOADER_COMPRESS_XZ a FW_LOADER_COMPRESS_ZSTD.
Podobně mohou být komprimována samotná jádra a obrazy initrd v /boot (to distribuce většinou používají) i jednotlivé moduly v /lib/modules/, tedy soubory .ko (to distribuce většinou nepoužívají).
(zdroj: phoronix)