lkml.org 
[lkml]   [2011]   [Aug]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v3] scripts: add extract-vmlinux
    From
    Ping...

    I don't know any way to check vmlinux, we can only check if it is ELF,
    so this patch looks good.

    Michal?

    On Tue, Aug 16, 2011 at 4:46 PM, Corentin Chary <corentincj@iksaif.net> wrote:
    > This script can be used to extract vmlinux from a compressed
    > kernel image (bzImage, etc..). It's inspired from (a subset of)
    > extract-ikconfig.
    >
    > It's something a lot of people have been looking for (mainly
    > people with xen < 4 that doesn't support bzImages at all).
    >
    > Signed-off-by: Corentin Chary <corentincj@iksaif.net>
    > ---
    >
    > Since v1:
    > * update license
    >
    > Since v2:
    > * add some comments
    >
    >  scripts/extract-vmlinux |   62 +++++++++++++++++++++++++++++++++++++++++++++++
    >  1 files changed, 62 insertions(+), 0 deletions(-)
    >  create mode 100755 scripts/extract-vmlinux
    >
    > diff --git a/scripts/extract-vmlinux b/scripts/extract-vmlinux
    > new file mode 100755
    > index 0000000..4ab8517
    > --- /dev/null
    > +++ b/scripts/extract-vmlinux
    > @@ -0,0 +1,62 @@
    > +#!/bin/sh
    > +# ----------------------------------------------------------------------
    > +# extract-vmlinux - Extract uncompressed vmlinux from a kernel image
    > +#
    > +# Inspired from extract-ikconfig
    > +# (c) 2009,2010 Dick Streefland <dick@streefland.net>
    > +#
    > +# (c) 2011      Corentin Chary <corentin.chary@gmail.com>
    > +#
    > +# Licensed under the GNU General Public License, version 2 (GPLv2).
    > +# ----------------------------------------------------------------------
    > +
    > +check_vmlinux()
    > +{
    > +       # Use readelf to check if it's a valid ELF
    > +       # TODO: find a better to way to check that it's really vmlinux
    > +       #       and not just an elf
    > +       readelf -h $1 > /dev/null 2>&1 || return 1
    > +
    > +       cat $1
    > +       exit 0
    > +}
    > +
    > +try_decompress()
    > +{
    > +       # The obscure use of the "tr" filter is to work around older versions of
    > +       # "grep" that report the byte offset of the line instead of the pattern.
    > +
    > +       # Try to find the header ($1) and decompress from here
    > +       for     pos in `tr "$1\n$2" "\n$2=" < "$img" | grep -abo "^$2"`
    > +       do
    > +               pos=${pos%%:*}
    > +               tail -c+$pos "$img" | $3 > $tmp 2> /dev/null
    > +               check_vmlinux $tmp
    > +       done
    > +}
    > +
    > +# Check invocation:
    > +me=${0##*/}
    > +img=$1
    > +if     [ $# -ne 1 -o ! -s "$img" ]
    > +then
    > +       echo "Usage: $me <kernel-image>" >&2
    > +       exit 2
    > +fi
    > +
    > +# Prepare temp files:
    > +tmp=$(mktemp /tmp/vmlinux-XXX)
    > +trap "rm -f $tmp" 0
    > +
    > +# Initial attempt for uncompressed images or objects:
    > +check_vmlinux $img
    > +
    > +# That didn't work, so retry after decompression.
    > +try_decompress '\037\213\010' xy    gunzip
    > +try_decompress '\3757zXZ\000' abcde unxz
    > +try_decompress 'BZh'          xy    bunzip2
    > +try_decompress '\135\0\0\0'   xxx   unlzma
    > +try_decompress '\211\114\132' xy    'lzop -d'
    > +
    > +# Bail out:
    > +echo "$me: Cannot find vmlinux." >&2
    > --
    > 1.7.3.4
    >
    >
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2011-08-18 12:11    [W:0.029 / U:0.824 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site