Comment répertorier toutes les partitions principales avec leurs étiquettes?

11

Je veux comprendre toutes les partitions de mon appareil avec leurs resp. points de montage ou d' étiquettes (c. - à - savoir quelle partition tient system, recovery, boot, etc.). Cela doit être indépendant de l'appareil (car j'ai plusieurs appareils). Le but est pour ddeux et de savoir quelle image est quoi.

J'ai vu la commande répertorier les points de montage de la partition? - cependant, l'objectif n'était qu'une liste de partitions montées. J'ai besoin de tous, et par exemple /recoveryn'est pas monté lors du démarrage en "mode de travail normal".

Jusqu'à présent, ma recherche a soulevé un tas d'approches - mais aucune d'entre elles ne fonctionne sur aucun des appareils que j'ai testés:

  • cat /proc/mtd: vide ou inexistant
  • cat /proc/emmc: vide ou inexistant
  • cat /proc/dumchar_info: inexistant (MTK / MediaTek)
  • ls -al /dev/block/platform/*/by-name: soit inexistant, soit n'ayant pas les détails recherchés

Une idée de ce que j'aurais pu manquer? Bien sûr, je pouvais parcourir tous les /dev/block/mmcblk0p*appareils, les vider et les trier plus tard - mais j'ai dû répéter cette enquête pour chacun de mes appareils (et encore quand quelqu'un se présente avec un autre), donc ce n'est pas une solution.


EDIT: veuillez noter la balise de à cette question. Je vais devoir accéder à ces informations via ADB, et je ne veux pas installer une application sur un appareil qui m'a été remis pour enquête. Considérez-le comme un "arrière-plan médico-légal" (pas de modification de l'appareil), bien que ce ne soit pas tout à fait vrai;)

Excuses également pour ma mauvaise formulation initiale: les "points de montage" ne sont intéressants que dans la mesure où ils révèlent le but de la partition. Je ne veux pas les monter / remonter :)

Izzy
la source
J'espère que cela ne vous dérange pas, j'ai ajouté une balise supplémentaire
HasH_BrowN
@HasH_BrowN Ne répond pas vraiment au but (je ne suis pas intéressé à monter ici, c'est pourquoi je ne l'ai pas appliqué initialement), mais ne fait pas vraiment mal non plus;)
Izzy
Je compose une autre réponse pour vous. Est-ce que la réponse indiquant que KPARTX fonctionne pour vous? Cela semble correct.
HasH_BrowN
Aucune idée avant de le voir, j'ai peur ...
Izzy

Réponses:

7

Comme les réponses existantes le montrent déjà, il ne semble pas y avoir de "moyen unique" d'y parvenir. J'ai donc commencé à combiner des idées de partout, en les joignant dans un script (ou plutôt une "bibliothèque de scripts") pour les faire vérifier séquentiellement (jusqu'à ce qu'un bon hit soit fait), et j'ai intégré cela dans mon "Device Documentation Tool" nommé Adebar . Les personnes intéressées peuvent le trouver dans le lib/partitions.libdossier. Comme Adebar est open source (GPLv2), vous pouvez copier et utiliser - ou de la fourche du projet et l' améliorer.

La solution complète est un peu longue à publier ici (comme dit, vous pouvez la récupérer sur Github), mais comme notre politique consiste à inclure au moins la partie générale dans le message, voici ce qu'elle fait:

Différentes sources fournissent différents ensembles de détails, donc il essaie d'abord les "meilleurs" - puis revient jusqu'à ce qu'au moins quelque chose ait été trouvé.

  • /proc/dumchar_infodonne le plus de détails, donc c'est d'abord essayé. Les utilisateurs heureux de MTK l'obtiendront.
  • /proc/mtd est la deuxième meilleure source.
  • /proc/emmc devrait avoir presque autant que les candidats précédents, mais est un peu délicat à utiliser
  • /dev/block/platform/*/by-name, recoupé avec…
  • /proc/partitionsrecoupé avec /proc/mountsnous donne au moins les partitions montées

Le script que j'ai construit parcourt donc les sources dans cet ordre, s'arrêtant dès qu'il a pu collecter des détails (par exemple, s'il a /proc/dumchar_infoété trouvé, pas besoin d'analyser tous les autres). Tous mis dans des fonctions distinctes, renvoyant des données en utilisant la même structure, on pourrait même fusionner les résultats de chacun d'eux.

Si quelqu'un peut trouver une meilleure solution, je suis bien sûr toujours ouvert à l'idée :)

Izzy
la source
4

Je suis tombé sur cette question. J'aime un défi ...

Outils que j'ai utilisés: BusyBox

J'ai trouvé 3 commandes (une que vous avez répertoriée) pour donner des informations sur les partitions

