You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.4 KiB
83 lines
2.4 KiB
#! /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 <http://www.gnu.org/licenses/>. |
|
# |
|
# Author(s): tyson@rwii.com |
|
# |
|
|
|
usage() { |
|
echo "Usage: `basename $0` <kernel_version> <bootimage> <mapfile>" >&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" ]; then |
|
kernel-install add $KERNEL_VERSION $INSTALL_PATH/$KERNEL_NAME-$KERNEL_VERSION |
|
exit $? |
|
fi
|
|
|