diff options
author | Guilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com> | 2013-12-01 12:43:11 -0700 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-12-13 09:15:32 -0500 |
commit | a804b5ce2d84dca6f9e145003e588876adf2c71f (patch) | |
tree | 60342a722b9322a3672e7edd8d4ee260cbf44cf6 /tools/imagetool.h | |
parent | f86ed6a8d52c99bb2d17d3cac1647edca0c4399c (diff) |
Add dumpimage, a tool to extract data from U-Boot images
Given a multi-file image created through the mkimage's -d option:
$ mkimage -A x86 -O linux -T multi -n x86 -d vmlinuz:initrd.img:System.map \
multi.img
Image Name: x86
Created: Thu Jul 25 10:29:13 2013
Image Type: Intel x86 Linux Multi-File Image (gzip compressed)
Data Size: 13722956 Bytes = 13401.32 kB = 13.09 MB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 4040128 Bytes = 3945.44 kB = 3.85 MB
Image 1: 7991719 Bytes = 7804.41 kB = 7.62 MB
Image 2: 1691092 Bytes = 1651.46 kB = 1.61 MB
It is possible to perform the innverse operation -- extracting any file from
the image -- by using the dumpimage's -i option:
$ dumpimage -i multi.img -p 2 System.map
Although it's feasible to retrieve "data files" from image through scripting,
the requirement to embed tools such 'dd', 'awk' and 'sed' for this sole purpose
is cumbersome and unreliable -- once you must keep track of file sizes inside
the image. Furthermore, extracting data files using "dumpimage" tool is faster
than through scripting.
Signed-off-by: Guilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/imagetool.h')
-rw-r--r-- | tools/imagetool.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/imagetool.h b/tools/imagetool.h index b8adb61ed9..c2c9aea60e 100644 --- a/tools/imagetool.h +++ b/tools/imagetool.h @@ -34,7 +34,9 @@ struct image_tool_params { int dflag; int eflag; int fflag; + int iflag; int lflag; + int pflag; int vflag; int xflag; int skipcpy; @@ -50,6 +52,7 @@ struct image_tool_params { char *datafile; char *imagefile; char *cmdname; + const char *outfile; /* Output filename */ const char *keydir; /* Directory holding private keys */ const char *keydest; /* Destination .dtb for public key */ const char *comment; /* Comment to add to signature node */ @@ -97,6 +100,15 @@ struct image_type_params { void (*set_header) (void *, struct stat *, int, struct image_tool_params *); /* + * This function is used by the command to retrieve a data file from + * the image (i.e. dumpimage -i <image> -p <position> <data_file>). + * Thus the code to extract a file from an image must be put here. + * + * Returns 0 if the file was successfully retrieved from the image, + * or a negative value on error. + */ + int (*extract_datafile) (void *, struct image_tool_params *); + /* * Some image generation support for ex (default image type) supports * more than one type_ids, this callback function is used to check * whether input (-T <image_type>) is supported by registered image |