Blame view

scripts/extract-ikconfig 1.66 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
  #!/bin/sh
  # extracts .config info from a [b]zImage file
  # uses: binoffset (new), dd, zcat, strings, grep
  # $arg1 is [b]zImage filename
  
  binoffset="./scripts/binoffset"
ff45e99dc   Alexey Dobriyan   [PATCH] extract-i...
7
  test -e $binoffset || cc -o $binoffset ./scripts/binoffset.c || exit 1
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
8
9
10
  
  IKCFG_ST="0x49 0x4b 0x43 0x46 0x47 0x5f 0x53 0x54"
  IKCFG_ED="0x49 0x4b 0x43 0x46 0x47 0x5f 0x45 0x44"
efddd7951   Werner Almesberger   remove bashisms f...
11
12
  dump_config() {
      file="$1"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
13
14
15
16
17
18
19
  
      start=`$binoffset $file $IKCFG_ST 2>/dev/null`
      [ "$?" != "0" ] && start="-1"
      if [ "$start" -eq "-1" ]; then
  	return
      fi
      end=`$binoffset $file $IKCFG_ED 2>/dev/null`
efddd7951   Werner Almesberger   remove bashisms f...
20
21
      start=`expr $start + 8`
      size=`expr $end - $start`
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
22

008accbba   Alexey Dobriyan   [PATCH] extract-i...
23
      dd if="$file" ibs=1 skip="$start" count="$size" 2>/dev/null | zcat
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  
      clean_up
      exit 0
  }
  
  
  usage()
  {
  	echo "  usage: extract-ikconfig [b]zImage_filename"
  }
  
  clean_up()
  {
  	if [ "$TMPFILE" != "" ]; then
  		rm -f $TMPFILE
  	fi
  }
  
  if [ $# -lt 1 ]
  then
  	usage
  	exit 1
  fi
66f9f59a5   Alexey Dobriyan   [PATCH] extract-i...
47
  TMPFILE=`mktemp -t ikconfig-XXXXXX` || exit 1
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  image="$1"
  
  # vmlinux: Attempt to dump the configuration from the file directly
  dump_config "$image"
  
  GZHDR1="0x1f 0x8b 0x08 0x00"
  GZHDR2="0x1f 0x8b 0x08 0x08"
  
  # vmlinux.gz: Check for a compressed images
  off=`$binoffset "$image" $GZHDR1 2>/dev/null`
  [ "$?" != "0" ] && off="-1"
  if [ "$off" -eq "-1" ]; then
  	off=`$binoffset "$image" $GZHDR2 2>/dev/null`
  	[ "$?" != "0" ] && off="-1"
  fi
  if [ "$off" -eq "0" ]; then
  	zcat <"$image" >"$TMPFILE"
  	dump_config "$TMPFILE"
  elif [ "$off" -ne "-1" ]; then
  	(dd ibs="$off" skip=1 count=0 && dd bs=512k) <"$image" 2>/dev/null | \
  		zcat >"$TMPFILE"
  	dump_config "$TMPFILE"
  fi
  
  echo "ERROR: Unable to extract kernel configuration information."
  echo "       This kernel image may not have the config info."
  
  clean_up
  exit 1