.TH UNUBI 1 "NOVEMBER 2006" FSP "FSP Flashutils" .SH NAME unubi \- extract volumes/eraseblocks from a raw\-UBI image .SH SYNOPSIS \fBunubi [\-aevEV] [\-d \fIout\-dir\fB] [\-r \fIvolume\-id\fB] [\-b \fIblock\-size\fB] \fIimage\-file .SH DESCRIPTION .PP \fBunubi\fR reads an image file containing blocks of UBI headers and data (such as produced from \fBnand2bin\fR) and rebuilds the volumes within. The default operation (when no flags are given) is to rebuild all valid volumes found in the image. \fBunubi\fR can also read straight from the onboard MTD device (ex. /dev/mtdblock/NAND). .SH OPTIONS .IP "\-a, \-\-analyze" When flagged, analysis files are generated within the output directory. These may include tables and or graphs detailing statistics gathered from the eraseblock data. Files are prefixed `analysis_'. See \fBANALYSIS\fR. .IP "\-b, \-\-blocksize \fIblock\-size\fR" Specify in bytes the \fIimage\-file\fR eraseblock size. Sizes may be postfixed with `KiB' or `MiB' to indicate mebibytes or kibibytes respectively. Default is 128KiB. .IP "\-d, \-\-dir \fIoutput\-dir\fR" Specify the output directory. If no directory is specified, the default is `unubi_\fIimage\-file\fR' within the curent working directory. If the attempt to create the output directory fails, .B unubi will try to create it in /tmp before aborting. .IP "\-e, \-\-eb\-split" When flagged, images are created for each eraseblock in \fIimage\-file\fR regardless of its validity. Each image is the complete eraseblock, including headers and any space to the end of the eraseblock after where the data may end. Invalid images are named `ebEEEE', where EEEE is the physical index of the eraseblock in the image. Valid images are named `ebEEEE_VVV_NNN_RRR' where VVV is the known volume ID, NNN is the logical number and RRR is the version of the eraseblock data. Note that the version number is in hexadecimal. Invalid images may also contain this postfix, if the data in the header could be valid (ie. the header contains a resonable volume ID, but the header and/or data CRCs are not valid). If this is the case, images are named `ebEEEE_VVV_NNN_RRR.reason', so as to distinguish known values from non\-definite ones. See \fBREASON SUFFIXES\fR. .IP "\-r, \-\-rebuild \fIvolume\-id\fR" Specify a volume to rebuild. Can be used successively to specify several volumes to be rebuilt. Images are named `volumeVVV' where VVV is the volume ID. For each missing eraseblock, an error message will be printed. .IP "\-v, \-\-vol\-split" When flagged, images are created for each valid eraseblock in \fIimage\-file\fR. Since a vaild eraseblock will have a defined data start and data length, only this range will make up the image. Images are named `volVVV_NNN_RRR_EEEE', where, for the data in the eraseblock, VVV is the volume ID, NNN is the logical number, RRR is the version and EEEE is the phyisical index of the eraseblock in the image. .IP "\-V, \-\-vol\-split!" Same as above, only all images are the complete eraseblock (including headers, and raw data, even past the point where the data is supposed to end). Overrides \-v when both \-v and \-V are flagged. .SH ANALYSIS The following files will be generated during the analysis: .IP "analysis_ec_hdr.data" A space delimited table with these two columns for each eraseblock: the eraseblock's index or physical position in the image, and the eraseblock's erase count. The third column contains the erase count data sorted. .IP "analysis_vid_hdr.data" A space delimited table with these four colums for each eraseblock: the volume ID, the volume logical number, the leb version, and the data size. In addition there are a normalized column representing the volume ID and volume logical number, a normalized column representing the leb version, and a normalized column representing the data_size. These normalized columns are used to better draw the the gnuplot image. .IP "analysis_ec_hdr.plot" A gnuplot script for quickly viewing a sample output from the respective .data file. .IP "analysis_vid_hdr.plot" A gnuplot script for quickly viewing a sample output from the respective .data file. .SH REASONS SUFFIXES When \-\-eb\-split produces possibly invalid, though usable, eraseblocks, the known reason suffixes are: .IP ".ec_magic" The erase counter header did not contain a valid magic field. .IP ".ec_hdr_crc" The erase counter header did not contain a vaild header CRC field. .IP ".vid_magic" The volume ID header did not contain a valid magic field. .IP ".vid_hdr_crc" The volume ID header did not contain a valid header CRC field. .IP ".data_crc" The volume ID header did not contain a valid data CRC field. .SH EXAMPLES To extract and rebuild all valid volumes from demo.img (note the output directory will be /home/user/unubi_demo.img): .sp 1 .RS .B /home/user# unubi demo.img .sp 1 .RE To analyze demo.img as well as extract and rebuild volume 7: .sp 1 .RS .B /home/user# unubi \-a \-r 7 demo.img .sp 1 .RE To split demo.img into raw images for each eraseblock into the folder /var/eraseblocks: .sp 1 .RS .B /home/user# unubi \-e \-d /var/eraseblocks demo.img .SH AUTHORS Frank Haverkamp .sp 0 Drake Dowsett .SH CONTACT Andreas Arnez