Quiero averiguar todas las particiones en mi dispositivo junto con su resp. puntos de montaje o etiquetas (es decir, para saber qué partición contiene system
, recovery
, boot
, etc.). Esto debe ser independiente del dispositivo (ya que tengo varios dispositivos). El objetivo es dd
ellos y saber qué imagen es qué.
He visto Comando para enumerar los puntos de montaje de partición. – sin embargo, allí el objetivo era solo una lista de particiones de particiones montadas. Los necesito todos, y por ejemplo /recovery
, no está montado al arrancar en "modo de trabajo normal".
Hasta ahora, mi investigación ha arrojado varios enfoques, pero ninguno de ellos funciona en ninguno de los dispositivos que he probado:
cat /proc/mtd
: esto está vacío o no existecat /proc/emmc
: esto está vacío o no existecat /proc/dumchar_info
: no existente (MTK/MediaTek)ls -al /dev/block/platform/*/by-name
: ya sea inexistente, o no tener los detalles deseados¿Alguna idea de lo que me pude haber perdido? Por supuesto, podía recorrer todos los /dev/block/mmcblk0p*
dispositivos, tirarlos y ordenarlos 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 esa no es una solución.
EDITAR: Tenga en cuenta la etiqueta de la línea de comandos 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 me entregaron para investigar. Considérelo "antecedentes forenses" (sin cambios en el dispositivo), aunque eso no es exactamente cierto;)
También me disculpo por mi mala 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/remontarlos :)
Como ya muestran las respuestas existentes, parece que no hay una "forma única" de lograrlo. Así que comencé a combinar ideas de todas partes, uniéndolas en una secuencia de comandos (o más bien una "biblioteca de secuencias de comandos") para verificarlas secuencialmente (hasta que se logró un buen resultado) y las integré en mi "Herramienta de documentación del dispositivo" llamada Adebar . Los interesados pueden encontrarlo en el lib/partitions.lib
archivo. Como Adebar es de código abierto (GPLv2), no dude en 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:
Diferentes fuentes proporcionan diferentes conjuntos de detalles, por lo que primero prueba los "mejores" y luego recurre hacia abajo hasta que se encuentra al menos algo.
/proc/dumchar_info
da la mayor cantidad de detalles, así que esto se prueba 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 complicado de usar/dev/block/platform/*/by-name
, cotejado con…/proc/partitions
cotejado con /proc/mounts
nos da al menos las particiones montadasEntonces, el script que construí básicamente recorre las fuentes en este orden, deteniéndose tan pronto como pudo recopilar detalles (por ejemplo, si /proc/dumchar_info
se encontró, no es necesario analizar todos los demás). Todos ellos colocados en funciones separadas, devolviendo datos usando la misma estructura, uno podría incluso fusionar los resultados de todos ellos.
Si alguien puede encontrar una solución mejor, por supuesto, siempre estoy abierto a la idea :)
Me topé con esta pregunta. Me gusta el reto...
Herramientas que utilicé: BusyBox
Se me ocurrieron 3 comandos (uno que enumeró) para brindar información sobre las particiones
busybox ls -QAl --color=never /dev/block/platform/*/by-name
Producción:
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
Producción:
/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
Producción:
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
El comando kpartx lee tablas de particiones y asigna particiones a archivos de dispositivos. 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 dirigiendo ese archivo de dispositivo de bloque como si fuera parte de un dispositivo adjunto.
http://linuxsleuthing.blogspot.com/2012/10/christmas-come-early-hfshfs-mounting.html
Los ejemplos en el enlace son enemigos de MacBook Pro, pero diferentes imágenes de disco deberían funcionar bien siempre que se presenten a GNU Linux en RAW. (xmount - ver más 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`
montaje x
xmount le permite convertir sobre la marcha entre múltiples tipos de imágenes de disco duro de entrada y salida. xmount crea un sistema de archivos virtual usando FUSE (Filesystem in Userspace) que contiene una representación virtual de la imagen de entrada. La representación virtual puede estar en DD, DMG, VHD, formato de archivo de disco virtual de VirtualBox o en formato de archivo VMDK de VmWare. Las imágenes de entrada pueden ser archivos sin formato DD, EWF (Formato de compresión de testigo experto) o AFF (Formato forense avanzado). 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 iniciar imágenes de disco duro adquiridas utilizando QEMU, KVM, VirtualBox, VmWare o similares.
Puedo proporcionar detalles e información adicionales si es necesario o necesario.
/recovery
partició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 tarda demasiado.DiskInfo será la aplicación que desee. 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 su necesidad. Esto requiere ser utilizado en un dispositivo completamente iniciado. La raíz no es necesaria.
Captura de pantalla (haga clic para una variante más grande)
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 adb shell
de , y sin la ayuda de una aplicación adicional (no siempre puedo instalarla primero en un dispositivo que me entreguen).
izzy
busybox
(que desafortunadamente no está disponible en los "dispositivos de algunos amigos" que me entregan).blkid
no 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- chars solamente y no necesariamente "hablando").df
solo 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
.ryan conrado
izzy
/proc/mtd
, pero desafortunadamente, eso ya no parece estar poblado con dispositivos actuales. En algunos dispositivos, incluso encontré.fstab
archivos, pero nuevamente, a) no en todos, yb) incluso si no parecían confiables (algunas partes definitivamente estaban mal allí).