Commit cacb246f authored by Albin Tonnerre's avatar Albin Tonnerre Committed by Linus Torvalds
Browse files

Add LZO compression support for initramfs and old-style initrd



Signed-off-by: default avatarAlbin Tonnerre <albin.tonnerre@free-electrons.com>
Tested-by: default avatarWu Zhangjin <wuzhangjin@gmail.com>
Acked-by: default avatar"H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Tested-by: default avatarRussell King <rmk@arm.linux.org.uk>
Acked-by: default avatarRussell King <rmk@arm.linux.org.uk>
Cc: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 13510997
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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
#
+1 −0
Original line number Diff line number Diff line
@@ -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
+5 −0
Original line number Diff line number Diff line
@@ -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 }
};

+21 −5
Original line number Diff line number Diff line
@@ -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