#!/bin/sh -efux # NB: /etc/initrd.mk carefully prepared by earlier scripts fatal() { echo "** error: $@" >&1; exit 1; } kver= for KFLAVOUR in $GLOBAL_KFLAVOURS; do kver+=" $(rpm -qa 'kernel-image*' \ --qf '%{version}-%{name}-%{release}\n' \ | grep "$KFLAVOUR" \ | sed 's/kernel-image-//')" done [ -n "$kver" ] || fatal "no kernel version identified" INITRD_FEATURES+="add-modules compress cleanup rdshell pipeline" INITRD_MODULES="$(grep -v ^# /.in/modules | grep -v / | grep .ko | sort -u)" INITRD_PUT_DIRS="$(grep -v ^# /.in/modules | grep -v .ko | sort -u)" initrd_modules_find() { if [ -n "$INITRD_MODULES" ]; then echo "MODULES_LOAD += \\" for INITRD_MODULE in $INITRD_MODULES; do MODNAME="$(find /lib/modules/$KVER -type f -name $INITRD_MODULE)" [ -z "$MODNAME" ] || echo " ${MODNAME##*/} \\" done echo " #" fi if [ -n "$INITRD_PUT_DIRS" ]; then echo "PUT_DIRS += \\" for INITRD_PUT_DIR in $INITRD_PUT_DIRS; do [ ! -d "/lib/modules/$KVER/$INITRD_PUT_DIR" ] || echo " /lib/modules/$KVER/$INITRD_PUT_DIR \\" done echo " #" fi } # FIXME: large storage systems can get that tmpfs filled up # with debug data as of make-initrd 2.2.12 rm -vf /usr/share/make-initrd/data/etc/udev/rules.d/00-debug.rules \ /usr/share/make-initrd/data/lib/uevent/filters/debug MAKE_INITRD_OPTS="--no-checks AUTODETECT=" MAKE_INITRD_VER="`make-initrd -V \ | sed -rn 's/^make-initrd version ([0-9.]+)/\1/p'`" [ -z "$GLOBAL_VERBOSE" ] || MAKE_INITRD_OPTS="$MAKE_INITRD_OPTS -v" cd /boot for KVER in $kver; do touch /etc/initrd.mk cp -Lvf /etc/initrd.mk /etc/initrd-mk.bak initrd_modules_find >> /etc/initrd.mk make-initrd $MAKE_INITRD_OPTS -k "$KVER" \ FEATURES+="$INITRD_FEATURES" || fatal "make-initrd failed" mv -vf /etc/initrd-mk.bak /etc/initrd.mk done case `arch` in e2k) kname=image;; *) kname=vmlinuz;; esac rm -f $kname initrd.img ln -s $kname-$KVER $kname ln -s initrd-$KVER.img initrd.img :