¿Cómo enumerar todas las particiones principales con sus etiquetas?

11

Quiero averiguar todas las particiones en mi dispositivo junto con su resp. puntos de montaje o etiquetas (es decir, saber qué partición está sosteniendo system, recovery, boot, etc.). Esto debe ser independiente del dispositivo (ya que tengo varios dispositivos). El objetivo es para ddellos y saber qué imagen es qué.

¿He visto Comando para enumerar los puntos de montaje de la partición? - Sin embargo, el objetivo era solo una lista de particiones montadas. Los necesito a todos y, por ejemplo, /recoveryno está montado cuando arranco en "modo de trabajo normal".

Hasta ahora, mi recherche ha traído un montón de enfoques, pero ninguno de ellos funciona en ninguno de los dispositivos que he probado:

  • cat /proc/mtd: esto está vacío o no existe
  • cat /proc/emmc: esto está vacío o no existe
  • cat /proc/dumchar_info: no existente (MTK / MediaTek)
  • ls -al /dev/block/platform/*/by-name: no existe o no tiene los detalles deseados

¿Alguna idea de lo que podría haber perdido? Por supuesto, podría caminar todos los /dev/block/mmcblk0p*dispositivos, volcarlos y clasificarlos más tarde, pero luego tuve que repetir esa investigación para cada uno de mis dispositivos (y nuevamente cuando alguien aparece con otro), así que no hay solución.


EDITAR: tenga en cuenta la etiqueta de para esta pregunta. Tendré que acceder a esa información a través de ADB, y no quiero instalar alguna aplicación en un dispositivo que se me entregó para su investigación. Considérelo "antecedentes forenses" (sin cambios en el dispositivo), aunque eso no es exactamente cierto;)

También me disculpo por mi error de redacción inicial: los "puntos de montaje" solo son interesantes en la medida en que revelan el propósito de la partición. No quiero montarlos / volverlos a montar :)

Izzy
fuente
Espero que no te
importe
@HasH_BrowN Realmente no cumple con el propósito (no estoy interesado en montar aquí, es por eso que no lo apliqué inicialmente), pero tampoco me duele;)
Izzy
Estoy componiendo otra respuesta para ti. ¿La respuesta apuntando a KPARTX funciona para usted? Se parece correcta.
HasH_BrowN
No tengo idea antes de verlo, me temo ...
Izzy

Respuestas:

7

Como las respuestas existentes ya muestran, parece que no hay una "forma única" de lograrlo. Así que comencé a combinar ideas de allover, uniéndolas en una secuencia de comandos (o más bien una "biblioteca de secuencias de comandos") para que se verificaran secuencialmente (hasta que se hizo un buen éxito), e integré eso en mi "Herramienta de documentación del dispositivo" llamada Adebar . Los interesados ​​pueden encontrarlo en el lib/partitions.libarchivo. Como Adebar es de código abierto (GPLv2), siéntase libre de copiarlo y usarlo, o bifurcar el proyecto y mejorarlo.

La solución completa es un poco larga para publicar aquí (como se dijo, puede obtenerla en Github), pero como nuestra política es incluir al menos la parte general en la publicación, esto es lo que hace:

Las diferentes fuentes proporcionan diferentes conjuntos de detalles, por lo que primero prueba los "mejores", y luego recurre hasta que se encuentre al menos algo.

  • /proc/dumchar_infoproporciona la mayoría de los detalles, por lo que esto se intenta primero Los usuarios felices de MTK obtendrán esto.
  • /proc/mtd Es la segunda mejor fuente.
  • /proc/emmc debería tener casi tanto como los candidatos anteriores, pero es un poco difícil de usar
  • /dev/block/platform/*/by-name, verificado con ...
  • /proc/partitionsverificado con /proc/mountsnos da al menos las particiones montadas

Entonces, el script que he construido básicamente recorre las fuentes en este orden, deteniéndose tan pronto como pudo recopilar detalles (por ejemplo, si /proc/dumchar_infose encontró, no es necesario analizar todos los demás). Todos ellos se ponen en funciones separadas, devolviendo datos usando la misma estructura, uno podría incluso combinar resultados de todos ellos.

Si alguien puede encontrar una solución mejor, por supuesto, siempre estoy abierto a la idea :)

Izzy
fuente
4

Me topé con esta pregunta. Me gusta el reto...

Herramientas que utilicé: BusyBox

He creado 3 comandos (uno que enumeraste) para dar información sobre las particiones.

