diff options
author | Jeremy Katz <katzj@redhat.com> | 2005-11-22 20:41:34 +0000 |
---|---|---|
committer | Jeremy Katz <katzj@redhat.com> | 2005-11-22 20:41:34 +0000 |
commit | 8c592d6ee43cfc1753844d616daf821975008f75 (patch) | |
tree | 9c7862ad21cd4dbc481ebee8af6c992502b4a819 /scripts/upd-kernel | |
parent | ba67a958de422005364ce2a1963dc20264d1e880 (diff) | |
download | anaconda-8c592d6ee43cfc1753844d616daf821975008f75.tar.gz anaconda-8c592d6ee43cfc1753844d616daf821975008f75.tar.xz anaconda-8c592d6ee43cfc1753844d616daf821975008f75.zip |
2005-11-22 Jeremy Katz <katzj@redhat.com>
* scripts/upd-kernel: Add a script to create a new initrd for a
new kernel version.
Diffstat (limited to 'scripts/upd-kernel')
-rwxr-xr-x | scripts/upd-kernel | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/scripts/upd-kernel b/scripts/upd-kernel new file mode 100755 index 000000000..16057198f --- /dev/null +++ b/scripts/upd-kernel @@ -0,0 +1,65 @@ +#!/bin/sh +# take a boot directory with kernel + initrd and create a new one +# with a new kernel + initrd +# Usage: ./upd-kernel <olddir> <newdir> <newkernelrpm> + +OLDDIR=`readlink -f $1` +NEWDIR=$2 +KRPM=`readlink -f $3` +ARCH=$(rpm -qp --qf "%{ARCH}" $KRPM) +NEWVER=$(rpm -qp --qf "%{VERSION}" $KRPM) + +if [ -z "$OLDDIR" -o -z "$NEWDIR" -o -z "$KRPM" ]; then + echo "Usage: $0 <olddir> <newdir> <newkernelrpm>" + exit 1 +fi + +if [ ! -d $OLDDIR ]; then + echo "Directory $OLDDIR doesn't exist" + exit 1 +fi + +if [ -f $NEWDIR ]; then + NEWDIR=`readlink -f $NEWDIR` +else + NEWDIR=`readlink -f .`/$NEWDIR + mkdir $NEWDIR +fi + +WORKDIR=$(/bin/mktemp -d /tmp/kernrpm.XXXXXX) + +pushd $WORKDIR + +# explode the rpm +mkdir rpm +pushd rpm +rpm2cpio $KRPM |cpio -id +popd + +# explode the rpm +mkdir initrd +pushd initrd +zcat $OLDDIR/initrd.img |cpio -id +popd + +mkdir initrd/modules/mods +# explode the moduleball +pushd initrd/modules/mods +zcat ../modules.cgz |cpio -id +popd + +mkdir -p newmods/$NEWVER/$ARCH +for i in $(find initrd/modules/mods -type f -name '*.ko' -exec basename {} \;); do find $WORKDIR/rpm/lib/modules/*/ -name $i -exec cp -v {} $WORKDIR/newmods/$NEWVER/$ARCH \; ; done +rm -rf initrd/modules/mods + +pushd newmods +find . |cpio --quiet -H crc -o |gzip -9 > $WORKDIR/initrd/modules/modules.cgz +popd + +pushd initrd +find . |cpio -c -o |gzip -9 > $NEWDIR/initrd.img +popd + +cp -v $WORKDIR/rpm/boot/vmlinuz-* $NEWDIR/vmlinuz +popd +rm -rf $WORKDIR |