From: Alain Knaff <alain@knaff.lu>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@elte.hu>, Jan Engelhardt <jengelh@medozas.de>,
the arch/x86 maintainers <x86@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: tip: bzip2/lzma now in tip:x86/setup-lzma
Date: Thu, 19 Feb 2009 21:11:09 +0100 [thread overview]
Message-ID: <499DBCDD.90806@knaff.lu> (raw)
In-Reply-To: <499BBD62.5090506@knaff.lu>
[-- Attachment #1: Type: text/plain, Size: 771 bytes --]
Alain Knaff wrote:
> hmmm, but on a second glance, there seems to be indeed an issue. When
> compiling it a _second time_, compilation will "succeed" but produce a
> bad kernel because the first attempt left an empty
> usr/initramfs_data.cpio.bz2 .
>
> I'll look into it this evening, probably a case of "bad" failure
> recovery in the Makefile.
>
Took me slightly longer than promised, attached is the patch.
It changes/fixes three things:
1. Fix a bug in decompress.c : only scanned until the first
non-configured compressor (with disastrous result if that was gzip)
2. Fix a bug in gen_initramfs_list.sh : in case of failure, it left
indeed an empty output file behind, messing up the next make.
3. Make builtin initramfs compression configurable
Regards,
Alain
[-- Attachment #2: 20090219.diff --]
[-- Type: text/x-diff, Size: 4918 bytes --]
This changes three things:
1. Fix a bug in decompress.c : only scanned until the first
non-configured compressor (with disastrous result if that was gzip)
2. Fix a bug in gen_initramfs_list.sh : in case of failure, it left an
empty output file behind, messing up the next make.
3. Make builtin initramfs compression configurable
Signed-off-by: Alain Knaff <alain@knaff.lu>
---
diff -purN base/lib/decompress.c i386/lib/decompress.c
--- base/lib/decompress.c 2009-02-18 07:59:07.000000000 +0100
+++ i386/lib/decompress.c 2009-02-19 20:56:07.000000000 +0100
@@ -43,7 +43,7 @@ decompress_fn decompress_method(const un
if (len < 2)
return NULL; /* Need at least this much... */
- for (cf = compressed_formats; cf->decompressor; cf++) {
+ for (cf = compressed_formats; cf->name; cf++) {
if (!memcmp(inbuf, cf->magic, 2))
break;
diff -purN base/scripts/gen_initramfs_list.sh i386/scripts/gen_initramfs_list.sh
--- base/scripts/gen_initramfs_list.sh 2009-02-18 07:59:07.000000000 +0100
+++ i386/scripts/gen_initramfs_list.sh 2009-02-19 07:52:57.000000000 +0100
@@ -292,7 +292,7 @@ if [ ! -z ${output_file} ]; then
if [ "${is_cpio_compressed}" = "compressed" ]; then
cat ${cpio_tfile} > ${output_file}
else
- cat ${cpio_tfile} | ${compr} - > ${output_file}
+ (cat ${cpio_tfile} | ${compr} - > ${output_file}) || (rm ${output_file} ; false)
fi
[ -z ${cpio_file} ] && rm ${cpio_tfile}
fi
diff -purN base/usr/Kconfig i386/usr/Kconfig
--- base/usr/Kconfig 2009-02-18 07:59:07.000000000 +0100
+++ i386/usr/Kconfig 2009-02-19 20:02:41.000000000 +0100
@@ -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 -purN base/usr/Makefile i386/usr/Makefile
--- base/usr/Makefile 2009-02-18 07:59:07.000000000 +0100
+++ i386/usr/Makefile 2009-02-19 20:27:31.000000000 +0100
@@ -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
next prev parent reply other threads:[~2009-02-19 20:11 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-04 21:46 update8 [PATCH 2/5] init: bzip2 or lzma -compressed kernels and initrds Alain Knaff
2009-01-04 23:08 ` H. Peter Anvin
2009-01-04 23:12 ` Alain Knaff
2009-01-04 23:14 ` H. Peter Anvin
2009-01-04 23:21 ` Alain Knaff
2009-01-04 23:58 ` tip: bzip2/lzma now in tip:x86/setup-lzma H. Peter Anvin
2009-01-05 3:03 ` Sam Ravnborg
2009-01-05 5:09 ` H. Peter Anvin
2009-01-05 5:42 ` Sam Ravnborg
[not found] ` <49615136.9080900@knaff.lu>
[not found] ` <4961580A.1020301@zytor.com>
[not found] ` <4961A816.40302@knaff.lu>
[not found] ` <4961A997.10108@zytor.com>
[not found] ` <4961ADC5.6030108@knaff.lu>
[not found] ` <49622DE9.2010200@zytor.com>
[not found] ` <496240DF.2010102@knaff.lu>
[not found] ` <49624F6C.8010103@zytor.com>
[not found] ` <4962522F.20804@knaff.lu>
[not found] ` <496255B0.1050208@zytor.com>
2009-01-05 18:57 ` Alain Knaff
2009-01-05 19:36 ` H. Peter Anvin
2009-01-05 22:07 ` Alain Knaff
2009-01-05 22:11 ` H. Peter Anvin
2009-01-05 22:12 ` Alain Knaff
2009-01-05 22:59 ` H. Peter Anvin
2009-01-06 7:09 ` Alain Knaff
2009-01-06 7:21 ` Willy Tarreau
2009-01-06 7:22 ` H. Peter Anvin
2009-01-06 7:30 ` Alain Knaff
2009-01-06 21:57 ` [bzip2/lzma] fix for built-in initramfs issue Alain Knaff
2009-01-06 22:48 ` H. Peter Anvin
2009-01-06 22:50 ` Alain Knaff
2009-01-06 22:58 ` H. Peter Anvin
2009-01-06 22:58 ` Alain Knaff
2009-01-06 7:18 ` tip: bzip2/lzma now in tip:x86/setup-lzma Jaswinder Singh Rajput
2009-01-06 7:24 ` H. Peter Anvin
2009-01-06 7:53 ` Jaswinder Singh Rajput
2009-01-06 8:27 ` H. Peter Anvin
2009-02-17 21:03 ` Jan Engelhardt
2009-02-17 21:05 ` H. Peter Anvin
2009-02-17 22:08 ` Ingo Molnar
2009-02-17 23:37 ` Ingo Molnar
2009-02-18 0:52 ` H. Peter Anvin
2009-02-18 7:48 ` Alain Knaff
2009-02-18 9:20 ` Jan Engelhardt
2009-02-18 9:40 ` Alain Knaff
2009-02-18 10:29 ` Jan Engelhardt
2009-02-18 19:53 ` H. Peter Anvin
2009-02-19 6:14 ` Alain Knaff
2009-02-19 14:46 ` H. Peter Anvin
2009-02-19 15:41 ` Alain Knaff
2009-02-19 18:03 ` H. Peter Anvin
2009-02-18 19:52 ` H. Peter Anvin
2009-02-18 21:09 ` Willy Tarreau
2009-02-19 20:11 ` Alain Knaff [this message]
2009-03-01 13:16 ` Alain Knaff
2009-03-01 19:27 ` H. Peter Anvin
2009-03-02 9:53 ` Ingo Molnar
2009-03-02 9:54 ` Alain Knaff
2009-03-02 10:22 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=499DBCDD.90806@knaff.lu \
--to=alain@knaff.lu \
--cc=hpa@zytor.com \
--cc=jengelh@medozas.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.