35

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.

1
  • 3
    fdisk works if you pass it a device like fdisk -l /dev/block/mmcblk0
    – endolith
    Commented Oct 4, 2014 at 17:21

9 Answers 9

14

I believe you want: cat /proc/mtd.

Also useful: mount.

3
  • 7
    cat /proc/partitions shows a list of all the partitions too. I think mount correlates with cat /proc/mounts. Ah, good 'ol /proc Commented Jul 18, 2013 at 11:35
  • all I get is dev: size erasesize name whether I run as su or not. android.stackexchange.com/q/53225/693
    – endolith
    Commented Sep 28, 2013 at 14:17
  • 7
    /proc/mtd is not available on all devices, while /proc/partitions should be.
    – Izzy
    Commented Jul 20, 2015 at 16:33
40

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:

  1. 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)

  2. 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)

  1. 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)

  2. 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 -> /dev/block/mmcblk0p6
      lrwxrwxrwx root     root              2014-01-20 11:29 apnhlos -> /dev/block/mmcblk0p1
      lrwxrwxrwx root     root              2014-01-20 11:29 backup -> /dev/block/mmcblk0p17
      lrwxrwxrwx root     root              2014-01-20 11:29 boot -> /dev/block/mmcblk0p14
      lrwxrwxrwx root     root              2014-01-20 11:29 hidden -> /dev/block/mmcblk0p25
      lrwxrwxrwx root     root              2014-01-20 11:29 modem -> /dev/block/mmcblk0p2
      lrwxrwxrwx root     root              2014-01-20 11:29 persdata -> /dev/block/mmcblk0p22
      lrwxrwxrwx root     root              2014-01-20 11:29 persist -> /dev/block/mmcblk0p21
      lrwxrwxrwx root     root              2014-01-20 11:29 recovery -> /dev/block/mmcblk0p15
      lrwxrwxrwx root     root              2014-01-20 11:29 system -> /dev/block/mmcblk0p23
      lrwxrwxrwx root     root              2014-01-20 11:29 tz -> /dev/block/mmcblk0p8
      lrwxrwxrwx root     root              2014-01-20 11:29 userdata -> /dev/block/mmcblk0p26
      

      (... cut for space reasons)

2
  • 1
    Don't have /dev/block/platform/xxx/by-name. Did have /proc/emmc, which is similar, but doesn't list the boot partitions. Also don't have cat /proc/mounts, but used mount instead.
    – jiggunjer
    Commented Feb 18, 2016 at 4:00
  • I m trying to figure out vbmeta partition size & location. Where is that Commented Oct 8, 2021 at 3:18
10

Old thread but found something nobody else has mentioned... just in case anyone finds it useful.

ls -la /dev/block/bootdevice/by-name The directory contains named symlinks to all the partitons.

5
  • already answered, you just didn't read
    – alecxs
    Commented Dec 22, 2019 at 14:40
  • 4
    @alecxs nobody here has pointed out that specific directory, it can occasionally be useful when other solutions don't have the information you want. I fail to see the purpose of your comment. Commented Dec 23, 2019 at 15:11
  • so i didn't read. the path makes the difference
    – alecxs
    Commented Dec 23, 2019 at 16:21
  • 2
    if you like, you can improve your answer with ls -l $(find /dev/block -name by-name) this will cover all possible paths (which of course varies for other devices)
    – alecxs
    Commented Dec 23, 2019 at 16:28
  • @alecxs Confirmed, tested working in termux-v0.79. Celeb solution only worked in my TWRP 3.7.0 terminal.
    – Unknown123
    Commented Jan 2, 2023 at 17:42
8

Even more useful information can be obtained from parted. An example when the block device is /dev/block/mmcblk0:

~ # parted /dev/block/mmcblk0 print
Model: MMC SEM04G (sd/mmc)
Disk /dev/block/mmcblk0: 3959MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name       Flags
10      524kB   1573kB  1049kB               PIT
 6      1573kB  3146kB  1573kB               CSPSA FS
 7      4194kB  14.7MB  10.5MB  ext4         EFS
 2      14.7MB  31.5MB  16.8MB  ext4         Modem FS
14      32.5MB  34.6MB  2097kB               SBL
16      34.6MB  36.7MB  2097kB               SBL_2
 1      36.7MB  53.5MB  16.8MB               PARAM
12      53.5MB  55.6MB  2097kB               IPL Modem
13      55.6MB  72.4MB  16.8MB               Modem
15      72.4MB  89.1MB  16.8MB               Kernel
17      89.1MB  106MB   16.8MB               Kernel2
 3      106MB   748MB   642MB   ext4         SYSTEM
 5      748MB   2056MB  1309MB  ext4         DATAFS
 4      2056MB  2377MB  321MB   ext4         CACHEFS
 9      2377MB  2713MB  336MB   ext4         HIDDEN
11      2713MB  2765MB  52.4MB               Fota
 8      2765MB  3949MB  1184MB               UMS

