Come elencare tutte le principali partizioni con le loro etichette?


11

Voglio capire tutte le partizioni sul mio dispositivo insieme al loro resp. punti o etichette di montaggio (cioè per sapere quale partizione tiene system, recovery, boot, ecc). Questo deve essere indipendente dal dispositivo (poiché ho più dispositivi). L'obiettivo è per ddloro e sapere quale immagine è cosa.

Ho visto il comando per elencare i punti di montaggio della partizione? - tuttavia, l'obiettivo era solo un elenco delle partizioni montate. Ne ho bisogno tutti, e ad esempio /recoverynon è montato durante l'avvio in "modalità di lavoro normale".

Finora, il mio recherche ha sollevato un sacco di approcci, ma nessuno di questi funziona su nessuno dei dispositivi che ho testato:

  • cat /proc/mtd: questo è vuoto o inesistente
  • cat /proc/emmc: questo è vuoto o inesistente
  • cat /proc/dumchar_info: inesistente (MTK / MediaTek)
  • ls -al /dev/block/platform/*/by-name: inesistente o privo dei dettagli desiderati

Qualche idea di cosa avrei potuto perdere? Ovviamente potrei camminare tutti i /dev/block/mmcblk0p*dispositivi, scaricarli e risolverli in seguito - ma poi ho dovuto ripetere quell'indagine per ciascuno dei miei dispositivi (e di nuovo quando qualcuno si presenta con un altro), quindi non è una soluzione.


EDIT: si prega di notare il tag della a questa domanda. Dovrò accedere a tali informazioni tramite ADB e non voglio installare alcune app su un dispositivo consegnato a me per le indagini. Consideralo "sfondo forense" (nessuna modifica al dispositivo), anche se non è esattamente vero;)

Mi scuso anche per il mio malinteso iniziale: i "punti di montaggio" sono interessanti solo in quanto rivelano lo scopo della partizione. Non voglio montarli / rimontarli :)


Spero non ti dispiaccia che ho aggiunto un tag aggiuntivo
HasH_BrowN il

@HasH_BrowN Non soddisfa davvero lo scopo (non mi interessa montare qui, motivo per cui non l'ho applicato inizialmente), ma anche non fa male;)
Izzy

Sto componendo un'altra risposta per te. Risponderà indicando KPARTX per te? E sembra corretto.
HasH_BrowN

Nessuna idea prima di vederlo, temo ...
Izzy

Risposte:


7

Come già mostrano le risposte esistenti, non sembra esserci un "modo unico" per raggiungere questo obiettivo. Così ho iniziato a combinare idee provenienti da allover, unendole in uno script (o piuttosto in una "libreria di script") per controllarle in sequenza (fino a quando non è stato realizzato un buon risultato), e le ho integrate nel mio "Strumento di documentazione del dispositivo" chiamato Adebar . Chi è interessato può trovarlo nel lib/partitions.libfile. Dato che Adebar è open-source (GPLv2), sentiti libero di copiarlo e usarlo - oppure biforca il progetto e miglioralo.

La soluzione completa è un po 'lunga da pubblicare qui (come detto, puoi prenderla su Github), ma poiché la nostra politica è di includere almeno la parte generale nel post, ecco cosa fa:

Diverse fonti forniscono diversi insiemi di dettagli, quindi prova prima i "migliori" e poi ricicla fino a quando non viene trovato almeno qualcosa.

  • /proc/dumchar_infofornisce il maggior numero di dettagli, quindi questo viene provato prima. Gli utenti felici di MTK avranno questo.
  • /proc/mtd è la seconda migliore fonte.
  • /proc/emmc dovrebbe avere quasi quanto i candidati precedenti, ma è un po 'complicato da usare
  • /dev/block/platform/*/by-name, verificato con ...
  • /proc/partitionsil controllo incrociato con /proc/mountsci fornisce almeno le partizioni montate

Quindi la sceneggiatura che ho costruito sostanzialmente accompagna le fonti in questo ordine, fermandosi non appena è stato in grado di raccogliere dettagli (ad esempio se è /proc/dumchar_infostato trovato, non è necessario analizzare tutti gli altri). Tutti messi in funzioni separate, restituendo dati usando la stessa struttura, si potrebbero persino unire i risultati di tutti.

Se qualcuno può trovare una soluzione migliore, ovviamente sono sempre aperto all'idea :)


4

Mi sono imbattuto in questa domanda. Mi piace una sfida ...

Strumenti che ho usato: BusyBox

Ho escogitato 3 comandi (uno che hai elencato) per fornire alcune informazioni sulle partizioni

