On RHEL 5, mke2fs used the -T option to specify the filesystem type. Change the configure script so it can detect either method, and then use the correct method in febootstrap-supermin-helper.
Detect libz and, if present, define HAS_LIBZ and add -lz to Makefile's LIBS variable. Add entry on optional zlib package requirement. Detect both uncompressed and gzipped kernel modules. Some Linux distros (like ArchLinux) use gzipped kernel modules with filenames like ext2.ko.gz. This change modifies the filename pattern from (e.g.) "ext2.ko" to "ext2.ko*". When available, use libz to read the module. The init_module system call requires uncompressed kernel module bytes. On some systems (e.g. ArchLinux) the modules are gzipped on disk. Libz is used to read and uncompress gzipped disk files (*.ko.gz) or transparently read uncompressed modules (*.ko).
This saves over 5 seconds during the slow path construction of the appliance. The ext2fs_close2 API is present in the e2fsprogs 'next' branch and will be in a later e2fsprogs release (thanks Ted Ts'o).
Ubuntu 10.04 LTS has a broken apt-cache depends --recurse command which does not in fact recurse deeply enough to find all dependencies (this is fixed in Ubuntu 11.04). Include a workaround for this so we can use febootstrap on old Ubuntu versions.