Если залезть в конфигуратор ядра (у меня для экспериментов оказалось ядро 4.4), то уже в самом начале предлагается выбрать каким алгоритмом сжимать ядро. На выбор предлагаются gzip, bzip, lzma, xz, lzo, lz4.
Естественно сразу же захотелось узнать чем они отличаются.
Неожиданно для меня, в интернете найти сразу все алгоритмы в какой-нибудь одной статье-сравнении мне не удалось. Лучшая из них, на мой взгляд эта https://interface31.ru/tech_it/2014/09/ ... linux.html.
Однако, по скольку и там оказалось не все, то я решил свести все заинтересовавшее меня алгоритмы в одно место. Может еще кому-нибудь кроме меня пригодится.
Как не трудно догадаться все алгоритмы сжатия имеют три основных параметра для сравнения: время сжатия, время декомпрессии и эффективность сжатия (отношение исходного размера сжимаемого к уже сжатому). Еще интересный параметр указан в статье по ссылке выше - это требовательность к ресурсам (процессору и памяти) во время работы.
Собственно в самой документации линукса можно почерпнуть эти ответы (как их себе представляют Линус с командой - думаю это достаточно авторитетное мнение).
Под спойлером некий компилят из английского текста нарытого по вышеозначенной теме в разных пунктах конфигуратора nconfig (по кнопке F2)
The linux kernel is a kind of self-extracting executable. Several compression algorithms are available, which differ in efficiency, compression and decompression speed. Compression speed is only relevant when building a kernel. Decompression speed is relevant at each boot.
If you have any problems with bzip2 or lzma compressed kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older version of this functionality (bzip2 only), for 2.4, was supplied by Christian Ludwig)
High compression options are mostly useful for users, who are low on disk space (embedded systems), but for whom ram size matters less.
If in doubt, select 'gzip'
______________
gzip
The old and tried gzip compression. It provides a good balance between compression ratio and decompression speed.
_____________
bzip2
Its compression ratio and speed is intermediate. Decompression speed is slowest among the choices. The kernel size is about 10% smaller with bzip2, in comparison to gzip. Bzip2 uses a large amount of memory. For modern kernels you will need at least 8MB RAM or more for booting.
_______________
LZMA
This compression algorithm's ratio is best. Decompression speed is between gzip and bzip2. Compression is slowest. The kernel size is about 33% smaller with LZMA in comparison to gzip.
______________
XZ
XZ uses the LZMA2 algorithm and instruction set specific BCJ filters which can improve compression ratio of executable code. The size of the kernel is about 30% smaller with XZ in comparison to gzip. On architectures for which there is a BCJ filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ will create a few percent smaller kernel than plain LZMA.
The speed is about the same as with LZMA: The decompression speed of XZ is better than that of bzip2 but worse than gzip and LZO. Compression is slow.
________________
LZO
Its compression ratio is the poorest among the choices. The kernel size is about 10% bigger than gzip; however its speed (both compression and decompression) is the fastest.
_________________
LZ4
The old and tried gzip compression. It provides a good balance between compression ratio and decompression speed.
If you have any problems with bzip2 or lzma compressed kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older version of this functionality (bzip2 only), for 2.4, was supplied by Christian Ludwig)
High compression options are mostly useful for users, who are low on disk space (embedded systems), but for whom ram size matters less.
If in doubt, select 'gzip'
______________
gzip
The old and tried gzip compression. It provides a good balance between compression ratio and decompression speed.
_____________
bzip2
Its compression ratio and speed is intermediate. Decompression speed is slowest among the choices. The kernel size is about 10% smaller with bzip2, in comparison to gzip. Bzip2 uses a large amount of memory. For modern kernels you will need at least 8MB RAM or more for booting.
_______________
LZMA
This compression algorithm's ratio is best. Decompression speed is between gzip and bzip2. Compression is slowest. The kernel size is about 33% smaller with LZMA in comparison to gzip.
______________
XZ
XZ uses the LZMA2 algorithm and instruction set specific BCJ filters which can improve compression ratio of executable code. The size of the kernel is about 30% smaller with XZ in comparison to gzip. On architectures for which there is a BCJ filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ will create a few percent smaller kernel than plain LZMA.
The speed is about the same as with LZMA: The decompression speed of XZ is better than that of bzip2 but worse than gzip and LZO. Compression is slow.
________________
LZO
Its compression ratio is the poorest among the choices. The kernel size is about 10% bigger than gzip; however its speed (both compression and decompression) is the fastest.
_________________
LZ4
The old and tried gzip compression. It provides a good balance between compression ratio and decompression speed.
Из чего можно сделать пару выводов:Ядро linux является своего рода самораспаковывающимся исполняемым файлом. Доступно несколько алгоритмов сжатия, которые отличаются эффективностью, скоростью сжатия и декомпрессии. Скорость сжатия важна только при сборке ядра. Скорость распаковки важна при каждой загрузке.
Если у вас возникли проблемы со сжатыми ядрами bzip2 или lzma, напишите мне (Ален Кнафф) <alain@knaff.lu>. (Старая версия этой функциональности (только bzip2), для 2.4, была предоставлена Кристианом Людвигом)
Варианты высокой степени сжатия в основном полезны для пользователей, у которых мало места на диске (встроенные системы), но для которых размер оперативной памяти имеет меньшее значение.
Если сомневаетесь, выберите «gzip»
______________
GZIP
Старое и проверенное сжатие gzip. Это обеспечивает хороший баланс между степенью сжатия и скоростью распаковки.
_____________
bzip2
Его степень сжатия и скорость промежуточны. Скорость декомпрессии самая низкая среди вариантов. Размер ядра примерно на 10% меньше с bzip2, по сравнению с gzip. Bzip2 использует большой объем памяти. Для современных ядер вам понадобится как минимум 8 МБ ОЗУ или больше для загрузки.
_______________
LZMA
Этот алгоритм сжатия является лучшим. Скорость распаковки находится между gzip и bzip2. Сжатие самое медленное. Размер ядра примерно на 33% меньше с LZMA по сравнению с gzip.
______________
XZ
XZ использует алгоритм BCZ для алгоритма LZMA2 и набора команд, который может улучшить степень сжатия исполняемого кода. Размер ядра на XZ меньше примерно на 30% по сравнению с gzip. На архитектурах, для которых имеется фильтр BCJ (i386, x86_64, ARM, IA-64, PowerPC и SPARC), XZ создаст ядро на несколько процентов меньше, чем обычная LZMA.
Скорость примерно такая же, как у LZMA: скорость распаковки XZ лучше, чем у bzip2, но хуже, чем у gzip и LZO. Сжатие идет медленно.
________________
LZO
Его степень сжатия является самой бедной среди вариантов. Размер ядра примерно на 10% больше, чем у gzip; однако его скорость (как сжатие, так и распаковка) самая высокая.
_________________
LZ4
Старое и проверенное сжатие gzip. Это обеспечивает хороший баланс между степенью сжатия и скоростью распаковки.
1) Если вы делаете какой-то узкоспециализированный дистрибутив для работы какого-нибудь одноплатника (медиа-центра, встроенной системы, коммутатора, распберри или еще чего-то такого подобного), то перед вами станет задача предельно уменьшить занимаемое в ПЗУ (ссд, флешке, диске или что вы для этого будете использовать) места. И в этом случае вам лучше всего подойдут алгоритмы LZMA или XZ - двющие наилучшее сжатие. +30-33%
2) Если вы "гик" и вас очень волнует, например, скорость загрузки ОС (а размер файла не так уж и важен), то лучшим выбором окажется алгоритм LZO. Конкретные цифры гуру, к сожалению, не указали, но у нас нет оснований сомневаться в их компетенции. )))
Во всех остальных случаях для пущей надежности и совместимости можно оставить GZIP, который и так стоит по умолчанию. LZ4 и bzip2 - аутсайдеры! преимуществ на фоне других алгоритмов сжатия у них нет.
Поскольку по планете уже победно шагает пятое ядро, то, возможно, в нем присутствует другой набор алгоритмов сжатия. К сожалению, на моем старье этот "другой набор" не "пощупать".
Если кто-нибудь возьмется дополнить эту информацию - милости прошу - в комментарии.