13 votos

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

Quiero averiguar todas las particiones de mi dispositivo junto con sus respectivos puntos de montaje o etiquetas (es decir, saber qué partición tiene system , recovery , boot etc.). Esto tiene que ser independiente del dispositivo (ya que tengo varios dispositivos). El objetivo es dd y saber qué imagen es cada una.

He visto ¿Comando para listar los puntos de montaje de las particiones? - sin embargo, allí el objetivo era sólo una lista de particiones montadas. Yo las necesito todas, y por ejemplo /recovery no se monta cuando se arranca en "modo de trabajo normal".

Hasta ahora, mi búsqueda ha dado lugar a 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 : o no existe, o no tiene los datos deseados

¿Alguna idea de lo que me he podido perder? Por supuesto que podría caminar todo el /dev/block/mmcblk0p* pero luego tuve que repetir esa investigación para cada uno de mis dispositivos (y de nuevo cuando alguien aparece con otro), así que esa no es la solución.


EDITAR: Tenga en cuenta el línea de comandos etiqueta a esta pregunta. Tendré que acceder a esa información a través de ADB, y no quiero instalar una aplicación en un dispositivo que me entregan para investigar. Considéralo "fondo forense" (sin cambios en el dispositivo), aunque eso no es exactamente cierto ;)

También pido disculpas por mi mala redacción inicial: los "puntos de montaje" sólo son interesantes en la medida en que revelan el propósito de la partición. No quiero montarlos/remontarlos :)

0 votos

Espero que no te importe que haya añadido una etiqueta adicional

0 votos

@HasH_BrowN No cumple realmente con el objetivo (no me interesa montar aquí, por eso no lo apliqué inicialmente), pero tampoco hace mucho daño ;)

0 votos

Estoy componiendo otra respuesta para usted. ¿Le servirá la respuesta que apunta a KPARTX? Es parece correcto.

8voto

Izzy Puntos 45544

Como ya muestran las respuestas existentes, no parece haber una "forma única" de conseguirlo. Así que empecé a combinar ideas de todas partes, uniéndolas en un script (o más bien en una "biblioteca script") para que se comprobaran secuencialmente (hasta que se diera un buen golpe), y lo integré en mi "Herramienta de Documentación de Dispositivos" llamada Adebar . Los interesados pueden encontrarlo en el lib/partitions.lib archivo. Como Adebar es de código abierto (GPLv2), siéntase libre de copiarlo y utilizarlo - o bifurcar el proyecto y mejorarlo.

La solución completa es un poco larga para publicarla aquí (como se ha dicho, puedes cogerla en Github), pero como nuestra política es incluir al menos la parte general en el post, esto es lo que hace:

Diferentes fuentes proporcionan diferentes conjuntos de detalles, por lo que intenta primero los "mejores" - y luego recurre hacia abajo hasta que al menos se encontró algo.

  • /proc/dumchar_info ofrece la mayor cantidad de detalles, por lo que se intenta primero. Los usuarios de MTK felices obtendrán esto.
  • /proc/mtd es la segunda mejor fuente.
  • /proc/emmc debería tener casi lo mismo que los candidatos anteriores, pero es un poco difícil de usar
  • /dev/block/platform/*/by-name cruzado con
  • /proc/partitions cotejado con /proc/mounts nos da al menos las particiones montadas

Así que el script que he construido básicamente recorre las fuentes en este orden, deteniéndose en cuanto ha podido recoger detalles (por ejemplo, si /proc/dumchar_info se encontró, no es necesario analizar todos los demás). Todas ellas puestas en funciones separadas, devolviendo datos usando la misma estructura, incluso se podrían fusionar los resultados de todas ellas.

Si a alguien se le ocurre una solución mejor, por supuesto siempre estoy abierto a la idea :)

4voto

mercutio Puntos 5828

Me encontré con esta pregunta. Me gustan los retos...

Herramientas que he utilizado: BusyBox

Se me han ocurrido 3 comandos (uno de los que has enumerado) para dar información sobre las particiones

busybox ls -QAl --color=never /dev/bock/platform/*/by-name  

La 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

La 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

La 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

1 votos

