可以通过下面的命令来查看目前系统中到底有多少分区:
cat /proc/partitions
这条命令会显示系统中的所有分区,以及每个分区的大小是多少个block,还有主设备号和次设备号等信息。
major下的数字代表这个分区所在设备的主设备号,同样minor下的数字代表次设备号。而#blocks下的数字代表这个分区占用了多少块。name下的字符串代表了这个分区的名字。
rk3568_ehome_ba200_a1:/ # cat /proc/partitions
major minor #blocks name
1 0 8192 ram0
1 1 8192 ram1
1 2 8192 ram2
1 3 8192 ram3
1 4 8192 ram4
1 5 8192 ram5
1 6 8192 ram6
1 7 8192 ram7
1 8 8192 ram8
1 9 8192 ram9
1 10 8192 ram10
1 11 8192 ram11
1 12 8192 ram12
1 13 8192 ram13
1 14 8192 ram14
1 15 8192 ram15
254 0 1003144 zram0
179 0 15267840 mmcblk2
179 1 4096 mmcblk2p1
179 2 4096 mmcblk2p2
179 3 4096 mmcblk2p3
179 4 4096 mmcblk2p4
179 5 4096 mmcblk2p5
179 6 1024 mmcblk2p6
179 7 51200 mmcblk2p7
179 8 98304 mmcblk2p8
179 9 393216 mmcblk2p9
179 10 393216 mmcblk2p10
179 11 16384 mmcblk2p11
179 12 16384 mmcblk2p12
179 13 1024 mmcblk2p13
179 14 3186688 mmcblk2p14
179 15 11085792 mmcblk2p15
253 0 937084 dm-0
253 1 112072 dm-1
253 2 222680 dm-2
253 3 145724 dm-3
253 4 2492 dm-4
253 5 882808 dm-5
253 6 11085792 dm-6
如果想知道每个挂载到文件系统上的分区大小和使用情况的信息,可以像普通Linux一样使用df命令:
rk3568_ehome_ba200_a1:/ # df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 977M 820K 976M 1% /dev
tmpfs 977M 0 977M 0% /mnt
/dev/block/mmcblk2p11 11M 144K 11M 2% /metadata
/dev/block/dm-0 914M 911M 2.7M 100% /
/dev/block/dm-5 722M 96K 722M 1% /mnt/scratch
overlay 722M 96K 722M 1% /system
overlay 722M 96K 722M 1% /vendor
overlay 722M 96K 722M 1% /odm
overlay 722M 96K 722M 1% /product
overlay 722M 96K 722M 1% /system_ext
tmpfs 977M 0 977M 0% /apex
tmpfs 977M 264K 976M 1% /linkerconfig
/dev/block/mmcblk2p10 356M 688K 355M 1% /cache
/dev/block/mmcblk2p12 11M 28K 11M 1% /mnt/ehomeprofile
/dev/block/dm-6 10G 17M 10G 1% /data
tmpfs 977M 0 977M 0% /data_mirror
/dev/fuse 10G 17M 10G 1% /mnt/user/0/emulated
不过df命令只显示了在文件系统上的挂载点,并没有显示对应的块设备是哪个,这点可以通过使用mount命令来弥补:
df和mount命令的结果相结合,可以得到更加完整的信息,比如对于/system来说,其块设备是/dev/block/platform/msm_sdcc.1/by-name/system,文件系统使用的是ext4,大小是1.9G,当前已使用了1.6G,等等。
如果想看某些分区的别名信息,可以通过下面的命令:
rk3568_ehome_ba200_a1:/ # ls -al /dev/block/by-name/
total 0
drwxr-xr-x 2 root root 400 2022-08-23 11:05 .
drwxr-xr-x 6 root root 1280 2022-08-23 11:05 ..
lrwxrwxrwx 1 root root 20 2022-08-23 11:05 backup -> /dev/block/mmcblk2p9
lrwxrwxrwx 1 root root 21 2022-08-23 11:05 baseparameter -> /dev/block/mmcblk2p13
lrwxrwxrwx 1 root root 20 2022-08-23 11:05 boot -> /dev/block/mmcblk2p7
lrwxrwxrwx 1 root root 21 2022-08-23 11:05 cache -> /dev/block/mmcblk2p10
lrwxrwxrwx 1 root root 20 2022-08-23 11:05 dtbo -> /dev/block/mmcblk2p5
lrwxrwxrwx 1 root root 21 2022-08-23 11:05 ehomeprofile -> /dev/block/mmcblk2p12
lrwxrwxrwx 1 root root 21 2022-08-23 11:05 metadata -> /dev/block/mmcblk2p11
lrwxrwxrwx 1 root root 20 2022-08-23 11:05 misc -> /dev/block/mmcblk2p4
lrwxrwxrwx 1 root root 18 2022-08-23 11:05 mmcblk2 -> /dev/block/mmcblk2
lrwxrwxrwx 1 root root 23 2022-08-23 11:05 mmcblk2boot0 -> /dev/block/mmcblk2boot0
lrwxrwxrwx 1 root root 23 2022-08-23 11:05 mmcblk2boot1 -> /dev/block/mmcblk2boot1
lrwxrwxrwx 1 root root 20 2022-08-23 11:05 recovery -> /dev/block/mmcblk2p8
lrwxrwxrwx 1 root root 20 2022-08-23 11:05 security -> /dev/block/mmcblk2p1
lrwxrwxrwx 1 root root 21 2022-08-23 11:05 super -> /dev/block/mmcblk2p14
lrwxrwxrwx 1 root root 20 2022-08-23 11:05 trust -> /dev/block/mmcblk2p3
lrwxrwxrwx 1 root root 20 2022-08-23 11:05 uboot -> /dev/block/mmcblk2p2
lrwxrwxrwx 1 root root 21 2022-08-23 11:05 userdata -> /dev/block/mmcblk2p15
lrwxrwxrwx 1 root root 20 2022-08-23 11:05 vbmeta -> /dev/block/mmcblk2p6
有了这些信息,就可以使用dd命令,将感兴趣的分区全部倒出来进行分析。比如,如果想将TrustZone相关的tz分区倒出到sdcard上,可以使用下面的命令:
dd if=/dev/block/platform/msm_sdcc.1/by-name of=/sdcard/tz.img