Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab76f3d7 authored by Alain Knaff's avatar Alain Knaff Committed by H. Peter Anvin
Browse files

bzip2/lzma: make internal initramfs compression configurable



Impact: Avoids silent environment dependency

Make builtin initramfs compression an explicit configurable.  The
previous version would pick a compression based on the binaries which
were installed on the system, which could lead to unexpected results.
It is now explicitly configured, and not having the appropriate
binaries installed on the build host is simply an error.

Signed-off-by: default avatarAlain Knaff <alain@knaff.lu>
Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
parent ab59d3b7
Loading
Loading
Loading
Loading
+62 −0
Original line number Diff line number Diff line
@@ -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
+6 −12
Original line number Diff line number Diff line
@@ -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