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
, boot
usw. enthält). Dies muss geräteunabhängig sein (da ich mehrere Geräte habe). Ziel ist es, dd
sie 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 /recovery
wird 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 vorhandencat /proc/emmc
: Dies ist leer oder nicht vorhandencat /proc/dumchar_info
: nicht vorhanden (MTK/MediaTek)ls -al /dev/block/platform/*/by-name
: entweder nicht vorhanden oder nicht mit den gewünschten DetailsIrgendeine 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 Befehlszeilen- 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 :)
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.lib
Datei. 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_info
liefert die meisten Details, also wird dies zuerst versucht. Glückliche MTK-Benutzer werden dies bekommen./proc/mtd
ist die zweitbeste Quelle./proc/emmc
sollte fast so viel wie die bisherigen Kandidaten haben, ist aber etwas fummelig zu bedienen/dev/block/platform/*/by-name
, abgeglichen mit …/proc/partitions
Eine Gegenprüfung mit /proc/mounts
gibt uns zumindest die gemounteten PartitionenDas 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_info
gefunden 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
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.
Bei Bedarf oder Bedarf kann ich zusätzliche Details und Informationen bereitstellen.
/recovery
Partition 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.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.
command-line
Tag ü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 shell
und ohne die Hilfe einer zusätzlichen App (kann diese nicht immer zuerst auf einem mir übergebenen Gerät installieren).
Izzy
busybox
(was leider nicht auf "Geräten einiger Freunde" verfügbar ist, die ich abgegeben bekomme).blkid
zeigt 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").df
listet 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/mounts
stattdessen zu verwenden.Ryan Konrad
Izzy
/proc/mtd
– aber leider scheint das mit aktuellen Geräten nicht mehr bestückt zu sein. Auf einigen Geräten habe ich sogar.fstab
Dateien gefunden, aber wieder a) nicht auf allen und b) auch wenn sie nicht zuverlässig schienen (einige Teile waren definitiv falsch).