'ubi clone' from Live NAND.

Bill Pringlemeir bpringle at sympatico.ca
Wed Mar 6 15:08:09 EST 2013


I have a 'ubinize' image that I have created on a PC and I have a 'raw'
copy of the NAND flash on a 'Live' Linux distribution; the target was
cleanly unmounted.  I use nandsim, with all my real FLASH id bytes and
setup partitions as per the target.  Here is the sequence I follow on my
PC.

 modprobe nandsim first_id_byte=0x2c second_id_byte=0xda third_id_byte=0x90 fourth_id_byte=0x95 parts=2,64,64
 flash_erase /dev/mtd3 0 0
 ubiformat /dev/mtd3 -f rootfs.ubi
 modprobe ubi mtd=3
 mount -t ubifs /dev/ubi0_3 /mnt/ubifs

If 'rootfs.ubi' is the 'ubinize' image, then I can mount and see the
file system on my PC.  However, if the 'rootfs.ubi' is a 'dump' of the
NAND flash, I fail with the following 'dmesg',

[527676.968929] UBI: background thread "ubi_bgt0d" started, PID 5253
[527681.522291] UBIFS error (pid 5261): ubifs_read_node: bad node type (255 but expected 6)
[527681.522295] UBIFS error (pid 5261): ubifs_read_node: bad node at LEB 0:0, LEB mapping status 0
[527681.522296] Not a node, first 24 bytes:
[527681.522298] 00000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........................
[527681.522301] Pid: 5261, comm: mount Tainted: P        W  O 3.5.0-25-generic #39-Ubuntu
[527681.522302] Call Trace:
[527681.522309]  [<ffffffffa0e8cf25>] ubifs_read_node+0x255/0x2d0 [ubifs]
[527681.522314]  [<ffffffffa0e8a320>] ? ubifs_read_sb_node+0x30/0x90 [ubifs]
[527681.522318]  [<ffffffffa0e8a343>] ubifs_read_sb_node+0x53/0x90 [ubifs]
[527681.522321]  [<ffffffffa0e8a41a>] ubifs_read_superblock+0x3a/0x730 [ubifs]
[527681.522325]  [<ffffffffa0e87a96>] ? mount_ubifs+0x3f6/0x15a0 [ubifs]
[527681.522328]  [<ffffffffa0e87b87>] mount_ubifs+0x4e7/0x15a0 [ubifs]
[527681.522331]  [<ffffffffa0e897ac>] ubifs_mount+0x4ac/0x730 [ubifs]
[527681.522335]  [<ffffffff81185b63>] mount_fs+0x43/0x1b0
[527681.522337]  [<ffffffff8119ef63>] ? find_filesystem+0x63/0x80
[527681.522339]  [<ffffffff8119fe34>] vfs_kern_mount+0x74/0x110
[527681.522341]  [<ffffffff811a07a4>] do_kern_mount+0x54/0x110
[527681.522343]  [<ffffffff811a20da>] do_mount+0x26a/0x890
[527681.522345]  [<ffffffff8113de2b>] ? strndup_user+0x5b/0x80
[527681.522347]  [<ffffffff811a284d>] sys_mount+0x8d/0xe0
[527681.522350]  [<ffffffff8168c969>] system_call_fastpath+0x16/0x1b

Also, the mount command fails with,

mount: wrong fs type, bad option, bad superblock on /dev/ubi0_3,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Do I have to skip bad block when 'dumping' the file from the device?  Is
there some incompatibilities between my PC ubifs and the target?  Should
I be using some tool under Linux that I have missed?  The 'dumping' is
simply a read of 'offset' and 'size'.  Should I be doing something with
OOB data?  Maybe a 64bit/32bit issue?  I didn't see anyone else with
this type of issue on the web.

Sorry, If I have missed some information.  I don't think I need to
instrument UBI/UbiFs.  It is just something wrong with my process (or it
can't be done for some reason).

tia,
Bill Pringlemeir.



More information about the linux-mtd mailing list