~ #
4
  • 6
    parted not installed on my device, so presumably not available by default. Commented Nov 2, 2015 at 9:00
  • 3
    how do you get parted installed?
    – endolith
    Commented Dec 12, 2016 at 1:43
  • 3
    parted isn't available on android devices by default, solution is not viable
    – CybeX
    Commented Feb 8, 2021 at 1:11
  • @endolith, e.g. with Termux (in 2023)
    – Sunny Cove
    Commented Dec 2, 2023 at 11:07
8

You can use fdisk via busybox on a droid. So, assuming you have the busybox binary on your rom, and it's on your path, the command would simply be:

busybox fdisk [the various fdisk options...]

Example output of an i9305 with TWRP recovery running (v3.5.0_9-0):

~ # busybox fdisk -l /dev/block/mmcblk0
Found valid GPT with protective MBR; using GPT

Disk /dev/block/mmcblk0: 30777344 sectors, 2740M
Logical sector size: 512
Disk identifier (GUID): 52444e41-494f-2044-4d4d-43204449534b
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 30777310

Number  Start (sector)    End (sector)  Size       Code  Name
   1            8192           16383       4096K   0700  BOTA0
   2           16384           24575       4096K   0700  BOTA1
   3           24576           65535       20.0M   0700  EFS
   4           65536           73727       4096K   0700  m9kefs1
   5           73728           81919       4096K   0700  m9kefs2
   6           81920           90111       4096K   0700  m9kefs3
   7           90112          106495       8192K   0700  PARAM
   8          106496          122879       8192K   0700  BOOT
   9          122880          139263       8192K   0700  RECOVERY
  10          139264          319487       88.0M   0700  RADIO
  11          319488          843775        256M   0700  TOMBSTONES
  12          843776         2940927       1024M   0700  CACHE
  13         2940928         6086655       1536M   0700  SYSTEM
  14         6086656         7233535        560M   0700  HIDDEN
  15         7233536         7249919       8192K   0700  OTA
  16         7249920        30769151       11.2G   0700  USERDATA
0
3

You can see sizes and usage statistics of all mounted partitions by simply using this command:

df

Note, the typical df -h does not work here and is not needed because the output is already in megabytes. The command works within adb shell and the Android terminal emulator, but not in the Recovery mode terminal because nothing is mounted at that point.

1

For internal storage only, you can install DiskInfo. But it doesn't show the file system of my SD card.

1

for listing mmcblk0 partitions:

cat /proc/dumchar_info

Part_Name   Size    StartAddr   Type    MapTo
preloader    0x0000000000600000   0x0000000000000000   2   /dev/misc-sd
mbr          0x0000000000080000   0x0000000000000000   2   /dev/block/mmcblk0
ebr1         0x0000000000080000   0x0000000000080000   2   /dev/block/mmcblk0p1
pro_info     0x0000000000300000   0x0000000000100000   2   /dev/block/mmcblk0
nvram        0x0000000000500000   0x0000000000400000   2   /dev/block/mmcblk0
protect_f    0x0000000000a00000   0x0000000000900000   2   /dev/block/mmcblk0p2
protect_s    0x0000000000a00000   0x0000000001300000   2   /dev/block/mmcblk0p3
seccfg       0x0000000000020000   0x0000000001d00000   2   /dev/block/mmcblk0
uboot        0x0000000000060000   0x0000000001d20000   2   /dev/block/mmcblk0
bootimg      0x0000000000600000   0x0000000001d80000   2   /dev/block/mmcblk0
recovery     0x0000000000600000   0x0000000002380000   2   /dev/block/mmcblk0
sec_ro       0x0000000000600000   0x0000000002980000   2   /dev/block/mmcblk0p4
misc         0x0000000000080000   0x0000000002f80000   2   /dev/block/mmcblk0
logo         0x0000000000300000   0x0000000003000000   2   /dev/block/mmcblk0
expdb        0x0000000000080000   0x0000000003300000   2   /dev/block/mmcblk0
android      0x0000000000a00000   0x0000000003380000   2   /dev/block/mmcblk0p5
cache        0x000000002bc00000   0x0000000003d80000   2   /dev/block/mmcblk0p6
usrdata      0x00000000b6ca0000   0x000000002f980000   2   /dev/block/mmcblk0p7
bmtpool      0x0000000000000000   0x0000000037780000   2   /dev/block/mmcblk0
Part_Name:Partition name you should open;
Size:size of partition
StartAddr:Start Address of partition;
Type:Type of partition(MTD=1,EMMC=2)
MapTo:actual device you operate
3
  • 1
    cat: /proc/dumchar_info: No such file or directory.
    – Ohad Cohen
    Commented Nov 12, 2020 at 11:13
  • @OhadCohen it is working on some ancient mediatek devices
    – alecxs
    Commented Nov 12, 2020 at 12:10
  • 2
    On my device there is a /proc/diskstats with similar info, though not as pretty formatted. (TWRP recovery)
    – doak
    Commented Feb 1, 2021 at 19:38
1

Try this in the path -

dev/block/platform/******/by-name # ls -al

try out all directory inside dev/block/platform/**/byname

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .