Wie listet man alle wichtigen Partitionen mit ihren Labels auf?

Ich möchte alle Partitionen auf meinem Gerät zusammen mit ihren bzw. Einhängepunkte oder Labels (dh um zu wissen, welche Partition system, recovery, bootusw. enthält). Dies muss geräteunabhängig sein (da ich mehrere Geräte habe). Ziel ist es, ddsie und wissen, welches Bild was ist.

Ich habe Command to list partition mount points gesehen? – dort war das Ziel jedoch nur eine Partitionsliste gemounteter Partitionen. Ich brauche sie alle, und zB /recoverywird beim Booten nicht in den "normalen Arbeitsmodus" gemountet.

Bisher hat meine Recherche eine Reihe von Ansätzen hervorgebracht – aber keiner davon funktioniert auf einem der von mir getesteten Geräte:

  • cat /proc/mtd: Dies ist leer oder nicht vorhanden
  • cat /proc/emmc: Dies ist leer oder nicht vorhanden
  • cat /proc/dumchar_info: nicht vorhanden (MTK/MediaTek)
  • ls -al /dev/block/platform/*/by-name: entweder nicht vorhanden oder nicht mit den gewünschten Details

Irgendeine Idee, was ich übersehen haben könnte? Natürlich könnte ich alle /dev/block/mmcblk0p*Geräte laufen, wegwerfen und später aussortieren – aber dann müsste ich diese Untersuchung für jedes meiner Geräte wiederholen (und wieder, wenn jemand mit einem anderen auftaucht), also ist das keine Lösung.


BEARBEITEN: Bitte beachten Sie das Tag zu dieser Frage. Ich muss über ADB auf diese Informationen zugreifen und möchte keine App auf einem Gerät installieren, das mir zur Untersuchung übergeben wurde. Betrachten Sie es als "forensischen Hintergrund" (keine Änderungen am Gerät), obwohl das nicht ganz stimmt;)

Entschuldigen Sie auch meine anfängliche Fehlformulierung: Die "Einhängepunkte" sind nur insofern interessant, als sie den Zweck der Partition verraten. Ich möchte sie nicht mounten/remounten :)

Antworten (4)

Wie bereits vorhandene Antworten zeigen, scheint es keinen "einzigartigen Weg" zu geben, dies zu erreichen. Also fing ich an, Ideen von überall zu kombinieren, sie zu einem Skript (oder besser gesagt einer "Skriptbibliothek") zusammenzufügen, um sie nacheinander zu überprüfen (bis ein guter Treffer erzielt wurde), und integrierte das in mein "Device Documentation Tool" namens Adebar . Interessierte finden es in der lib/partitions.libDatei. Da Adebar Open Source (GPLv2) ist, können Sie es gerne kopieren und verwenden – oder das Projekt forken und verbessern.

Die vollständige Lösung ist ein bisschen lang, um sie hier zu posten (wie gesagt, Sie können sie bei Github herunterladen), aber da unsere Richtlinie darin besteht, zumindest den allgemeinen Teil in die Post aufzunehmen, ist hier, was sie tut:

Verschiedene Quellen liefern unterschiedliche Details, also versucht es zuerst die „besten“ – und rekursiv dann nach unten, bis zumindest etwas gefunden wurde.

  • /proc/dumchar_infoliefert die meisten Details, also wird dies zuerst versucht. Glückliche MTK-Benutzer werden dies bekommen.
  • /proc/mtdist die zweitbeste Quelle.
  • /proc/emmcsollte fast so viel wie die bisherigen Kandidaten haben, ist aber etwas fummelig zu bedienen
  • /dev/block/platform/*/by-name, abgeglichen mit …
  • /proc/partitionsEine Gegenprüfung mit /proc/mountsgibt uns zumindest die gemounteten Partitionen

Das Skript, das ich erstellt habe, geht also im Grunde genommen in dieser Reihenfolge durch die Quellen und stoppt, sobald es Details sammeln konnte (z. B. wenn /proc/dumchar_infogefunden wurde, müssen nicht alle anderen analysiert werden). Alle von ihnen in separate Funktionen gesteckt, die Daten mit der gleichen Struktur zurückgeben, man könnte sogar die Ergebnisse von allen zusammenführen.

