Re: Discovering current MTD partition

umar
2011-04-29T00:54:07Z

> On Thu, 2011-04-28 at 13:26 -0400, umar@janteq.com wrote:
>> # cat /proc/mounts
>> rootfs / rootfs rw 0 0
>> ubi0:rootfs / ubifs rw,sync,relatime 0 0
>> proc /proc proc rw,relatime 0 0
>> tmpfs /tmp tmpfs rw,relatime 0 0
>> devpts /dev/pts devpts rw,relatime,gid=5,mode=620 0 0
>> sysfs /sys sysfs rw,relatime 0 0
>> debugfs /debug debugfs rw,relatime 0 0
>> tmpfs /webSvr/logs tmpfs rw,relatime 0 0
>>
>> # cat /proc/mtd
>> dev: size erasesize name
>> mtd0: 00020000 00020000 "bst"
>> mtd1: 00500000 00020000 "ptb"
>> mtd2: 00500000 00020000 "bld"
>> mtd3: 00500000 00020000 "hal"
>> mtd4: 00500000 00020000 "pba"
>> mtd5: 00800000 00020000 "pri"
>> mtd6: 00800000 00020000 "sec"
>> mtd7: 03c00000 00020000 "bak"
>> mtd8: 03c00000 00020000 "rmd"
>> mtd9: 03c00000 00020000 "rom"
>> mtd10: 00300000 00020000 "dsp"
>> mtd11: 03c00000 00020000 "lnx"
>>
>> # df
>> Filesystem Size Used Available Use% Mounted on
>> ubi0:rootfs 52.7M 35.1M 17.5M 67% /
>> tmpfs 65.4M 32.0K 65.4M 0% /tmp
>> tmpfs 65.4M 32.0K 65.4M 0% /webSvr/logs
>>
>> There's nothing above I can use to infer about which /dev/mtdXX is
>> currently booted - at least on this system.
>> I have resorted to my backup strategy of parsing /proc/cmdline within
>> Python to determine which partition is booted. *sigh*
>
> Yes, this is a bit messy and complex. Anyway, here is the algorithm for
> you, in short. Ask specific questions if it is not clear, I do not have
> time right now to write long mails. Anyway, you need to spend some time
> and understand the relations between all these mtdX, ubiY, ubiY_Z,
> ubiY:name...
>
> So, in your case you know your rootfs is "ubi0:rootfs". This means that
> a) your rootfs is an UBI volume
> b) this UBI volume belongs to the UBI device 0 (there may be several
> of them - ubi1, ubi2, etc). This is the typical case, I do not
> know if anyone really has more than one UBI device ever.
> c) You know that the volume name is "rootfs".
>
> You also should know that there is 1-1 correspondence between MTD and
> UBI devices - one UBI device sits on top (and fully controls) one MTD
> device. To find out the MTD device number you look
> at: /sys/class/ubi/ubi0/mtd_num
>
> There you see the number X, this means your MTD device is mtdX
>
> P.S. If you had set-up similar to Ricard's, you' also need to look
> at /proc/cmdline to translate "rootfs" or "/dev/rootfs" to
> "ubi0:rootfs". Not, in this case it is just co-incidence that you named
> your volume "rootfs", if you named it "pussy_cat", you' have the
> following in your /proc/mounts:
>
> rootfs / rootfs rw 0 0
> ubi0:pussy_cat / ubifs rw,sync,relatime 0 0
>
> HTH.
>

Yes, that definitely helps!

# cat /sys/class/ubi/ubi0/mtd_num
11

Thanks :)