uname_r=$(uname -r)
echo "usage: $PROGRAM [--version] [-v] [-f] [--ifneeded] [--preload <module>]"
echo " [--with=<module>] [--image-version] [--fstab=<fstab>] [--nocompress]"
- echo " [--compress=yes|lzma|bzip2|gzip]"
+ echo " [--compress=yes|xz|lzma|bzip2|gzip]"
echo " [--initrdfs=rom|initramfs|ext2|cram] [--modules-conf=<modules.conf>]"
echo " [--with-bootsplash] [--without-bootsplash]"
echo " [--with-fbsplash] [--without-fbsplash]"
mknod /dev/console c 5 1
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
+ mknod /dev/urandom c 1 9
mkdir /dev/pts
mkdir /dev/shm
EOF
#
# NB! XXX do not output to STDOUT, it will appear in initrd images in some cases!
busybox_applet() {
- local err=0
+ local err=0 applet
if [ -z "$busybox_functions" ]; then
local tmp=$($busybox 2>&1)
if [ -n "$sleep_var" ]; then
echo "usleep $sleep_var" | add_linuxrc
fi
+ if [ "$module" = "scsi_wait_scan" ]; then
+ if [ "$(busybox_applet rmmod 2>/dev/null; echo $?)" = 0 ]; then
+ echo "rmmod scsi_wait_scan" | add_linuxrc
+ fi
+ fi
+
done
}
find_compressor() {
local mode="$1"
# the best compressor list
- local compressors='lzma bzip2 gzip'
+ local compressors='xz lzma bzip2 gzip'
# a specified one, take it
if ! is_yes "$mode"; then
- compressors=gzip
+ compressors="$mode"
fi
debug "finding compressor: $compressors (via $mode)"
local c prog map=/boot/System.map-$kernel
for c in $compressors; do
case $c in
+ xz)
+ sym=unxz
+ prog=/usr/bin/xz
+ ;;
lzma)
sym=unlzma
- prog=/usr/bin/lzma
+ prog=/usr/bin/xz
;;
bzip2)
sym=bzip2
die "Unknown compressor $c"
;;
esac
- if sym_exists $map $sum && [ -x $prog ]; then
+ if sym_exists $map $sym && [ -x $prog ]; then
echo $c
return
fi
. /etc/sysconfig/geninitrd
fi
+if [ ! -f /proc/mounts ]; then
+ warn "/proc filesystem not mounted, may cause wrong results or failure."
+fi
+
geninitrd_load_mods ide luks multipath dmraid lvm md blkid udev tuxonice suspend fbsplash condecor bootsplash uvesafb nfs scsi
while [ $# -gt 0 ]; do
die "/lib/modules/$kernel is not a directory."
fi
-if [ ! -f /proc/mounts ]; then
- warn "/proc filesystem not mounted, may cause wrong results or failure."
-fi
-
if [ "$kernel_version" -ge "002005" ]; then
modext=".ko"
fi
mknod "$DESTDIR/dev/console" c 5 1
mknod "$DESTDIR/dev/null" c 1 3
mknod "$DESTDIR/dev/zero" c 1 5
+mknod "$DESTDIR/dev/urandom" c 1 9
inst_exec $busybox /bin/initrd-busybox
ln -s initrd-busybox $DESTDIR/bin/sh
# TODO: the image name (specified from kernel.spec) already contains
# extension, which is .gz most of the time.
case "$compressor" in
+ xz)
+ # don't use -9 here since kernel won't understand it
+ xz --format=xz --check=crc32 --lzma2=preset=6e,dict=1MiB < "$IMAGE" > "$tmp"
+ ;;
lzma)
- lzma -9 < "$IMAGE" > "$tmp"
+ xz --format=lzma -9 < "$IMAGE" > "$tmp"
;;
bzip2)
bzip2 -9 < "$IMAGE" > "$tmp"