[U-Boot-Users] Re: JFFS2 images written from U-Boot unusable in Linux? (Round 2)

Martin Egholm Nielsen martin at egholm-nielsen.dk
Mon Jan 10 09:50:19 CET 2005

> Did you try upgrading to the latest MTD tools?
I'm running with mkfs.jffs2 from ELDK 3.1 and tried a similar version on 
target - namely revision 1.42.

=== 8< 8< 8< ===
>>> # mount -t jffs2 /dev/mtdblock0 /mnt
>>> jffs2: Erase block size too small (16KiB). Using virtual blocks size 
>>> (32KiB) instead
>>> Cowardly refusing to erase blocks on filesystem with no valid JFFS2 
>>> nodes
>>> empty_blocks 0, bad_blocks 5, c->nr_blocks 2048
>>> mount: Mounting /dev/mtdblock0 on /mnt failed: Invalid argument
>> Martin, I noticed something similar recently when I upgraded kernels 
>> to a more recent one (not sure the exact version change), and it 
>> looked like actually the problem was that mtd-utils mkjffs2 tool was 
>> not agreeing with the kernel about how what the FS should look like, 
>> when dealing with entries which are both in the filetree being turned 
>> into the image, and also in a device_table.txt file (for example if 
>> you're specifying permission changes or ownership changes that way).  
>> The mtdutils tool seemed to be creating 2 physical copies of the file 
>> in the root_fs (which massively increased its size), and marking one 
>> of the copies as "erased" or something but not actually removing it.  
>> When the new kernel saw that, it borked.  I fixed the problem 
>> temporarily by just chmod'ing the files I wanted to change perms on 
>> before running mkjffs2 -- but a better fix would be to resolve the bug 
>> in the tool instead.  I haven't had a chance to do this yet.  Anyway, 
But I have no such file. I'm just creating this simple root-filesystem...

But I'm getting some info from the Kernel at startup:

Scanning device for bad blocks
Bad eraseblock 1 at 0x00004000
Bad eraseblock 2 at 0x00008000
Bad eraseblock 3 at 0x0000c000
Bad eraseblock 4 at 0x00010000
Bad eraseblock 5 at 0x00014000
Bad eraseblock 6 at 0x00018000
Bad eraseblock 7 at 0x0001c000
Bad eraseblock 1600 at 0x01900000

Though I'm not sure what it means, or if has anything to do with this at 

>> I think it's not u-boot's fault -- u-boot is actually being better 
>> than the kernel about reading a damaged JFFS2 fs, where the kernel 
>> refuses to.
Sounds resonable to assume yes - I just wondered whether U-Boot had some 
sophisticated way of writing the image to the nand, that required some 
specific kernel configuration.


More information about the U-Boot mailing list