
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)