busybox ls -QAl --color=never /dev/block/platform/*/by-name  
Production:
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
Production:
/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
Production:
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
Ryan Conrad
la source
1
Merci pour vos efforts, Ryan! J'ai également déjà joué avec busybox(qui n'est malheureusement pas disponible sur "les appareils de certains amis" que je reçois). blkidne révèle pas de quelle partition il s'agit (démarrage, récupération, etc.) et */by-name/*n'existe pas sur tous les appareils (et quand c'est le cas, les noms sont parfois assez cryptiques - par exemple sur mon LG Optimus 4X, les noms sont tous 3- caractères seulement et pas nécessairement "parlant"). dfne répertorie que les périphériques montés, de sorte qu'il ne montrera pas, par exemple, la récupération lors de l'exécution en "mode normal" - ici, il est plus facile à utiliser à la /proc/mountsplace.
Izzy
Vous voudrez peut-être également demander ceci sur Unix et Linux . Ils peuvent être conscients des moyens d'obtenir les informations. Tout ce que j'ai recherché dit «fdisk» ou d'autres outils qui ne retournent rien ou qui n'existent pas sur le système Android.
Ryan Conrad
C'était aussi mon expérience. J'ai posé une question connexe sur SO avec une perspective différente, mais je n'ai encore reçu aucune réponse. J'ai peur de demander l'impossible. Il est assez facile à réaliser sur les appareils prenant en charge /proc/mtd- mais malheureusement, cela ne semble plus être rempli avec les appareils actuels. Sur certains appareils, j'ai même trouvé des .fstabfichiers, mais encore une fois, a) pas du tout, et b) même si, ils ne semblaient pas fiables (certaines parties étaient définitivement erronées là-dedans).
Izzy
1

KPARTX

La commande kpartx lit les tables de partition et mappe les partitions aux fichiers de périphérique. Il fonctionne sur les appareils et les images de disque. Cela signifie que nous pouvons mapper des partitions HFS dans une image disque vers un fichier de périphérique de bloc spécial et monter ces partitions en adressant ce fichier de périphérique de bloc comme s'il faisait partie d'un périphérique connecté.

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

Les exemples en lien sont les ennemis du MacBook Pro, mais différentes images de disque devraient fonctionner correctement tant qu'elles sont présentées à GNU Linux en RAW. (xmount - voir ci-dessous)

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 vous permet de convertir à la volée entre plusieurs types d'images de disque dur d'entrée et de sortie. xmount crée un système de fichiers virtuel à l'aide de FUSE (Filesystem in Userspace) qui contient une représentation virtuelle de l'image d'entrée. La représentation virtuelle peut être au format DD, DMG, VHD, au format de fichier de disque virtuel de VirtualBox ou au format de fichier VMDK de VmWare. Les images d'entrée peuvent être des fichiers bruts DD, EWF (Expert Witness Compression Format) ou AFF (Advanced Forensic Format). En outre, xmount prend également en charge l'accès en écriture virtuelle aux fichiers de sortie qui sont redirigés vers un fichier cache. Cela permet de démarrer des images de disque dur acquises à l'aide de QEMU, KVM, VirtualBox, VmWare ou similaire.

https://www.pinguin.lu/xmount


Je peux fournir des détails et des informations supplémentaires si nécessaire ou nécessaire.

HasH_BrowN
la source
J'admire votre enthousiasme, mais: j'ai vérifié les appareils que j'ai ici, aucun d'eux n'a ces commandes disponibles. D'après vos liens, ce sont des outils disponibles pour Linux - mais les partitions à étudier se trouvent sur des appareils Android, comme décrit, et ne sont pas accessibles directement depuis une machine Linux. De plus: mapper une partition sur un appareil ne révèle pas ce qu'il y a dessus (système? Données? Démarrage?), Donc kpartx est sorti. xmount ne sonne pas non plus comme résoudre cela.
Izzy
Je pensais vraiment que j'étais sur quelque chose. J'ai essayé. Merci d'avoir répondu si rapidement. Gardera mon nez à la meule.
HasH_BrowN
Je suis reconnaissant pour vos efforts! C'est juste que les résultats ne correspondent pas, désolé. Imaginez ce qui suit: j'ai besoin de récupérer la /recoverypartition d'un périphérique en cours d'exécution. Ce n'est pas monté en mode normal. Comment savoir quelle partition choisir? Avec ce qui précède, j'ai dû les choisir tous et le découvrir plus tard. Produit beaucoup trop de données et prend trop de temps.
Izzy
1
Cette application DiskInfo vous montrera la partition de récupération non montée. Je viens de vérifier, le mien (HTC One V) est mmcblk0p21. C'est assez détaillé pour une application.
HasH_BrowN
1
Mon sentiment, mais où. Probablement pas répertorié / stocké comme nous le recherchons.
HasH_BrowN
0

DiskInfo sera l'application que vous souhaitez. Il montrera tous les points de montage, plus toutes les partitions non montées et toutes les partitions temporaires.

Ceci est juste une interface graphique, sans aucune autre fonctionnalité réelle. Parfait pour votre besoin. Cela nécessite d'être utilisé sur un appareil entièrement démarré. La racine n'est pas nécessaire.

Capture d'écran
Capture d'écran (cliquez pour une variante plus grande)

HasH_BrowN
la source
1
Désolé, absolument pas. Vous devez avoir raté la command-linebalise :) Je suppose que je ferais mieux d'écrire cela explicitement. Je connais un certain nombre d'applications affichant ces détails, mais je dois y accéder / les collecter via adb shell, et sans l'aide d'une application supplémentaire (ne peut pas toujours installer d'abord cela sur un appareil qui m'est remis)
Izzy
Oups. Cela ne blessera pas mes sentiments, voulez-vous que je supprime cela (donc pas de mauvaise direction)?
HasH_BrowN
Seulement si vous en ressentez le besoin. Pourrait être utile pour quelqu'un d'autre recherchant les mêmes détails par "d'autres moyens". Sinon, je l'avais marqué "NAA" (pas de réponse);) Je ne le voterai pas (il pourrait donner les détails demandés, je n'ai pas vérifié - cela montre-t-il quelle partition contient quoi, comme décrit dans ma question ?) - mais ne votera pas / ne l'acceptera pas non plus;)
Izzy
Oui, il montrera à quoi sert la partition (contenant), il ne montrera pas le contenu réel.
HasH_BrowN
1
C'est bien, donc à partir de ce moment, cela correspond! Alors s'il vous plaît, ne supprimez pas cette réponse :)
Izzy