VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   33 Branches   55 Tags
author: Alain Knaff <alain@knaff.lu> 2009-02-19 13:43:51 -0800 committer: H. Peter Anvin <hpa@linux.intel.com> 2009-02-19 13:43:51 -0800 commit: ab76f3d771590d5c89faa3219559c5d3fc0ce0c2 parent: ab59d3b70f7a47987f80e153d828363faec643fe
Commit Summary:
bzip2/lzma: make internal initramfs compression configurable
Diffstat:
2 files changed, 59 insertions, 11 deletions
diff --git a/usr/Kconfig b/usr/Kconfig
index a691a8f5898b..43a3a0fe8f29 100644
--- a/usr/Kconfig
+++ b/usr/Kconfig
@@ -71,3 +71,65 @@ config RD_LZMA
 	help
 	  Support loading of a lzma encoded initial ramdisk or cpio buffer
 	  If unsure, say N.
+
+choice
+	prompt "Built-in initramfs compression mode"
+	help
+	  This setting is only meaningful if the INITRAMFS_SOURCE is
+	  set. It decides by which algorithm the INITRAMFS_SOURCE will
+	  be compressed.
+	  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
+	  initramfs, mail me (Alain Knaff) <alain@knaff.lu>.
+
+	  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'
+
+config INITRAMFS_COMPRESSION_NONE
+	bool "None"
+	help
+	  Do not compress the built-in initramfs at all. This may
+	  sound wasteful in space, but, you should be aware that the
+	  built-in initramfs will be compressed at a later stage
+	  anyways along with the rest of the kernel, on those
+	  architectures that support this.
+	  However, not compressing the initramfs may lead to slightly
+	  higher memory consumption during a short time at boot, while
+	  both the cpio image and the unpacked filesystem image will
+	  be present in memory simultaneously
+
+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.
+
+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
+	  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.
+
+config INITRAMFS_COMPRESSION_LZMA
+	bool "LZMA"
+	depends on RD_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%
+	  smaller with LZMA in comparison to gzip.
+
+endchoice
diff --git a/usr/Makefile b/usr/Makefile
index 451cdff7dff9..b84894b3929d 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -5,24 +5,18 @@
 klibcdirs:;
 PHONY += klibcdirs
 
-# Find out "preferred" ramdisk compressor. Order of preference is
-#  1. bzip2 efficient, and likely to be present
-#  2. gzip former default
-#  3. lzma
-#  4. none
 
-# None of the above
-suffix_y                   =
-
-# Lzma, but no gzip nor bzip2
-suffix_$(CONFIG_RD_LZMA)   = .lzma
+# No compression
+suffix_$(CONFIG_INITRAMFS_COMPRESSION_NONE)   =
 
 # Gzip, but no bzip2
-suffix_$(CONFIG_RD_GZIP)   = .gz
+suffix_$(CONFIG_INITRAMFS_COMPRESSION_GZIP)   = .gz
 
 # Bzip2
-suffix_$(CONFIG_RD_BZIP2)  = .bz2
+suffix_$(CONFIG_INITRAMFS_COMPRESSION_BZIP2)  = .bz2
 
+# Lzma
+suffix_$(CONFIG_INITRAMFS_COMPRESSION_LZMA)   = .lzma
 
 # Generate builtin.o based on initramfs_data.o
 obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data$(suffix_y).o