busybox ls -QAl --color=never /dev/block/platform/*/by-name  
Produzione:
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
Produzione:
/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
Produzione:
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
Grazie per i tuoi sforzi, Ryan! Ho anche già giocato busybox(che sfortunatamente non è disponibile su "alcuni dispositivi di amici" che mi viene consegnato). blkidnon rivela quale partizione sia (avvio, ripristino, ecc.) e */by-name/*non esiste su tutti i dispositivi (e quando lo fa, i nomi a volte sono piuttosto criptici - ad esempio sul mio LG Optimus 4X, i nomi sono tutti 3- solo caratteri e non necessariamente "parlare"). dfelenca solo i dispositivi montati, quindi non mostrerà, ad esempio, il recupero quando si esegue in "modalità normale", quindi qui è più facile utilizzarlo /proc/mounts.
Izzy

Puoi anche chiedere questo su Unix e Linux . Potrebbero essere a conoscenza dei modi per ottenere le informazioni. Tutto ciò che ho studiato dice 'fdisk' o altri strumenti che non restituiscono nulla o non esistono sul sistema Android.
Ryan Conrad,

Questa è stata anche la mia esperienza. Ho fatto una domanda correlata su SO con una prospettiva diversa, ma non ho ancora ricevuto risposta. Impaurito, sto chiedendo l'impossibile. È abbastanza facile da ottenere sui dispositivi che supportano /proc/mtd, ma sfortunatamente non sembra più essere popolato con i dispositivi attuali. Su alcuni dispositivi ho persino trovato dei .fstabfile, ma di nuovo a) non su tutti eb) anche se non sembravano affidabili (alcune parti erano sicuramente sbagliate).
Izzy

1

kpartx

Il comando kpartx legge le tabelle delle partizioni e mappa le partizioni sui file del dispositivo. Funziona su dispositivi e immagini del disco. Ciò significa che possiamo mappare le partizioni HFS in un'immagine disco su un file di dispositivo a blocchi speciale e montare quelle partizioni indirizzando quel file di dispositivo a blocchi come se facesse parte di un dispositivo collegato.

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

Gli esempi in link sono per MacBook Pro, ma diverse immagini del disco dovrebbero funzionare bene purché presentate a GNU Linux in RAW. (xmount - vedi sotto)

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 ti consente di convertire al volo tra più tipi di immagine del disco rigido di input e output. xmount crea un file system virtuale usando FUSE (Filesystem in Userspace) che contiene una rappresentazione virtuale dell'immagine di input. La rappresentazione virtuale può essere in formato DD, DMG, VHD, nel formato di file del disco virtuale di VirtualBox o nel formato di file VMDK di VmWare. Le immagini di input possono essere file DD, EWF (Expert Witness Compression Format) o AFF (Advanced Forensic Format) non elaborati. Inoltre, xmount supporta anche l'accesso in scrittura virtuale ai file di output che vengono reindirizzati a un file cache. Ciò consente di avviare le immagini del disco rigido acquisite utilizzando QEMU, KVM, VirtualBox, VmWare o simili.

https://www.pinguin.lu/xmount


Posso fornire ulteriori dettagli e informazioni se richiesto o necessario.


Ammiro il tuo entusiasmo, ma: ho controllato i dispositivi che ho qui, nessuno di questi ha quei comandi disponibili. Indovinati dai tuoi collegamenti, questi sono strumenti disponibili per Linux, ma le partizioni da esaminare sono su dispositivi Android, come descritto, e non è possibile accedervi direttamente da una macchina Linux. Inoltre: mappare una partizione su un dispositivo non rivela cosa c'è su di essa (sistema? Dati? Avvio?), Quindi kpartx è fuori. xmount non sembra nemmeno risolverlo.
Izzy

Pensavo davvero di essere su qualcosa. Provai. Grazie per aver risposto così rapidamente. Terrò il mio naso alla mola.
HasH_BrowN

Sono grato per i tuoi sforzi! È solo che i risultati non corrispondono, mi dispiace. Immagina quanto segue: Devo prendere la /recoverypartizione da un dispositivo in esecuzione. Non è montato in modalità normale. Come posso capire quale partizione scegliere? Con quanto sopra, ho dovuto sceglierli tutti e scoprirlo più tardi. Produce troppi dati e impiega troppo tempo.
Izzy

1
L'app DiskInfo ti mostrerà la partizione di ripristino non montata. Ho appena controllato, il mio (HTC One V) è mmcblk0p21. È abbastanza dettagliato per un'app.
HasH_BrowN

1
Il mio sentimento, ma dove. Probabilmente non elencato / memorizzato nel modo in cui stiamo cercando.
HasH_BrowN

0

DiskInfo sarà l'app che desideri. Mostrerà tutti i punti di montaggio, oltre a tutte le partizioni non montate e tutte le partizioni temporanee.

Questa è solo un'interfaccia grafica, senza altre funzionalità reali. Perfetto per le tue esigenze. Questo richiede l'utilizzo sul dispositivo completamente avviato. La radice non è necessaria.

Immagine dello schermo
Schermata (fare clic per una variante più grande)


1
Scusa, assolutamente no. Devi aver perso il command-linetag :) Suppongo che farò meglio a scriverlo esplicitamente. Conosco un numero di app che mostrano questi dettagli, ma ho bisogno di accedervi / raccoglierle tramite adb shelle senza l'aiuto di un'app aggiuntiva (non posso sempre installarla prima su un dispositivo che mi viene consegnato).
Izzy

Ooops. Non farà male ai miei sentimenti, vuoi che lo elimini (quindi non ho una direzione sbagliata)?
HasH_BrowN

Solo se ne senti il ​​bisogno. Potrebbe essere utile per qualcun altro che cerca gli stessi dettagli con "altri mezzi". Altrimenti l'ho contrassegnato come "NAA" (non-una-risposta);) Non lo declasserò (potrebbe fornire i dettagli richiesti, non ho controllato - mostra quale partizione contiene cosa, come descritto nella mia domanda ?) - ma non lo voterà / non lo accetterà neanche;)
Izzy

Sì, mostrerà a cosa serve (contenere) la partizione, non mostrerà solo il contenuto effettivo.
HasH_BrowN

1
Va bene, quindi da quel punto corrisponde! Quindi, per favore, non cancellare questa risposta :)
Izzy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.