How to list all major partitions with their labels?
As existing answers already show, there seems to be no "unique way" to achieve that. So I started combining ideas from allover, joining them into a script (or rather a "script library") to have them checked sequentially (until a good hit was made), and integrated that into my "Device Documentation Tool" named Adebar. Those interested can find it in the lib/partitions.lib file. As Adebar is open-source (GPLv2), feel free to copy and use it – or fork the project and improve it.

The full solution is a bit long to post here (as said, you can grab it at Github), but as our policy is to include at least the general part in the post, here's what it does:

Different sources provide different sets of details, so it tries the "best ones" first – and then recurses down until at least something was found.


/proc/dumchar_info gives the most details, so this is tried first. Happy MTK users will get this.
/proc/mtd is the second best source.
/proc/emmc should have almost as much as the previous candidates, but is a bit tricky to use
/dev/block/platform/*/by-name, cross-checked with …
/proc/partitions cross-checked with /proc/mounts gives us at least the partitions mounted


So the script I've built basically walks the sources in this order, stopping as soon as it was able to collect details (e.g. if /proc/dumchar_info was found, no need to parse all the others). All of them put into separate functions, returning data using the very same structure, one could even merge results from all of them.

If someone can come up with a better solution, I'm of course always open for the idea :)