Wenn jemand eine bessere Lösung hat, bin ich natürlich immer offen für die Idee :)

Ich bin über diese Frage gestolpert. Ich mag Herausforderungen...

Tools, die ich verwendet habe: BusyBox

Ich habe 3 Befehle entwickelt (einen, den Sie aufgelistet haben), um einige Informationen über die Partitionen zu geben

busybox ls -QAl --color=never /dev/block/platform/*/by-name  
Ausgabe:
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
Ausgabe:
/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
Ausgabe:
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
Danke für deine Bemühungen, Ryan! Ich habe auch schon damit gespielt busybox(was leider nicht auf "Geräten einiger Freunde" verfügbar ist, die ich abgegeben bekomme). blkidzeigt nicht an, um welche Partition es sich handelt (Booten, Wiederherstellen usw.), und die */by-name/*existiert nicht auf allen Geräten (und wenn doch, sind die Namen manchmal ziemlich kryptisch – z. B. auf meinem LG Optimus 4X sind die Namen alle 3- nur Zeichen und nicht unbedingt "sprechen"). dflistet nur gemountete Geräte auf, also zeigt es z. B. keine Wiederherstellung, wenn es im "normalen Modus" läuft – hier ist es also einfacher, /proc/mountsstattdessen zu verwenden.
Vielleicht möchten Sie dies auch unter Unix & Linux fragen . Sie kennen möglicherweise Möglichkeiten, um an die Informationen zu gelangen. Alles, was ich recherchiert habe, sagt 'fdisk' oder andere Tools, die entweder nichts zurückgeben oder auf Android-Systemen nicht existieren.
Das war auch meine Erfahrung. Ich habe eine verwandte Frage zu SO mit einer anderen Perspektive gestellt, aber dort noch keine Antwort erhalten. Ich fürchte, ich verlange das Unmögliche. Es ist ziemlich einfach auf Geräten zu erreichen, die das unterstützen /proc/mtd– aber leider scheint das mit aktuellen Geräten nicht mehr bestückt zu sein. Auf einigen Geräten habe ich sogar .fstabDateien gefunden, aber wieder a) nicht auf allen und b) auch wenn sie nicht zuverlässig schienen (einige Teile waren definitiv falsch).

KPARTX

Der Befehl kpartx liest Partitionstabellen und ordnet Partitionen Gerätedateien zu. Es funktioniert auf Geräten und Disk-Images. Das bedeutet, dass wir HFS-Partitionen in einem Disk-Image einer speziellen Blockgerätedatei zuordnen und diese Partitionen mounten können, indem wir diese Blockgerätedatei adressieren, als ob sie Teil eines angeschlossenen Geräts wäre.

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

Die Beispiele im Link beziehen sich auf MacBook Pro, aber verschiedene Disk-Images sollten gut funktionieren, solange sie GNU Linux in RAW präsentiert werden. (xmount - siehe unten)

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 ermöglicht Ihnen die sofortige Konvertierung zwischen mehreren Eingabe- und Ausgabe-Festplatten-Image-Typen. xmount erstellt mit FUSE (Filesystem in Userspace) ein virtuelles Dateisystem, das eine virtuelle Darstellung des Eingabebildes enthält. Die virtuelle Darstellung kann im Raw-DD-, DMG-, VHD-, Virtual-Disk-Dateiformat von VirtualBox oder im VMDK-Dateiformat von VmWare vorliegen. Eingabebilder können RAW-Dateien im DD-, EWF- ​​(Expert Witness Compression Format) oder AFF- (Advanced Forensic Format) Format sein. Darüber hinaus unterstützt xmount auch virtuellen Schreibzugriff auf die Ausgabedateien, der in eine Cache-Datei umgeleitet wird. Dadurch ist es möglich, erworbene Festplatten-Images mit QEMU, KVM, VirtualBox, VmWare oder ähnlichem zu booten.

https://www.pinguin.lu/xmount


Bei Bedarf oder Bedarf kann ich zusätzliche Details und Informationen bereitstellen.

Ich bewundere Ihren Enthusiasmus, aber: Ich habe die Geräte, die ich hier habe, überprüft, keines davon verfügt über diese Befehle. Aus Ihren Links geht hervor, dass es sich um Tools handelt, die für Linux verfügbar sind – aber die zu untersuchenden Partitionen befinden sich wie beschrieben auf Android-Geräten und können nicht direkt von einem Linux-Computer aus aufgerufen werden. Außerdem: Wenn Sie eine Partition einem Gerät zuordnen, wird nicht angezeigt, was sich darauf befindet (System? Daten? Booten?), Also ist kpartx out. xmount klingt auch nicht danach, das zu lösen.
Ich dachte wirklich, ich wäre auf etwas. Ich habe es versucht. Vielen Dank, dass Sie so schnell geantwortet haben. Werde meine Nase am Schleifstein halten.
Ich bin dankbar für Ihre Bemühungen! Es ist nur so, dass die Ergebnisse nicht übereinstimmen, sorry. Stellen Sie sich Folgendes vor: Ich muss die /recoveryPartition von einem laufenden Gerät abrufen. Das ist nicht im normalen Modus gemountet. Wie finde ich heraus, welche Partition ich auswählen soll? Mit dem oben Gesagten musste ich sie alle auswählen und es später herausfinden. Produziert viel zu viele Daten und dauert zu lange.
Diese DiskInfo-App zeigt Ihnen die nicht bereitgestellte Wiederherstellungspartition. Ich habe gerade nachgesehen, meins (HTC One V) ist mmcblk0p21. Es ist ziemlich detailliert für eine App.
Das war die andere Antwort :) Danke, werde das überprüfen. Könnte als Problemumgehung dienen (wenn es möglich ist, eine App zu installieren und diese Dinge manuell auszuwerten). Ich frage mich nur: Wenn eine App das kann, muss es einen Ort geben, an dem diese Details gespeichert sind ...
Mein Gefühl, aber wo. Wahrscheinlich nicht so aufgelistet/gespeichert, wie wir suchen.
Das war ein goldener Kommentar! Ich hätte die Frage ganz anders formulieren sollen. Der einfachste Weg ist, woran man zuletzt denkt ... Aber es jetzt so umzuformulieren, würde Ihre Antworten falsch machen. Ich denke, ich stelle das besser als neue Frage. Hier oder bei SO, das muss man sich überlegen. Entwickler wissen das vielleicht besser – aber OTOH könnten sie mit Java-Code und Systemaufrufen aufwarten, was mir überhaupt nicht hilft ... Yuck: wie man die Namen der Partitionen identifiziert (aber noch einmal, nur für die gerade gemounteten ...)

DiskInfo wird die gewünschte App sein. Es zeigt alle Einhängepunkte sowie alle nicht eingehängten und alle temporären Partitionen.

Dies ist nur eine grafische Oberfläche ohne weitere echte Funktionalität. Perfekt für Ihren Bedarf. Dies muss auf einem vollständig gestarteten Gerät verwendet werden. Root wird nicht benötigt.

Bildschirmfoto
Screenshot (klicken für größere Variante)

Entschuldigung, absolut nein. Du musst das command-lineTag übersehen haben :) Denke, ich schreibe das besser explizit. Ich kenne eine Reihe von Apps, die diese Details zeigen, aber ich muss auf sie zugreifen/erfassen über adb shellund ohne die Hilfe einer zusätzlichen App (kann diese nicht immer zuerst auf einem mir übergebenen Gerät installieren).
Hoppla. Es wird meine Gefühle nicht verletzen, soll ich das löschen (also keine Fehlleitung)?
Nur wenn Sie das Bedürfnis verspüren. Könnte für jemanden nützlich sein, der auf "andere Weise" nach denselben Details sucht. Andernfalls hätte ich es mit "NAA" (keine Antwort) markiert;) Ich werde es nicht ablehnen (es könnte die angeforderten Details enthalten, ich habe es nicht überprüft - zeigt es, welche Partition was enthält, wie in meiner Frage beschrieben ?) – werde es aber auch nicht positiv bewerten/akzeptieren ;)
Ja, es wird angezeigt, wofür die Partition ist (enthält), es wird nur nicht der tatsächliche Inhalt angezeigt.
Das ist in Ordnung, also passt es von diesem Punkt an! Also bitte, lösche diese Antwort nicht :)