blob: 8e526d3709660c3db53e30dbae881321374872d4 [file] [log] [blame]
#! /bin/bash
# extracts .config info from a [b]zImage file
# uses: binoffset (new), dd, zcat, strings, grep
# $arg1 is [b]zImage filename
TMPFILE=""
usage()
{
echo " usage: extract-ikconfig [b]zImage_filename"
}
clean_up()
{
if [ -z $ISCOMP ]
then
rm -f $TMPFILE
fi
}
if [ $# -lt 1 ]
then
usage
exit
fi
image=$1
# There are two gzip headers, as well as arches which don't compress their
# kernel.
GZHDR="0x1f 0x8b 0x08 0x00"
if [ `binoffset $image $GZHDR >/dev/null 2>&1 ; echo $?` -ne 0 ]
then
GZHDR="0x1f 0x8b 0x08 0x08"
if [ `binoffset $image $GZHDR >/dev/null 2>&1 ; echo $?` -ne 0 ]
then
ISCOMP=0
fi
fi
PID=$$
# Extract and uncompress the kernel image if necessary
if [ -z $ISCOMP ]
then
TMPFILE="/tmp/`basename $image`.vmlin.$PID"
dd if=$image bs=1 skip=`binoffset $image $GZHDR` 2> /dev/null | zcat > $TMPFILE
else
TMPFILE=$image
fi
# Look for strings.
strings $TMPFILE | grep "CONFIG_BEGIN=n" > /dev/null
if [ $? -eq 0 ]
then
strings $TMPFILE | awk "/CONFIG_BEGIN=n/,/CONFIG_END=n/" > $image.oldconfig.$PID
else
echo "ERROR: Unable to extract kernel configuration information."
echo " This kernel image may not have the config info."
clean_up
exit 1
fi
echo "Kernel configuration written to $image.oldconfig.$PID"
clean_up
exit 0