Version:  2.0.40 2.2.26 2.4.37 3.13 3.14 3.15 3.16 3.17 3.18 3.19 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10

Linux/scripts/extract-vmlinux

  1 #!/bin/sh
  2 # ----------------------------------------------------------------------
  3 # extract-vmlinux - Extract uncompressed vmlinux from a kernel image
  4 #
  5 # Inspired from extract-ikconfig
  6 # (c) 2009,2010 Dick Streefland <dick@streefland.net>
  7 #
  8 # (c) 2011      Corentin Chary <corentin.chary@gmail.com>
  9 #
 10 # Licensed under the GNU General Public License, version 2 (GPLv2).
 11 # ----------------------------------------------------------------------
 12 
 13 check_vmlinux()
 14 {
 15         # Use readelf to check if it's a valid ELF
 16         # TODO: find a better to way to check that it's really vmlinux
 17         #       and not just an elf
 18         readelf -h $1 > /dev/null 2>&1 || return 1
 19 
 20         cat $1
 21         exit 0
 22 }
 23 
 24 try_decompress()
 25 {
 26         # The obscure use of the "tr" filter is to work around older versions of
 27         # "grep" that report the byte offset of the line instead of the pattern.
 28 
 29         # Try to find the header ($1) and decompress from here
 30         for     pos in `tr "$1\n$2" "\n$2=" < "$img" | grep -abo "^$2"`
 31         do
 32                 pos=${pos%%:*}
 33                 tail -c+$pos "$img" | $3 > $tmp 2> /dev/null
 34                 check_vmlinux $tmp
 35         done
 36 }
 37 
 38 # Check invocation:
 39 me=${0##*/}
 40 img=$1
 41 if      [ $# -ne 1 -o ! -s "$img" ]
 42 then
 43         echo "Usage: $me <kernel-image>" >&2
 44         exit 2
 45 fi
 46 
 47 # Prepare temp files:
 48 tmp=$(mktemp /tmp/vmlinux-XXX)
 49 trap "rm -f $tmp" 0
 50 
 51 # Initial attempt for uncompressed images or objects:
 52 check_vmlinux $img
 53 
 54 # That didn't work, so retry after decompression.
 55 try_decompress '\037\213\010' xy    gunzip
 56 try_decompress '\3757zXZ\000' abcde unxz
 57 try_decompress 'BZh'          xy    bunzip2
 58 try_decompress '\135\0\0\0'   xxx   unlzma
 59 try_decompress '\211\114\132' xy    'lzop -d'
 60 
 61 # Bail out:
 62 echo "$me: Cannot find vmlinux." >&2

This page was automatically generated by LXR 0.3.1 (source).  •  Linux is a registered trademark of Linus Torvalds  •  Contact us