#! /bin/sh # # /sbin/installkernel # # Copyright 2007-2008 Red Hat, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Author(s): tyson@rwii.com # usage() { echo "Usage: `basename $0` " >&2 exit 1 } cfgLoader= if [ -z "$INSTALL_PATH" -o "$INSTALL_PATH" == "/boot" ]; then INSTALL_PATH=/boot cfgLoader=1 fi LINK_PATH=/boot RELATIVE_PATH=`echo "$INSTALL_PATH/" | sed "s|^$LINK_PATH/||"` KERNEL_VERSION=$1 BOOTIMAGE=$2 MAPFILE=$3 ARCH=$(uname -m) if [ $ARCH = 'ppc64' -o $ARCH = 'ppc' ]; then KERNEL_NAME=vmlinux else KERNEL_NAME=vmlinuz fi if [ -z "$KERNEL_VERSION" -o -z "$BOOTIMAGE" -o -z "$MAPFILE" ]; then usage fi if [ -f $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION ]; then mv $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION \ $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION.old; fi if [ ! -L $INSTALL_PATH/$KERNEL_NAME ]; then if [ -e $INSTALLPATH/$KERNEL_NAME ]; then mv $INSTALL_PATH/$KERNEL_NAME $INSTALL_PATH/$KERNEL_NAME.old fi fi if [ -f $INSTALL_PATH/System.map-$KERNEL_VERSION ]; then mv $INSTALL_PATH/System.map-$KERNEL_VERSION \ $INSTALL_PATH/System.map-$KERNEL_VERSION.old; fi if [ ! -L $INSTALL_PATH/System.map ]; then if [ -e $INSTALLPATH/System.map ]; then mv $INSTALL_PATH/System.map $INSTALL_PATH/System.map.old fi fi ln -sf ${RELATIVE_PATH}$INSTALL_PATH/System.map-$KERNEL_VERSION $LINK_PATH/System.map cat $BOOTIMAGE > $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION cp $MAPFILE $INSTALL_PATH/System.map-$KERNEL_VERSION ln -fs ${RELATIVE_PATH}$INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION $LINK_PATH/$KERNEL_NAME ln -fs ${RELATIVE_PATH}$INSTALL_PATH/System.map-$KERNEL_VERSION $LINK_PATH/System.map if [ -n "$cfgLoader" ] && [ -x /sbin/new-kernel-pkg ]; then if [ -n "$(which dracut 2>/dev/null)" ]; then new-kernel-pkg --mkinitrd --dracut --host-only --depmod --install $KERNEL_VERSION else new-kernel-pkg --mkinitrd --depmod --install $KERNEL_VERSION fi new-kernel-pkg --rpmposttrans $KERNEL_VERSION fi