UBIFS failure on SheevaPlug Basic
Andreas Bießmann
biessmann at corscience.de
Fri Nov 9 06:20:50 EST 2012
Dear Dimax,
On 09.11.2012 10:35, Dimax wrote:
> 1. Problem Description
> ---------------------------------
<snip>
> 1.2 Failure
> Everything is all right until I get power surge
> After that system fails with:
>
> Marvell>> boot
>
> UBI: mtd1 is detached from ubi0
> Creating 1 MTD partitions on "nand0":
> 0x000000500000-0x000020000000 : "mtd=2"
> UBI: attaching mtd1 to ubi0
> UBI: physical eraseblock size: 131072 bytes (128 KiB)
> UBI: logical eraseblock size: 129024 bytes
> UBI: smallest flash I/O unit: 2048
> UBI: sub-page size: 512
> UBI: VID header offset: 512 (aligned 512)
> UBI: data offset: 2048
> UBI: attached mtd1 to ubi0
> UBI: MTD device name: "mtd=2"
> UBI: MTD device size: 507 MiB
> UBI: number of good PEBs: 4055
> UBI: number of bad PEBs: 1
> UBI: max. allowed volumes: 128
> UBI: wear-leveling threshold: 4096
> UBI: number of internal volumes: 1
> UBI: number of user volumes: 1
> UBI: available PEBs: 0
> UBI: total number of reserved PEBs: 4055
> UBI: number of PEBs reserved for bad PEB handling: 40
> UBI: max/mean erase counter: 1/0
> UBIFS: recovery needed
> Error reading superblock on volume 'ubi:rootfs'!
> UBIFS not mounted, use ubifs mount to mount volume first!
> UBIFS not mounted, use ubifs mount to mount volume first!
> Wrong Image Format for bootm command
> ERROR: can't get kernel image!
>
we discussed that already:
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/145526
And a possible solution exists here:
http://patchwork.ozlabs.org/patch/195174/
> 1.3 Recovery
> If I run again from the USB stick and mount Flash partition Debian
> kernel manage to recover it:
>
> root at debian:~# mount -t ubifs ubi0:rootfs /mnt
> [ 306.205029] UBIFS: recovery needed
> [ 309.341987] UBIFS: recovery completed
> [ 309.345705] UBIFS: mounted UBI device 0, volume 0, name "rootfs"
> [ 309.351738] UBIFS: file system size: 515192832 bytes (503118 KiB,
> 491 MiB, 3993 LEBs)
> [ 309.359789] UBIFS: journal size: 25804800 bytes (25200 KiB,
> 24 MiB, 200 LEBs)
> [ 309.367495] UBIFS: media format: w4/r0 (latest is w4/r0)
> [ 309.373352] UBIFS: default compressor: lzo
> [ 309.377479] UBIFS: reserved for root: 4952683 bytes (4836 KiB)
>
> 2. Fixing
> ======
> 2.1. My first direction is to update u-boot with latest patches. There
> is a chance it will let u-boot be able to mount broken partition.
> There is another thread here where I work on it "Latest SheevaPlug u-boot"
>
> 2.2.
> My second plan is to separate rootfs partition into two partitions.
> One would be read only and will keep all static data. The second
> partition will be RW and will contain changing data.
> Actually all I need is to
> 1. Arrange let's say /flash_rw partiotion
> 2. Make rootfs partition read only
No, just use a /boot ro. All you need is kernel and initrd which should
be located in /boot. You can use a raw mtd for that too to avoid that
ubifs fails (as I understood is your fear).
Another alternative is to have two logical ubifs in a physical ubi
section. One of them is ro, the other rw mounted.
> 3. Fix u-boot settings
> And here I'm not sure how to do all this.
Just provide a correct cmdline so that the kernel knows about your
special nand organization. u-boot also want to know that to load the
kernel from appropriate position. Read about the mtdpart parameter in
u-boot, that should be sufficient for your needs.
> 2.3. u-boot
> I assume I should start with changing partitioning in u-boot:
> Currently I have
> mtdparts mtdparts=orion_nand:0xa0000 at 0x0(u-boot),0x400000 at 0x100000(uImage),0x1fb00000 at 0x500000(rootfs)
---------------------------------^----------------------------^
you will waste some space here! BTW did you think about your block size?
> How to split rootfs into two partitions?
You could handle it on a directory basis, just mount /boot from another fs.
Best regards
Andreas Bießmann
More information about the linux-mtd
mailing list