Як перелічити всі основні розділи з їх мітками?


11

Я хочу розібратися в усіх розділах на своєму пристрої разом з їх відповідним доступом. точки монтування або мітки (тобто знати , який розділ тримає system, recovery, bootі т.д.). Це має бути незалежним від пристрою (оскільки у мене є кілька пристроїв). Мета ddїм і знати, який образ - що.

Я бачив Command для переліку точок кріплення розділів? - однак, там була мета списку розділів змонтованих розділів. Мені вони потрібні всі, і, наприклад /recovery, не встановлюється під час завантаження в "нормальний робочий режим".

Поки що мій дослідник розробив купу підходів - але жоден з них не працює на жодному з перевірених пристроїв:

  • cat /proc/mtd: це порожнє або неіснуюче
  • cat /proc/emmc: це порожнє або неіснуюче
  • cat /proc/dumchar_info: не існує (MTK / MediaTek)
  • ls -al /dev/block/platform/*/by-name: або не існує, або не має шуканих деталей

Будь-яке уявлення про те, що я міг пропустити? Звичайно, я міг обходити всі /dev/block/mmcblk0p*пристрої, скидати їх і розбирати їх пізніше - але тоді мені довелося повторити це дослідження для кожного мого пристрою (і знову, коли хтось з’явиться з іншим), тож це не є рішенням.


EDIT: Будь ласка, зверніть увагу на тег до цього питання. Мені доведеться отримати доступ до цієї інформації через ADB, і не хочу встановлювати якусь програму на пристрій, переданий мені для розслідування. Вважайте це "криміналістичним фоном" (ніяких змін у пристрої), хоча це не зовсім так;)

Також вибачте за моє первісне неправильне фразування: "точки монтажу" цікаві лише тим, що вони розкривають мету розділу. Я не хочу їх монтувати / ремонтувати :)


Сподіваюсь, ви не заперечуєте, я додав додатковий тег
HasH_BrowN

@HasH_BrowN Насправді не відповідає цілі (мені не цікаво монтувати тут, тому я її не застосовував спочатку), але також не дуже боляче;)
Izzy

Я складаю ще одну відповідь для вас. Чи відповість вказівка ​​на KPARTX працює для вас? Це здається правильним.
HasH_BrowN

Ніякої ідеї, перш ніж я це побачу, боюся ...
Іззі

Відповіді:


7

Як уже показують існуючі відповіді, мабуть, немає «унікального способу» досягти цього. Тож я почав поєднувати ідеї від „Алловер”, приєднуючи їх до сценарію (вірніше, „бібліотеки сценаріїв”), щоб перевірити їх послідовно (доки не вдалося вдало), і інтегрував їх у мій „Інструмент документації на пристрої” на ім’я Адебар . Зацікавлені можуть знайти його у 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.
Izzy

Ви можете також попросити це на Unix та Linux . Вони можуть знати про способи отримання інформації. Все, що я досліджував, говорить про "fdisk" або інші інструменти, які або нічого не повертають, або не існують в системі Android.
Райан Конрад

Це був і мій досвід. Я задав відповідне запитання щодо ПЗ з іншої точки зору, але відповіді ще не отримав. Боюся, я прошу неможливого. Це досить легко досягти на пристроях, що підтримують, /proc/mtdале, на жаль, більше не здається, що це населено поточними пристроями. На деяких пристроях я навіть знаходив .fstabфайли, але, знову ж таки, а) не на всіх, і б) навіть якщо вони не здавалися надійними (деякі частини напевно помилялися там).
Іззі

1

KPARTX

Команда kpartx зчитує таблиці розділів і відображає розділи у файли пристроїв. Він працює на пристроях та образах диска. Це означає, що ми можемо зіставити розділи HFS у зображенні диска на спеціальний файл пристрою блоку та змонтувати ці розділи, адресувавши цей файл блокового пристрою так, ніби він був частиною доданого пристрою.

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

Приклади посилань - ворог MacBook Pro, але різні образи диска повинні працювати нормально, доки вони представлені GNU Linux у RAW. (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 дозволяє перетворювати на ходу між декількома типами зображень жорсткого диска введення та виводу. xmount створює віртуальну файлову систему за допомогою FUSE (Filesystem in Userpace), яка містить віртуальне подання вхідного зображення. Віртуальне представлення може бути у необробленому форматі файлів віртуального диска DD, DMG, VHD, VirtualBox або у форматі файлу VMWK VmWare. Вхідні зображення можуть бути сирими файлами DD, EWF (Формат стиснення експертного свідка) або AFF (Advanced Forensic Format). Крім того, 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

Тільки якщо ви відчуваєте потребу. Може бути корисним для когось іншого, який шукає ті самі деталі "іншими способами". В іншому випадку я позначив це "NAA" (не-відповідь);) Я не зніму його (він може дати запитувані деталі, я не перевірив - чи показує, який розділ містить що, як описано в моєму запитанні ?) - але і не прийматимуть / не прийматимуть це;)
Izzy

Так, він покаже, для чого призначений розділ (що містить), він просто не буде показувати фактичний вміст.
HasH_BrowN

1
Це добре, тому з цього моменту воно відповідає! Тому, будь ласка, не видаляйте цю відповідь :)
Izzy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.