How can I view the Android internal partition table? I've rooted my device, put it in recovery mode, and have linked it to PC by adb shell.

How can I view the list of storage devices and partitions?

Note: fdisk doesn't work.
I usually use a combination of the following 4 commands and correlate them, since each of these commands gives a piece of the information that might be needed.

Summarily:


Using df lists the filesystem path alias and size info as seen below (total size, used, free and block size)  


Example output:  

root@ks01lte:/sdcard # df
df
Filesystem                               Size     Used     Free   Blksize
/dev                                   910.0M    92.0K   909.9M      4.0K
/firmware                               64.0M     8.7M    55.2M     16.0K
/firmware-modem                         64.0M    49.2M    14.8M     16.0K
/system                                  2.2G     2.2G    62.7M      4.0K
/data                                   11.9G     3.0G     8.9G      4.0K
/cache                                  31.5M     4.1M    27.4M      4.0K
/persist                                 7.9M     4.0M     3.8M      4.0K
/efs                                    13.8M     4.4M     9.3M      4.0K
/storage/emulated                      910.0M     0.0K   910.0M      4.0K
/storage/emulated/0                     11.9G     3.0G     8.9G      4.0K
/storage/emulated/0/Android/obb         11.9G     3.0G     8.9G      4.0K
/storage/emulated/legacy                11.9G     3.0G     8.9G      4.0K
/storage/emulated/legacy/Android/obb    11.9G     3.0G     8.9G      4.0K
/mnt/media_rw/extSdCard                 29.7G   251.8M    29.5G     32.0K
/storage/extSdCard                      29.7G   251.8M    29.5G     32.0K


(... cut for space reasons)

Using cat /proc/mounts shows the partition file path, the alias, the filesystem type, the startnig inode, the number of blocks, read/write status (and other parameters of the individual partition that I'm not entirely sure of)  


NB: The output of cat /proc/mounts can be a bit messy, but if you read it line by line (entry by entry) carefully you'll get the info  
Example output:

root@ks01lte:/sdcard # cat /proc/mounts
cat /proc/mounts
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,size=931840k,nr_inodes=124673,mode=755 0 0
devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/fs/cgroup tmpfs rw,seclabel,relatime,size=931840k,nr_inodes=124673,mode=750,gid=1000 0 0
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,noatime,discard,journal_checksum,journal_async_commit,noauto_da_alloc,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,seclabel,nosuid,nodev,noatime,discard,journal_checksum,journal_async_commit,noauto_da_alloc,errors=panic,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,seclabel,nosuid,nodev,noatime,discard,journal_checksum,journal_async_commit,noauto_da_alloc,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/efs /efs ext4 rw,seclabel,nosuid,nodev,noatime,discard,journal_checksum,journal_async_commit,noauto_da_alloc,data=ordered 0 0




(... cut for space reasons)


Using cat /proc/partitions you will get the actual partition name identifier and the number of blocks in the partition.  


Example output:  

root@ks01lte:/sdcard # cat /proc/partitions
cat /proc/partitions
major minor  #blocks  name
 253        0    1048576 vnswap0
 179        0   15388672 mmcblk0
 179        1      15360 mmcblk0p1
 179        2      58816 mmcblk0p2
 179        3        512 mmcblk0p3
 179        4         32 mmcblk0p4
 179        5         32 mmcblk0p5
 179        6       2048 mmcblk0p6
 179        7        512 mmcblk0p7
 179        8        512 mmcblk0p8
 179        9      10240 mmcblk0p9
 179       10      10240 mmcblk0p10
 179       11      14336 mmcblk0p11
 179       12       3072 mmcblk0p12
 179       13       3072 mmcblk0p13
 179       14      20480 mmcblk0p14
 179       15      20480 mmcblk0p15
 179       16      10240 mmcblk0p16
 179       17       7159 mmcblk0p17
 179       18       3072 mmcblk0p18 


(... cut for space reasons)  

Using ls -al /dev/block/platform/msm_sdcc.1/by-name you get the mapping between the partition alias and the path of actual partition file (you also get the owner, their user group, etc)  


Example output:

root@ks01lte:/sdcard # ls -al /dev/block/platform/msm_sdcc.1/by-name
ls -al /dev/block/platform/msm_sdcc.1/by-name
lrwxrwxrwx root     root              2014-01-20 11:29 aboot -&gt; /dev/block/mmcblk0p6
lrwxrwxrwx root     root              2014-01-20 11:29 apnhlos -&gt; /dev/block/mmcblk0p1
lrwxrwxrwx root     root              2014-01-20 11:29 backup -&gt; /dev/block/mmcblk0p17
lrwxrwxrwx root     root              2014-01-20 11:29 boot -&gt; /dev/block/mmcblk0p14
lrwxrwxrwx root     root              2014-01-20 11:29 hidden -&gt; /dev/block/mmcblk0p25
lrwxrwxrwx root     root              2014-01-20 11:29 modem -&gt; /dev/block/mmcblk0p2
lrwxrwxrwx root     root              2014-01-20 11:29 persdata -&gt; /dev/block/mmcblk0p22
lrwxrwxrwx root     root              2014-01-20 11:29 persist -&gt; /dev/block/mmcblk0p21
lrwxrwxrwx root     root              2014-01-20 11:29 recovery -&gt; /dev/block/mmcblk0p15
lrwxrwxrwx root     root              2014-01-20 11:29 system -&gt; /dev/block/mmcblk0p23
lrwxrwxrwx root     root              2014-01-20 11:29 tz -&gt; /dev/block/mmcblk0p8
lrwxrwxrwx root     root              2014-01-20 11:29 userdata -&gt; /dev/block/mmcblk0p26


(... cut for space reasons)