Add LZO compression support for initramfs and old-style initrd
Signed-off-by: Albin Tonnerre <albin.tonnerre@free-electrons.com> Tested-by: Wu Zhangjin <wuzhangjin@gmail.com> Acked-by: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Tested-by: Russell King <rmk@arm.linux.org.uk> Acked-by: Russell King <rmk@arm.linux.org.uk> Cc: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
13510997d6
Коммит
cacb246f8d
|
@ -117,6 +117,10 @@ config DECOMPRESS_BZIP2
|
|||
config DECOMPRESS_LZMA
|
||||
tristate
|
||||
|
||||
config DECOMPRESS_LZO
|
||||
select LZO_DECOMPRESS
|
||||
tristate
|
||||
|
||||
#
|
||||
# Generic allocator support is selected if needed
|
||||
#
|
||||
|
|
|
@ -69,6 +69,7 @@ obj-$(CONFIG_LZO_DECOMPRESS) += lzo/
|
|||
lib-$(CONFIG_DECOMPRESS_GZIP) += decompress_inflate.o
|
||||
lib-$(CONFIG_DECOMPRESS_BZIP2) += decompress_bunzip2.o
|
||||
lib-$(CONFIG_DECOMPRESS_LZMA) += decompress_unlzma.o
|
||||
lib-$(CONFIG_DECOMPRESS_LZO) += decompress_unlzo.o
|
||||
|
||||
obj-$(CONFIG_TEXTSEARCH) += textsearch.o
|
||||
obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <linux/decompress/bunzip2.h>
|
||||
#include <linux/decompress/unlzma.h>
|
||||
#include <linux/decompress/inflate.h>
|
||||
#include <linux/decompress/unlzo.h>
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/string.h>
|
||||
|
@ -22,6 +23,9 @@
|
|||
#ifndef CONFIG_DECOMPRESS_LZMA
|
||||
# define unlzma NULL
|
||||
#endif
|
||||
#ifndef CONFIG_DECOMPRESS_LZO
|
||||
# define unlzo NULL
|
||||
#endif
|
||||
|
||||
static const struct compress_format {
|
||||
unsigned char magic[2];
|
||||
|
@ -32,6 +36,7 @@ static const struct compress_format {
|
|||
{ {037, 0236}, "gzip", gunzip },
|
||||
{ {0x42, 0x5a}, "bzip2", bunzip2 },
|
||||
{ {0x5d, 0x00}, "lzma", unlzma },
|
||||
{ {0x89, 0x4c}, "lzo", unlzo },
|
||||
{ {0, 0}, NULL, NULL }
|
||||
};
|
||||
|
||||
|
|
26
usr/Kconfig
26
usr/Kconfig
|
@ -72,6 +72,15 @@ config RD_LZMA
|
|||
Support loading of a LZMA encoded initial ramdisk or cpio buffer
|
||||
If unsure, say N.
|
||||
|
||||
config RD_LZO
|
||||
bool "Support initial ramdisks compressed using LZO" if EMBEDDED
|
||||
default !EMBEDDED
|
||||
depends on BLK_DEV_INITRD
|
||||
select DECOMPRESS_LZO
|
||||
help
|
||||
Support loading of a LZO encoded initial ramdisk or cpio buffer
|
||||
If unsure, say N.
|
||||
|
||||
choice
|
||||
prompt "Built-in initramfs compression mode" if INITRAMFS_SOURCE!=""
|
||||
help
|
||||
|
@ -108,16 +117,15 @@ config INITRAMFS_COMPRESSION_GZIP
|
|||
bool "Gzip"
|
||||
depends on RD_GZIP
|
||||
help
|
||||
The old and tried gzip compression. Its compression ratio is
|
||||
the poorest among the 3 choices; however its speed (both
|
||||
compression and decompression) is the fastest.
|
||||
The old and tried gzip compression. It provides a good balance
|
||||
between compression ratio and decompression speed.
|
||||
|
||||
config INITRAMFS_COMPRESSION_BZIP2
|
||||
bool "Bzip2"
|
||||
depends on RD_BZIP2
|
||||
help
|
||||
Its compression ratio and speed is intermediate.
|
||||
Decompression speed is slowest among the three. The initramfs
|
||||
Decompression speed is slowest among the four. The initramfs
|
||||
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.
|
||||
|
@ -128,7 +136,15 @@ config INITRAMFS_COMPRESSION_LZMA
|
|||
help
|
||||
The most recent compression algorithm.
|
||||
Its ratio is best, decompression speed is between the other
|
||||
two. Compression is slowest. The initramfs size is about 33%
|
||||
three. Compression is slowest. The initramfs size is about 33%
|
||||
smaller with LZMA in comparison to gzip.
|
||||
|
||||
config INITRAMFS_COMPRESSION_LZO
|
||||
bool "LZO"
|
||||
depends on RD_LZO
|
||||
help
|
||||
Its compression ratio is the poorest among the four. The kernel
|
||||
size is about about 10% bigger than gzip; however its speed
|
||||
(both compression and decompression) is the fastest.
|
||||
|
||||
endchoice
|
||||
|
|
Загрузка…
Ссылка в новой задаче