78 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | #!/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" | ||
|  | 
 | ||
|  | IKCFG_ST="0x49 0x4b 0x43 0x46 0x47 0x5f 0x53 0x54" | ||
|  | IKCFG_ED="0x49 0x4b 0x43 0x46 0x47 0x5f 0x45 0x44" | ||
|  | function dump_config { | ||
|  |     typeset file="$1" | ||
|  | 
 | ||
|  |     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` | ||
|  | 
 | ||
|  |     let start="$start + 8" | ||
|  |     let size="$end - $start" | ||
|  | 
 | ||
|  |     head --bytes="$end" "$file" | tail --bytes="$size" | zcat | ||
|  | 
 | ||
|  |     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 | ||
|  | 
 | ||
|  | TMPFILE="/tmp/ikconfig-$$" | ||
|  | 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 |