3c09c4d74893ed0897bdbb8207a4bbf39258d306
[bootcd.git] / kupdate.sh
1 #!/bin/bash
2
3 # this was the initial rough implementation of what became kvariant.sh
4 # should maybe be deprecated..
5
6 kernelrpm=$1
7 isofsdir=$2
8
9 tmpdir=
10 files=
11
12 bail () 
13 {
14     rm -rf $tmpdir $files
15     exit -1
16 }
17
18 usage ()
19 {
20     program=$(basename $0)
21     echo "USAGE:"
22     echo " $program kernel.rpm"
23     echo "   where kernel.rpm is the corresponding rpm files,"
24     echo "   which might live in ./RPMS/..."
25     exit -1
26 }
27
28 checkrpm ()
29 {
30     filename=$1
31     if [ -f "$filename" ] ; then
32         if [ $(rpm -qip $filename | wc -l) -eq 1 ] ; then
33             echo "$filename not a valid rpm file"
34             usage
35         fi
36     fi
37 }
38
39 [ -z "$kernelrpm" ] && usage
40 checkrpm $kernelrpm
41
42 tmpdir=$(mktemp -d /var/tmp/bootcd.XXXXXX)
43 trap "bail" ERR INT
44 echo "Updating bootcd image with $kernelrpm"
45 pushd $tmpdir
46 mkdir bootcd
47 pushd bootcd
48 gzip -d -c $isofsdir/bootcd.img | cpio -diu
49 rm -rf boot/*
50 rm -rf lib/modules
51 rpm2cpio  $kernelrpm | cpio -diu
52 version=$(cd ./boot && ls vmlinuz* | sed 's,vmlinuz-,,')
53 depmod -b . $version
54 cp boot/vmlinuz* ${tmpdir}/kernel
55 find . | cpio --quiet -c -o | gzip -9 > ${tmpdir}/bootcd.img
56 popd
57 popd
58
59 #
60 mv ${isofsdir}/kernel ${tmpdir}/kernel.orig
61 mv ${isofsdir}/bootcd.img ${tmpdir}/bootcd.img.orig
62
63 #
64 mv ${tmpdir}/kernel ${isofsdir}/kernel
65 mv ${tmpdir}/bootcd.img ${isofsdir}/bootcd.img
66 rm -rf $tmpdir
67
68 echo " ... done"
69 trap - ERR
70 exit 0