Re: Discovering current MTD partition

Artem Bityutskiy
2011-04-28T17:52:33Z

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.

--
Best Regards,
Artem Bityutskiy (Артём Битюцкий)