Hello Maximilian, this version uses /etc/initramfs-tools/initramfs.conf to determine the compression method, checks kernel and userspace support with fallback to gzip. Since LZO didnt work for me at all with 2.6.33 I left that out for now.
unified diff against git attached regards Bert Schulze
diff -rup a/conf/initramfs.conf b/conf/initramfs.conf --- a/conf/initramfs.conf 2010-02-28 19:05:48.000000000 +0100 +++ b/conf/initramfs.conf 2010-02-28 19:14:53.000000000 +0100 @@ -36,6 +36,12 @@ BUSYBOX=y KEYMAP=n # +# COMPRESS: [ gzip | bzip2 | lzma ] +# + +COMPRESS=gzip + +# # NFS Section of the config. # diff -rup a/initramfs.conf.5 b/initramfs.conf.5 --- a/initramfs.conf.5 2010-02-28 19:05:48.000000000 +0100 +++ b/initramfs.conf.5 2010-02-28 19:18:40.000000000 +0100 @@ -48,6 +48,13 @@ The keymap will anyway be loaded by the that might need input will normally set this variable automatically, so there should normally be no need to set this. +.TP +\fB COMPRESS +Specifies the compression method used for the initramfs image. +.B mkinitramfs +will default to gzip if the kernel lacks support (CONFIG_RD) or the +corresponding userspace utility is not present. + .SH NFS VARIABLES .TP \fB BOOT diff -rup a/mkinitramfs b/mkinitramfs --- a/mkinitramfs 2010-02-28 19:05:48.000000000 +0100 +++ b/mkinitramfs 2010-02-28 19:04:08.000000000 +0100 @@ -123,6 +123,20 @@ case "${version}" in ;; esac +# Check userspace and kernel support for compressed initramfs images +compress=${COMPRESS} +if [ -z "`which ${COMPRESS}`" ]; then + compress=gzip + [ "${verbose}" = y ] && \ + echo "Userspace does not support ${COMPRESS}, defaulting to gzip" +fi + +if ! `grep -q -i config_rd_${COMPRESS}=y /boot/config-${version}` ; then + compress=gzip + [ "${verbose}" = y ] && \ + echo "Kernel does not support ${COMPRESS}, defaulting to gzip" +fi + if [ -d "${outfile}" ]; then echo "${outfile} is a directory" exit 1 @@ -265,7 +279,7 @@ eval ` find . 4>&-; echo "ec1=$?;" >&4 } | { cpio --quiet --dereference -o -H newc 4>&-; echo "ec2=$?;" >&4 - } | gzip >"${outfile}" + } | ${compress} >"${outfile}" echo "ec3=$?;" >&4 ` if [ "$ec1" -ne 0 ]; then exit "$ec1"; fi diff -rup a/mkinitramfs.8 b/mkinitramfs.8 --- a/mkinitramfs.8 2010-02-28 19:05:48.000000000 +0100 +++ b/mkinitramfs.8 2010-02-28 19:07:54.000000000 +0100 @@ -27,7 +27,7 @@ mkinitramfs \- low-level tool for genera The .B mkinitramfs script generates an initramfs image. -The initramfs is a gzipped cpio archive. The archive can be used on a +The initramfs is a compressed cpio archive. The archive can be used on a different box of the same arch with the corresponding Linux kernel. .B mkinitramfs is meant for advanced usage. On your local box