Gracias por tus esfuerzos, Ryan. También he jugado ya con busybox (que lamentablemente no está disponible en los dispositivos de "algunos amigos" que me entregan). blkid no revela de qué partición se trata (de arranque, de recuperación, etc.), y el */by-name/* no existe en todos los dispositivos (y cuando existe, los nombres son a veces bastante crípticos - por ejemplo, en mi LG Optimus 4X, los nombres son todos de 3 caracteres solamente y no necesariamente "hablando"). df sólo muestra 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 usar /proc/mounts en su lugar.

0 votos

También puede 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 o bien no devuelven nada, o no existen en el sistema Android.

0 votos

Esa fue mi experiencia también. He pedido a un relacionado pregunta en SO con una perspectiva diferente, pero aún no he recibido respuesta allí. Me temo que estoy pidiendo lo imposible. Es bastante fácil de lograr en los dispositivos que soportan /proc/mtd - pero, por desgracia, parece que ya no está poblada de dispositivos actuales. En algunos dispositivos incluso he encontrado .fstab archivos, pero de nuevo, a) no en todos, y b) incluso si, no parecían fiables (algunas partes estaban definitivamente mal allí).

1voto

HasH_BrowN Puntos 1278

KPARTX

El comando kpartx lee las tablas de partición y asigna las particiones a los archivos del 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 dirigiéndose a 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 para 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 imágenes de disco duro de entrada y de salida. xmount crea un sistema de archivos virtual utilizando FUSE (Filesystem in Userspace) que contiene una representación virtual de la imagen de entrada. La representación virtual puede estar en formato DD, DMG, VHD, en el formato de disco virtual de VirtualBox o en el formato de archivo VMDK de VmWare. Las imágenes de entrada pueden ser archivos DD sin procesar, EWF (Expert Witness Compression Format) o AFF (Advanced Forensic Format). Además, xmount también admite el acceso de escritura virtual a los archivos de salida que se redirige a un archivo de caché. Esto hace posible arrancar las imágenes de disco duro adquiridas utilizando QEMU, KVM, VirtualBox, VmWare o similares.

https://www.pinguin.lu/xmount


Puedo proporcionar detalles e información adicional si se requiere o necesita.

0 votos

Admiro su entusiasmo, pero: He comprobado los dispositivos que tengo aquí, ninguno de ellos tiene esos comandos disponibles. Según tus enlaces, esas son herramientas disponibles para Linux - pero las particiones a investigar están en dispositivos Android, como se describe, y no se puede acceder a ellas directamente desde una máquina Linux. Además: mapear una partición a un dispositivo no revela lo que hay en él (¿sistema? ¿datos? ¿arranque?), así que kpartx está descartado. xmount tampoco parece resolver eso.

0 votos

Realmente pensé que estaba en algo. Lo intenté. Gracias por responder tan rápido. Mantendré mi nariz en la piedra de afilar.

0 votos

Le agradezco sus esfuerzos. Es que los resultados no coinciden, lo siento. Imagina lo siguiente: Necesito coger el /recovery partición de un dispositivo en funcionamiento. Eso no está montado en modo normal. ¿Cómo puedo saber qué partición elegir? Con lo anterior, tuve que escogerlas todas, y averiguar después. Produce demasiados datos, y tarda demasiado.

0voto

HasH_BrowN Puntos 1278

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

Esto es sólo una interfaz gráfica, sin ninguna otra funcionalidad real. Perfecto para su necesidad. Esto requiere para ser utilizado en el dispositivo de arranque completo. root no es necesaria.

Screenshot
Captura de pantalla (haga clic para ampliarla)

1 votos

Lo siento, absolutamente no. Debes haberte perdido el command-line etiqueta :) Supongo que será mejor que lo escriba explícitamente. Conozco varias aplicaciones que muestran estos detalles, pero necesito acceder/recopilarlos a través de adb shell y sin la ayuda de una aplicación adicional (no siempre puedo instalarla primero en un dispositivo que me entregan).

0 votos

Ooops. No va a herir mis sentimientos, ¿quieres que borre esto (para que no haya despistes)?

0 votos

Sólo si sientes la necesidad. Podría ser útil para otra persona que busque los mismos detalles por "otros medios". Si no, lo había marcado como "NAA" (no-una-respuesta) ;) No lo votaré negativamente (podría dar los detalles solicitados, no lo he comprobado - ¿muestra qué partición contiene qué, como se describe en mi pregunta?) - pero tampoco lo votaré/aceptaré ;)

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X