File dracut-installkernel of Package dracut.12460

#! /bin/sh
#
# /sbin/installkernel  - written by tyson@rwii.com
#
# May 21, 2003 - agruen@suse.de
# * Adapted for SuSE and cleaned up.
# November 21, 2018 - jdelvare@suse.de
# * Stop creating .old files.
#

: ${INSTALL_PATH:=/boot}
KERNEL_VERSION=$1
BOOTIMAGE=$2
MAPFILE=$3
CONFIGFILE=config-$KERNEL_VERSION

case "$(uname -m)" in
    s390|s390x)
        BOOTFILE=image
        ;;
    ppc|ppc64)
        BOOTFILE=vmlinux
        ;;
    aarch64)
        BOOTFILE=Image
        ;;
    armv*)
	BOOTFILE=zImage
	;;
    *)
        BOOTFILE=vmlinuz
        ;;
esac

#
# Install new files
#

cp -fp $BOOTIMAGE $INSTALL_PATH/$BOOTFILE-$KERNEL_VERSION
cp -fp $MAPFILE $INSTALL_PATH/System.map-$KERNEL_VERSION
[ -f .config ] && cp -fp .config $INSTALL_PATH/$CONFIGFILE


# If the kernel has module support, recreate modules.dep using depmod
# since the contents of modules.dep do not have a consistent format across
# releases.

if [ -x /sbin/depmod -a -d /lib/modules/$KERNEL_VERSION ]; then
    /sbin/depmod $KERNEL_VERSION;
fi

function check_supported()
{
   local MOD_SUPP_FILE="/etc/modprobe.d/10-unsupported-modules.conf"
   local MOD_SUPP_REGEX="^\s*allow_unsupported_modules\s+0\s*$"
   local cfg="$1"

   if [ ! -e "$cfg" ]; then return; fi

   local tmp=$(modprobe --showconfig | grep -Eq $MOD_SUPP_REGEX)
   if [ -n "$tmp" ]; then
       CHECK_SUPPORTED="--check-supported"
       return;
   fi

   if grep -q "^CONFIG_SUSE_KERNEL_SUPPORTED=y" $cfg ; then
       if [ -e $MOD_SUPP_FILE ] && grep -Eq $MOD_SUPP_REGEX $MOD_SUPP_FILE; then
           CHECK_SUPPORTED="--check-supported"
       fi
   fi
}

CONFIG=$(dirname $MAPFILE)/.config
CHECK_SUPPORTED=

check_supported $CONFIG

KERNTYPES=$(dirname $MAPFILE)/init/kerntypes.o
if [ -e $KERNTYPES ]; then
    cp -fp $KERNTYPES $INSTALL_PATH/Kerntypes-$KERNEL_VERSION
fi

case "$(uname -m)" in
i?86 | x86_64)
    KERNBIN=$(dirname $MAPFILE)/vmlinux
    if [ -e $KERNBIN ]; then
        gzip -c $KERNBIN > $INSTALL_PATH/vmlinux-$KERNEL_VERSION.gz
    fi
    ;;
esac

#
# Generate initial ramdisk
#
if [ -x /usr/bin/dracut -a -d /lib/modules/$KERNEL_VERSION ]; then
    /usr/bin/dracut --hostonly --force $CHECK_SUPPORTED \
       	$INSTALL_PATH/initrd-$KERNEL_VERSION $KERNEL_VERSION
else
    echo "You may need to create an initial ramdisk now."
fi

#
# Update boot loader
#
if [ -x /sbin/update-bootloader ]; then
    opt_initrd=
    [ -e $INSTALL_PATH/initrd-$KERNEL_VERSION ] \
        && opt_initrd="--initrd $INSTALL_PATH/initrd-$KERNEL_VERSION"
    /sbin/update-bootloader --name $KERNEL_VERSION \
        --image $INSTALL_PATH/$BOOTFILE-$KERNEL_VERSION \
        $opt_initrd --add --force
fi