如何列出所有主要分区及其标签?


11

我想弄清楚设备上的所有分区以及它们的响应。安装点或标签(即知道哪个分区被保持systemrecoveryboot等等)。这需要与设备无关(因为我有多个设备)。目标是dd他们,知道哪个图像是什么。

我是否看到过列出分区挂载点的命令?–但是,目标只是已安装分区的分区列表。我全部需要它们,例如,/recovery在启动到“正常工作模式”时未安装。

到目前为止,我的建议已经提出了很多方法,但是它们都不能在我测试过的任何设备上运行:

  • cat /proc/mtd:这是空的或不存在
  • cat /proc/emmc:这是空的或不存在
  • cat /proc/dumchar_info:不存在(MTK / MediaTek)
  • ls -al /dev/block/platform/*/by-name:不存在或没有所需的详细信息

我可能会错过的任何想法吗?当然,我可以走动所有/dev/block/mmcblk0p*设备,抛弃它们,然后稍后将它们分类-但是后来我不得不对我的每个设备重复该调查(当有人找到另一个设备时又要重复一次),所以这不是解决方案。


编辑:请注意此问题的标记。我将必须通过ADB访问该信息,并且不想在交给我进行调查的设备上安装某些应用程序。认为它是“取证背景”(对设备没有任何更改),尽管并非完全如此;)

对于我最初的错误措辞也道歉:到目前为止,“挂载点”很有趣,它们揭示了分区的目的。我不想挂载/重新安装它们:)


希望您不要介意我添加了一个附加标签
HasH_BrowN 2014年

@HasH_BrowN并没有真正达到目的(我对在这里安装不感兴趣,这就是为什么我最初没有应用它的原因),但也没有真正造成伤害;)
Izzy

我正在为您准备另一个答案。指向KPARTX的答案对您有用吗?这似乎是正确的。
HasH_BrowN

在我看到之前不知道,恐怕...
Izzy

Answers:


7

正如现有答案已经表明的那样,似乎没有“唯一方法”可以实现这一目标。因此,我开始组合所有想法,将它们加入脚本(或更确切地说是“脚本库”)中,以便对它们进行顺序检查(直到获得成功),然后将其集成到名为“ Adebar ”的“设备文档工具”中。有兴趣的人可以在lib/partitions.lib文件中找到它。由于Adebar是开源(GPLv2),因此可以随意复制和使用它-或分叉项目并对其进行改进。

完整的解决方案要在此处发布有点长(如上所述,您可以在Github上获取它),但是由于我们的政策是至少在帖子中包含一般部分,因此它的作用是:

不同的来源提供了不同的详细信息集,因此它首先尝试“最佳”细节,然后递归向下直到至少找到某些东西为止。

  • /proc/dumchar_info提供最多的详细信息,因此请先尝试。开心的MTK用户会得到这个。
  • /proc/mtd 是第二好的来源。
  • /proc/emmc 应该几乎与以前的候选人一样多,但是使用起来有点棘手
  • /dev/block/platform/*/by-name,与…进行交叉核对
  • /proc/partitions交叉检查与/proc/mounts至少给我们安装了分区

因此,我构建的脚本基本上按此顺序移动源代码,并在能够收集详细信息时立即停止(例如,如果/proc/dumchar_info找到了,则无需解析所有其他代码)。它们全部放入单独的函数中,使用完全相同的结构返回数据,甚至可以合并所有函数的结果。

如果有人可以提出更好的解决方案,那么我当然总是乐于助人:)


4

我偶然发现了这个问题。我喜欢挑战...

我使用的工具:BusyBox

我想出了3个命令(列出了一个)来提供有关分区的一些信息

