| .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 <haver@vnet.ibm.com> |
| .sp 0 |
| Drake Dowsett <dowsett@de.ibm.com> |
| .SH CONTACT |
| Andreas Arnez <arnez@de.ibm.com> |