summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usr/Kconfig62
-rw-r--r--usr/Makefile18
2 files changed, 68 insertions, 12 deletions
diff --git a/usr/Kconfig b/usr/Kconfig
index a691a8f..43a3a0f 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 451cdff..b84894b 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
OpenPOWER on IntegriCloud