busybox ls -QAl --color=never /dev/block/platform/*/by-name  
输出:
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "DDR" -> "/dev/block/mmcblk0p4"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "aboot" -> "/dev/block/mmcblk0p5"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "abootf" -> "/dev/block/mmcblk0p16"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "boot" -> "/dev/block/mmcblk0p18"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "cache" -> "/dev/block/mmcblk0p41"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "dbi" -> "/dev/block/mmcblk0p3"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "dbibak" -> "/dev/block/mmcblk0p10"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "drm" -> "/dev/block/mmcblk0p36"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "eksst" -> "/dev/block/mmcblk0p29"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "encrypt" -> "/dev/block/mmcblk0p28"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "factory" -> "/dev/block/mmcblk0p39"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "fota" -> "/dev/block/mmcblk0p34"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "fsc" -> "/dev/block/mmcblk0p25"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "fsg" -> "/dev/block/mmcblk0p24"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "grow" -> "/dev/block/mmcblk0p43"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "laf" -> "/dev/block/mmcblk0p33"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "misc" -> "/dev/block/mmcblk0p32"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "modem" -> "/dev/block/mmcblk0p1"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "modemst1" -> "/dev/block/mmcblk0p21"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "modemst2" -> "/dev/block/mmcblk0p22"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "mpt" -> "/dev/block/mmcblk0p38"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "pad" -> "/dev/block/mmcblk0p8"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "pad1" -> "/dev/block/mmcblk0p23"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "pad2" -> "/dev/block/mmcblk0p27"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "persist" -> "/dev/block/mmcblk0p19"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "rct" -> "/dev/block/mmcblk0p30"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "recovery" -> "/dev/block/mmcblk0p20"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "rpm" -> "/dev/block/mmcblk0p6"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "rpmbak" -> "/dev/block/mmcblk0p11"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "rpmf" -> "/dev/block/mmcblk0p13"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "sbl1" -> "/dev/block/mmcblk0p2"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "sbl1b" -> "/dev/block/mmcblk0p9"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "sdif" -> "/dev/block/mmcblk0p15"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "sns" -> "/dev/block/mmcblk0p37"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "spare1" -> "/dev/block/mmcblk0p17"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "spare2" -> "/dev/block/mmcblk0p31"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "spare3" -> "/dev/block/mmcblk0p35"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "ssd" -> "/dev/block/mmcblk0p26"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "system" -> "/dev/block/mmcblk0p40"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "tz" -> "/dev/block/mmcblk0p7"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "tzbak" -> "/dev/block/mmcblk0p12"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "tzf" -> "/dev/block/mmcblk0p14"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "userdata" -> "/dev/block/mmcblk0p42"

busybox blkid
输出:
/dev/block/vold/179:65: LABEL="ANDROID" UUID="87B8-10F1"
/dev/block/mmcblk1p1: LABEL="ANDROID" UUID="87B8-10F1"
/dev/block/mmcblk0p42: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p41: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p40: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p38: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p37: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p36: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p19: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p1: UUID="00BC-614E"

busybox df -ma
输出:
Filesystem           1M-blocks      Used Available Use% Mounted on
tmpfs                     1415         0      1415   0% /dev
devpts                       0         0         0   0% /dev/pts
proc                         0         0         0   0% /proc
sysfs                        0         0         0   0% /sys
selinuxfs                    0         0         0   0% /sys/fs/selinux
debugfs                      0         0         0   0% /sys/kernel/debug
none                         0         0         0   0% /acct
none                      1415         0      1415   0% /sys/fs/cgroup
tmpfs                     1415         0      1415   0% /mnt/asec
tmpfs                     1415         0      1415   0% /mnt/obb
none                         0         0         0   0% /dev/cpuctl
/dev/block/platform/msm_sdcc.1/by-name/system                              2524       715      1808  28% /system
/dev/block/platform/msm_sdcc.1/by-name/userdata                         25620      5066     20514  20% /data
/dev/block/platform/msm_sdcc.1/by-name/cache                           834        13       820   2% /cache
/dev/block/platform/msm_sdcc.1/by-name/persist                            31         4        27  13% /persist
/dev/block/platform/msm_sdcc.1/by-name/modem                            64        56         7  88% /firmware
/dev/block/platform/msm_sdcc.1/by-name/sns                             8         4         4  52% /sns
/dev/block/platform/msm_sdcc.1/by-name/drm                             8         4         3  56% /persist-lg
/dev/block/platform/msm_sdcc.1/by-name/mpt                            31        13        18  41% /mpt
/dev/fuse                25620      5066     20514  20% /mnt/shell/emulated
/dev/block/vold/179:65   60891     10820     50071  18% /mnt/media_rw/sdcard1
/dev/fuse                60891     10820     50071  18% /storage/sdcard1

1
谢谢您的努力,瑞安!我也已经玩过busybox(不幸的是,在我交到的“某些朋友的设备”上没有该游戏)。blkid不会显示它是什么分区(启动,恢复等),并且*/by-name/*在所有设备上都不存在(并且当分区存在时,名称有时是非常隐秘的–例如,在我的LG Optimus 4X上,名称全都是3-只能使用字符,而不必“讲”。)df仅列出已安装的设备,因此在“正常模式”下运行时不会显示例如恢复-因此在这里使用起来更容易/proc/mounts
伊齐

您可能还想在Unix和Linux上进行询问。他们可能知道获取信息的方法。我研究的所有内容都说“ fdisk”或其他什么都不返回,或者在android系统上不存在的工具。
瑞安·康拉德

那也是我的经验。我以不同的角度问了一个关于SO 的相关问题,但目前还没有得到答复。害怕我问不可能的事。在支持设备的设备上很容易实现这一点/proc/mtd-但不幸的是,当前的设备似乎不再使用它了。在某些设备上,我什至找到了.fstab文件,但再次,a)并非全部,b)即使它们看起来也不可靠(某些部分肯定存在错误)。
伊齐

1

KPARTX

kpartx命令读取分区表并将分区映射到设备文件。它适用于设备和磁盘映像。这意味着我们可以将磁盘映像中的HFS分区映射到特殊的块设备文件,并通过寻址该块设备文件来挂载那些分区,就好像它是连接设备的一部分一样。

http://linuxsleuthing.blogspot.com/2012/10/christmas-come-early-hfshfs-mounting.html

链接中的示例是MacBook Pro,但只要它们以RAW形式提供给GNU Linux,其他磁盘映像就可以正常工作。(xmount-见下文)

usage : kpartx [-a|-d|-l] [-f] [-v] wholedisk

-a add partition devmappings
-r devmappings will be readonly
-d del partition devmappings
-u update partition devmappings
-l list partitions devmappings that would be added by -a
-p set device name-partition number delimiter
-g force GUID partition table (GPT)
-f force devmap create
-v verbose
-s sync mode. Don't return until the partitions are created`

挂载

xmount允许您在多种输入和输出硬盘映像类型之间进行实时转换。xmount使用FUSE(用户空间中的文件系统)创建虚拟文件系统,该文件系统包含输入映像的虚拟表示。虚拟表示可以采用原始DD,DMG,VHD,VirtualBox的虚拟磁盘文件格式,也可以采用VmWare的VMDK文件格式。输入图像可以是原始DD,EWF(专家见证压缩格式)或AFF(高级取证格式)文件。此外,xmount还支持对重定向到缓存文件的输出文件的虚拟写访问。这样就可以使用QEMU,KVM,VirtualBox,VmWare等启动获取的硬盘映像。

https://www.pinguin.lu/xmount


如果需要或需要,我可以提供其他详细信息。


我很欣赏您的热情,但是:我已经检查了这里的设备,没有一个可用的命令。从您的链接中猜测,这些是可用于Linux的工具-但是,如上所述,要研究的分区在Android设备上,并且不能直接从Linux机器上进行访问。而且:将分区映射到设备不会显示其内容(系统?数据?引导?),因此kpartx失效了。xmount听起来也不像解决那个问题。
伊齐

我真的以为我在做某事。我试过了。感谢您如此迅速的答复。将保持我的鼻子在磨刀石上。
HasH_BrowN

感谢您的努力!抱歉,结果只是不匹配。想象一下:我需要/recovery从正在运行的设备上获取分区。那不是在普通模式下挂载的。如何确定选择哪个分区?有了以上内容,我必须全部挑选出来,然后再查找。产生太多数据,并且花费太长时间。
伊齐

1
该DiskInfo应用程序将显示卸载的恢复分区。我刚刚检查过,我的(HTC One V)是mmcblk0p21。对于一个应用程序,它非常详细。
HasH_BrowN

1
我的想法,但是在哪里。可能没有按照我们想要的方式列出/存储。
HasH_BrowN

0

DiskInfo将是您想要的应用程序。它将显示所有安装点,以及所有未安装的和所有临时分区。

这只是一个图形界面,没有其他实际功能。完美满足您的需求。这确实需要在完全引导的设备上使用。不需要根。

屏幕截图
屏幕截图(点击查看大图)


1
抱歉,绝对不行。您一定错过了command-line标签:)猜猜我最好将其写清楚。我知道有很多应用程序可以显示这些详细信息,但是我需要通过来访问/收集它们adb shell,而没有其他应用程序的帮助(不能总是先将其安装在提供给我的设备上)。
伊齐

哎呀 它不会伤害我的感受,是否希望我删除它(所以请不要误导)?
HasH_BrowN 2014年

仅在您感到需要时。对于通过“其他方式”寻找相同详细信息的其他人可能很有用。否则,我将其标记为“ NAA”(不回答);)我不会对其进行投票(它可能会提供所请求的详细信息,但我没有检查过–它是否显示哪个分区拥有什么,如我的问题所述) ?)–但也不会投票/接受;)
Izzy

是的,它将显示分区的用途(包含),而不会显示实际内容。
HasH_BrowN

1
很好,因此从该点开始匹配!因此,请不要删除此答案:)
Izzy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.