busybox ls -QAl --color=never /dev/block/platform/*/by-name  
Salida:
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
Salida:
/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
Salida:
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
fuente
1
¡Gracias por tus esfuerzos, Ryan! También ya he jugado busybox(que desafortunadamente no está disponible en "los dispositivos de algunos amigos" que me entregan). blkidno revela qué partición es (arranque, recuperación, etc.), y */by-name/*no existe en todos los dispositivos (y cuando lo hace, los nombres a veces son bastante crípticos, por ejemplo, en mi LG Optimus 4X, los nombres son todos 3- caracteres solamente y no necesariamente "hablar"). dfsolo enumera los dispositivos montados, por lo que no mostrará, por ejemplo, la recuperación cuando se ejecuta en "modo normal", por lo que aquí es más fácil de usar /proc/mounts.
Izzy
Es posible que también desee preguntar esto en Unix y Linux . Es posible que conozcan formas de obtener la información. Todo lo que he investigado dice 'fdisk' u otras herramientas que no devuelven nada o no existen en el sistema Android.
Ryan Conrad
Esa fue mi experiencia también. He hecho una pregunta relacionada sobre SO con una perspectiva diferente, pero aún no obtuve respuesta. Me temo que estoy preguntando lo imposible. Es bastante fácil de lograr en dispositivos compatibles /proc/mtd, pero desafortunadamente, eso ya no parece estar lleno de dispositivos actuales. En algunos dispositivos, incluso he encontrado .fstabarchivos, pero de nuevo, a) no en todos, yb) incluso si no parecían confiables (algunas partes definitivamente estaban mal allí).
Izzy
1

KPARTX

El comando kpartx lee tablas de particiones y asigna particiones a archivos de dispositivo. Funciona en dispositivos e imágenes de disco. Esto significa que podemos asignar particiones HFS en una imagen de disco a un archivo de dispositivo de bloque especial y montar esas particiones direccionando ese archivo de dispositivo de bloque como si fuera parte de un dispositivo conectado.

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

Los ejemplos en el enlace son enemigos del MacBook Pro, pero diferentes imágenes de disco deberían funcionar bien siempre que se presenten a GNU Linux en RAW. (xmount - ver abajo)

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 le permite convertir sobre la marcha entre múltiples tipos de imagen de disco duro de entrada y salida. xmount crea un sistema de archivos virtual usando FUSE (Sistema de archivos en el espacio de usuario) que contiene una representación virtual de la imagen de entrada. La representación virtual puede estar en formato DD, DMG, VHD sin formato, en el disco virtual de VirtualBox o en el formato de archivo VMDK de VmWare. Las imágenes de entrada pueden ser archivos DD, EWF (formato de compresión de testigos expertos) o AFF (formato forense avanzado) sin formato. Además, xmount también admite acceso de escritura virtual a los archivos de salida que se redirige a un archivo de caché. Esto permite iniciar imágenes de disco duro adquiridas utilizando QEMU, KVM, VirtualBox, VmWare o similares.

https://www.pinguin.lu/xmount


Puedo proporcionar detalles e información adicionales si es necesario o necesario.

HasH_BrowN
fuente
Admiro su entusiasmo, pero: he comprobado los dispositivos que tengo aquí, ninguno de ellos tiene esos comandos disponibles. Adivinado por sus enlaces, esas son herramientas disponibles para Linux, pero las particiones para investigar están en dispositivos Android, como se describe, y no se puede acceder directamente desde una máquina Linux. Además: asignar una partición a un dispositivo no revela qué hay en él (¿sistema? ¿Datos? ¿Arranque?), Por lo que kpartx está fuera. xmount tampoco parece resolver eso.
Izzy
Realmente pensé que estaba en algo. Lo intenté. Gracias por responder tan rápido. Mantendré mi nariz en la muela.
HasH_BrowN
Estoy agradecido por tus esfuerzos! Es solo que los resultados no coinciden, lo siento. Imagine lo siguiente: necesito tomar la /recoverypartición de un dispositivo en ejecución. Eso no está montado en modo normal. ¿Cómo calculo qué partición elegir? Con lo anterior, tuve que elegirlos todos y averiguarlo más tarde. Produce demasiados datos y lleva demasiado tiempo.
Izzy
1
Esa aplicación DiskInfo le mostrará la partición de recuperación desmontada. Acabo de comprobar, el mío (HTC One V) es mmcblk0p21. Es bastante detallado para una aplicación.
HasH_BrowN
1
Mi sentimiento, pero donde. Probablemente no esté en la lista / almacenado de la manera que estamos buscando.
HasH_BrowN
0

DiskInfo será la aplicación que quieras. Mostrará todos los puntos de montaje, además de todas las particiones desmontadas y temporales.

Esta es solo una interfaz gráfica, sin ninguna otra funcionalidad real. Perfecto para tu necesidad. Esto requiere ser utilizado en un dispositivo totalmente arrancado. La raíz no es necesaria.

Captura de pantalla
Captura de pantalla (haga clic para una variante más grande)

HasH_BrowN
fuente
1
Lo siento, absolutamente no. Debes haberte perdido la command-lineetiqueta :) Supongo que será mejor que lo escriba explícitamente. Conozco varias aplicaciones que muestran estos detalles, pero necesito acceder / recopilarlas a través de adb shell, y sin la ayuda de una aplicación adicional (no siempre puedo instalarla primero en un dispositivo que se me entregó).
Izzy
Ooops No herirá mis sentimientos, ¿quieres que elimine esto (así que no hay una mala dirección)?
HasH_BrowN
Solo si sientes la necesidad. Podría ser útil para otra persona que busca los mismos detalles por "otros medios". De lo contrario, lo marqué como "NAA" (no es una respuesta);) No lo rechazaré (podría dar los detalles solicitados, no lo verifiqué: ¿muestra qué partición contiene qué, como se describe en mi pregunta? ?) - pero tampoco lo votará / aceptará;)
Izzy
Sí, mostrará para qué es la partición (que contiene), simplemente no mostrará el contenido real.
HasH_BrowN
1
Eso está bien, así que desde ese punto ¡coincide! Así que por favor, no elimine esta respuesta :)
Izzy