Как перечислить все основные разделы с их ярлыками?


11

Я хочу выяснить все разделы на моем устройстве вместе с их соотв. точки монтирования или метки (т.е. знать , какой раздел держит system, recovery, bootи т.д.). Это должно быть независимым от устройства (так как у меня есть несколько устройств). Цель для ddних и знать, какой образ есть что.

Я видел команду для перечисления точек монтирования раздела? - однако, целью была просто список разделов подключенных разделов. Мне они все нужны, и, например /recovery, не монтируется при загрузке в «нормальном режиме работы».

До сих пор мой речерч поднял кучу подходов, но ни один из них не работает ни на одном из протестированных мной устройств:

  • cat /proc/mtd: это пусто или не существует
  • cat /proc/emmc: это пусто или не существует
  • cat /proc/dumchar_info: не существует (MTK / MediaTek)
  • ls -al /dev/block/platform/*/by-name: либо не существует, либо не имеет требуемых деталей

Есть идеи о том, что я мог пропустить? Конечно, я мог пройтись по всем /dev/block/mmcblk0p*устройствам, выгрузить их и разобраться с ними позже - но потом мне пришлось повторить это расследование для каждого из моих устройств (и снова, когда кто-то обнаружит другое), так что это не решение.


РЕДАКТИРОВАТЬ: Обратите внимание на тег на этот вопрос. Мне нужно будет получить доступ к этой информации через АБР, и я не хочу устанавливать какое-либо приложение на устройство, переданное мне для расследования. Считайте, что это «фон судебной экспертизы» (без изменений в устройстве), хотя это не совсем так;)

Также прошу прощения за мое первоначальное неверное выражение: «точки монтирования» интересны только тем, что раскрывают назначение раздела. Я не хочу монтировать / перемонтировать их :)


Надеюсь, вы не возражаете, я добавил дополнительный тег
HasH_BrowN

@HasH_BrowN На самом деле не соответствует цели (здесь я не интересуюсь монтажом, поэтому я и не использовал его изначально), но также не очень больно;)
Иззи

Я сочиняю другой ответ для вас. Будет ли ответ, указывающий на работу KPARTX для вас? Это кажется правильным.
HasH_BrowN

Я понятия не имею, прежде чем я вижу это, я боюсь ...
Иззи

Ответы:


7

Как уже показывают существующие ответы, кажется, что нет «уникального способа» достичь этого. Поэтому я начал объединять идеи от allover, объединяя их в сценарий (или, скорее, в «библиотеку сценариев»), чтобы последовательно проверять их (до тех пор, пока не будет достигнут хороший результат), и интегрировал их в мой «Инструмент документирования устройств» под названием 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файлы, но, опять же, а) не на всех, и б) даже если они не казались надежными (некоторые части были определенно ошибочны).
Иззи

1

KPARTX

Команда kpartx читает таблицы разделов и сопоставляет разделы с файлами устройств. Работает на устройствах и образах дисков. Это означает, что мы можем отобразить разделы HFS в образе диска в специальный файл блочного устройства и смонтировать эти разделы, обратившись к этому файлу блочного устройства, как если бы он был частью подключенного устройства.

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

Примеры в ссылке приведены для MacBook Pro, но разные образы дисков должны работать нормально, если они представлены в GNU Linux в RAW. (см. ниже)

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 позволяет на лету конвертировать несколько типов входных и выходных жестких дисков. xmount создает виртуальную файловую систему, используя FUSE (Файловая система в пользовательском пространстве), которая содержит виртуальное представление входного изображения. Виртуальное представление может быть в необработанном формате DD, DMG, VHD, виртуальном диске VirtualBox или в формате VmWare VMDK. Входные изображения могут быть необработанными файлами DD, EWF (формат сжатия Expert Witness Compress) или AFF (Advanced Forensic Format). Кроме того, xmount также поддерживает виртуальный доступ на запись к выходным файлам, которые перенаправляются в файл кэша. Это позволяет загружать полученные образы жесткого диска, используя QEMU, KVM, VirtualBox, VmWare или другие.

https://www.pinguin.lu/xmount


Я могу предоставить дополнительную информацию и информацию, если требуется или необходимо.


Я восхищаюсь вашим энтузиазмом, но: я проверил устройства, которые у меня есть, ни на одном из них нет доступных команд. Судя по вашим ссылкам, это инструменты, доступные для Linux, но исследуемые разделы находятся на устройствах Android, как описано, и к ним нельзя получить доступ напрямую с компьютера с Linux. Более того: сопоставление раздела с устройством не показывает, что на нем (системный? Data? Boot?), Поэтому 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

Только если вы чувствуете необходимость. Может быть полезным для тех, кто ищет те же детали "другими способами". В противном случае я пометил его «NAA» (not-an-answer);) Я не буду понижать его (это может дать запрошенные данные, я не проверял - показывает ли он, какой раздел содержит что, как описано в моем вопросе ?) - но не проголосую и не приму его;)
Иззи

Да, он покажет, для чего раздел (содержащий), он просто не покажет фактическое содержимое.
HasH_BrowN

1
Это нормально, так что с этого момента это соответствует! Поэтому, пожалуйста, не удаляйте этот ответ :)
Иззи
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.