dumpimage: fit: extract FIT images
The dumpimage is able to extract components contained in a FIT image:
$ ./dumpimage -T flat_dt -i CONTAINER.ITB -p INDEX FILE
The CONTAINER.ITB is a regular FIT container file. The INDEX is the poisition
of the sub-image to be retrieved, and FILE is the file (path+name) to save the
extracted sub-image.
For example, given the following kernel.its to build a kernel.itb:
/dts-v1/;
/ {
...
images {
kernel@1 {
description = "Kernel 2.6.32-34";
data = /incbin/("/boot/vmlinuz-2.6.32-34-generic");
type = "kernel";
arch = "ppc";
os = "linux";
compression = "gzip";
load = <00000000>;
entry = <00000000>;
hash@1 {
algo = "md5";
};
};
...
};
...
};
The dumpimage can extract the 'kernel@1' node through the following command:
$ ./dumpimage -T flat_dt -i kernel.itb -p 0 kernel
Extracted:
Image 0 (kernel@1)
Description: Kernel 2.6.32-34
Created: Wed Oct 22 15:50:26 2014
Type: Kernel Image
Compression: gzip compressed
Data Size: 4040128 Bytes = 3945.44 kB = 3.85 MB
Architecture: PowerPC
OS: Linux
Load Address: 0x00000000
Entry Point: 0x00000000
Hash algo: md5
Hash value: 22352ad39bdc03e2e50f9cc28c1c3652
Which results in the file 'kernel' being exactly the same as '/boot/vmlinuz-2.6.32-34-generic'.
Signed-off-by: Guilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
This commit is contained in:
committed by
Tom Rini
parent
67f946cd18
commit
39931f966a
@@ -112,6 +112,33 @@ static void fit_get_debug(const void *fit, int noffset,
|
||||
fdt_strerror(err));
|
||||
}
|
||||
|
||||
/**
|
||||
* fit_get_subimage_count - get component (sub-image) count
|
||||
* @fit: pointer to the FIT format image header
|
||||
* @images_noffset: offset of images node
|
||||
*
|
||||
* returns:
|
||||
* number of image components
|
||||
*/
|
||||
int fit_get_subimage_count(const void *fit, int images_noffset)
|
||||
{
|
||||
int noffset;
|
||||
int ndepth;
|
||||
int count = 0;
|
||||
|
||||
/* Process its subnodes, print out component images details */
|
||||
for (ndepth = 0, count = 0,
|
||||
noffset = fdt_next_node(fit, images_noffset, &ndepth);
|
||||
(noffset >= 0) && (ndepth > 0);
|
||||
noffset = fdt_next_node(fit, noffset, &ndepth)) {
|
||||
if (ndepth == 1) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_FIT_SPL_PRINT)
|
||||
/**
|
||||
* fit_print_contents - prints out the contents of the FIT format image
|
||||
@@ -423,7 +450,8 @@ void fit_image_print(const void *fit, int image_noffset, const char *p)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !defined(CONFIG_SPL_BUILD) || defined(CONFIG_FIT_SPL_PRINT) */
|
||||
|
||||
/**
|
||||
* fit_get_desc - get node description property
|
||||
|
||||
Reference in New Issue
Block a user