Ver Mensaje Individual
  #1  
Viejo 17/12/14, 00:52:18
Avatar de LEPT
LEPT LEPT no está en línea
Usuario muy activo
Mensajes: 4,574
Compra y venta: (1)
 
Fecha de registro: abr 2012
Localización: Ahí-donde-eso
Mensajes: 4,574
Modelo de smartphone: Xiaomi Mi A2
Versión de ROM: La última Oficial
Tu operador: Movistar
Mencionado: 120 comentarios
Tagged: 1 hilos
Sacar partido a las Particiones del dispositivo

[descargo de responsabilidades: No me hago responsable de los problemas que se os puedan ocasionar directa o indirectamente, como consecuencia de seguir este tutorial, correcta o incorrectamente. No obstante, todo lo que describo lo he experimentado previamente sin experimentar ningún problema en mi smartphone. Se requiere un cierto nivel de conocimientos para entender y realizar lo que se describe en este Tutorial.
Si queréis experimentar hacerlo, pero con lo que vosotros extraigáis, no copiando y 'pintando de rosa' lo de otros]


=>Echar un ojo a las particiones de nuestro dispositivo:

Hay varias maneras y cada una de ellas aporta una información similar pero diferente (o bien son comandos linux o aplicaciones linux, dado que android es en esencia linux). De entre toda la información que conseguiremos, cabe resaltar los puntos de montaje y el tamaño de cada partición.

Comando list:
[PHP]ls -al /dev/block/platform/msm_sdcc.1/by-name[/PHP]

Con GDISK, podremos ver los sectores de inicio y fin de cada partición con nombre:
[PHP]gdisk -l /dev/block/mmcblk0[/PHP]

Con PARTX, podremos ver además de los sectores de inicio y fin, la diferencia de ambos, el tamaño de la partición y sus nombres. Muy completito.
[PHP]partx -s /dev/block/mmcblk0[/PHP]

Y otras muchas…

Así que para no saturarnos con tantas posibilidades, me quedaré con la info de PARTX.

Para ejecutar PARTX, primero hay que meterlo al dispositivo. PARTX, yo lo pongo en /system/xbin/ y le doy los permisos 755 [rwxr-xr-x] (El propietario lectura, escritura y ejecución; el grupo y otros pueden leer y ejecutar el archivo).

Luego tenemos 2 posibilidades para realizar la consulta. O lo hacemos desde una ventana de comandos en el PC, o lo hacemos desde un Emulador de terminal en el dispositivo. El resultado es idéntico y el proceso sólo se diferencia en que desde el PC debes ejecutar "adb shell" lo primero.

# desde el PC #
[PHP]adb shell
shell@falcon_umts:/ $ su
su
root@falcon_umts:/ # partx -s /dev/block/mmcblk0
partx -s /dev/block/mmcblk0
NR START END SECTORS SIZE NAME UUID
1 256 131327 131072 64M modem 93abd67b-35df-ef9d-4aea-e8c4d36ecfa1
2 131328 132351 1024 512K sbl1 d465b87c-e36f-e519-d054-f9532bb4d638
3 132352 132415 64 32K DDR 8d4772ec-08a2-efc0-ca26-f10c5f59c286
4 132608 133631 1024 512K aboot 996b2d94-f771-de3d-dbaa-ed5cc38cf397
5 135608 136007 400 200K rpm 46ddb5bc-0f63-2b43-dec6-5795413e2b34
6 136608 137407 800 400K tz ebc23c87-eeb4-a0ff-407b-1d88c76aaf44
7 137608 137671 64 32K sdi 02437d2c-8d1a-47b2-e2d8-f19f41f21ff6
8 137672 138695 1024 512K utags 3f70fb2e-fb55-dd76-b075-ac9e60a65f06
9 138696 142791 4096 2M logs 770c0bf7-71ea-2337-7c9b-8fbbf46fc3f6
10 142792 147455 4664 2.3M padA 9afe5e68-f7ca-35f9-a2f7-67e4ab9a7f93
11 147456 148479 1024 512K abootBackup 4548bcef-89df-b3fe-9486-9d19a7d264db
12 150456 150855 400 200K rpmBackup 9a937f01-1ec1-398e-d447-d54482b6cb00
13 151456 152255 800 400K tzBackup e3ab910d-f62f-ba81-9e62-7a5e3742b6c1
14 152456 152519 64 32K sdiBackup 18397fdc-6051-5bfd-a00e-6fa5b2cc52bb
15 152520 153543 1024 512K utagsBackup cb24579f-7288-2fa8-acda-b28b0e3d1739
16 153544 155647 2104 1M padB ed16d7d5-d39d-5237-bc0f-9032525e8adc
17 155648 158719 3072 1.5M modemst1 6f848dd5-ff3f-f2d0-1129-6eae2653fd11
18 158720 161791 3072 1.5M modemst2 861c3ef5-07ac-9e5e-51e3-e1109110ec0a
19 161792 162815 1024 512K hob b52b8b8e-401f-6ef5-b43f-843d38fc61c2
20 162816 162831 16 8K dhob 076af99d-f35f-b6cd-1c10-503feebd1ff4
21 163072 166143 3072 1.5M fsg 6f074dae-5a0d-6fd7-d3a7-a3f9010c3d36
22 166144 166145 2 1K fsc cab1c411-1d7e-e2b0-9fc6-f57258394dba
23 166146 166161 16 8K ssd e2d00c4f-9a4f-010a-446f-6ebdbe9d9165
24 166162 168209 2048 1M sp d2e66266-3a8c-2110-f7d2-3ee662d47a3d
25 168210 168465 256 128K cid 78b32171-7fe3-8e1e-c419-b4f1eefb262a
26 168466 174609 6144 3M pds c2921c42-8208-fcde-b626-593746f93258
27 174610 182801 8192 4M logo f26c6502-54f4-c8e2-1c17-7ac46fd18ae8
28 182802 190993 8192 4M clogo 51910c78-4bfe-27f3-65e2-5f122c7f0a4d
29 191232 207615 16384 8M persist 643f0757-3708-3e46-2041-bcc9e5895f65
30 207616 208639 1024 512K misc 2ae26de1-9cb4-98a7-d75e-dccf3b9d65a7
31 208640 229119 20480 10M boot 03c86cc0-2464-16d3-32eb-2ed230200d81
32 229120 249599 20480 10M recovery 0015b9bc-fbd9-e492-5146-c51d076e86a4
33 249600 1605631 1356032 662.1M cache d548bb07-16a0-7fed-14e1-477b7c58aca1
34 1605632 3604479 1998848 976M system 75aa95d0-90e6-f00e-7f99-ebca5e2bae26
35 3604480 3620863 16384 8M kpan 4495236a-3f5a-7a16-ae26-41ff45738e96
36 3620864 15204095 11583232 5.5G userdata f6aeae4d-5c78-ffd7-b2bf-7a4b16866a9f
[/PHP]
# desde el dispositivo #


En esa tabla, para relacionar en cada partición su nombre 'dev-block' con el 'amigable', basta con fijarse en la primera columna, y poner ese número en lugar de la 'x' al final 'mmcblk0px' (por ejemplo, la partición con el nombre amigable Recovery tiene de nombre dev-block mmcblk0p32).

=> Averiguar el Tamaño de Bloque de la emmc:
[PHP]adb shell
su
dd if=/dev/block/mmcblk0 count=1 of=/dev/null[/PHP]



Observo que el tamaño del bloque en mi emmc es de 512 bytes.

=> Que podemos hacer con todo esto:
* Podemos extraer una partición del dispositivo.
Por ejemplo vamos a extraer el Recovery de nuestro dispositivo. Para ello, en los datos obtenidos antes con PARTX vemos que la partición recovery es el número 32, o lo que es lo mismo, mmcblk0p32. Ahora desde el una ventana de comandos en el PC (en nuestra carpeta 'de trabajo'), y con el dispositivo conectado por USB, ejecutamos.

[PHP]adb shell
su
dd if=/dev/block/mmcblk0p23 of=/sdcard/recovery.img[/PHP]

Y así nos extrae toda la partición mmcblk0p32 que es nuestro Recovery, y ocupa 10 Mbytes tal y como nos indica en los datos de antes que ocupaba esa partición.

Si lo que quisieramos es extraer esta misma partición, pero del BACKUP TOTAL que hemos hecho de nuestro dispositivo, tendríamos que especificar que la extracción de datos la empiece a realizar a partir del punto de montaje de esa partición. Y para eso vamos a realizar unos cálculos previos.

En este caso, tenemos estos datos:
Código:
             NR   START      END  SECTORS   SIZE NAME
mmcblk0p32  229120   249599    20480    10M recovery
Y hemos comprobado antes que el tamaño de bloque de nuestra emmc es de 512 bytes

Vamos a pasar el punto START del recovery a bytes. Si tenemos que la partición recovery empieza en el Bloque 229120, y que el tamaño de cada bloque es: 512 bytes/bloque.
Código:
229120 bloques * 512 bytes/bloque = 117309440 bytes
¡ Nuestra partición recovery empieza en el byte número 117309440 !
Y además sabemos que ocupa exactamente 10Mbytes

Entonces ya podremos ejecutar lo siguiente:

[PHP]dd if=backup.dd bs=1 skip=117309440 count=10M of=recovery.img[/PHP]

Para cualquier otra partición, los procesos serían similares.

=> Particiones 'interesantes':
* Tabla de particiones del dispositivo (gpt.bin).
El tema es que dicho fichero no existe como tal en un dispositivo, si no que son los 32 primeros KBytes del mmcblk0. Por lo tanto escribiremos.

[PHP]adb shell
su
dd if=/dev/block/mmcblk0 bs=1 count=32K of=/sdcard/gpt.bin[/PHP]

y con nuestro backup.dd sería

[PHP]dd if=backup.dd bs=1 count=32K of=gpt.bin[/PHP]


Si quereis echar un ojo para ver si realmente son iguales entre si, e iguales al gpt.bin que viene en las ROM, ya que este fichero es pequeño abrirlo con un editor hexadecimal, o probar a poner:

[PHP]adb shell
su
dd if=/dev/block/mmcblk0 bs=1 count=32K | hexdump -C
[/PHP]
y

[PHP]dd if=backup.dd bs=1 count=32K | hexdump -C[/PHP]


continuará...


Agradecimientos: Bueno, supongo que lo suyo sería poner los diferentes WebSites y libros de donde voy sacando la información para asimilarla y luego exponerla, pero todo es imposible. Lo que sí, mencionaré a tux_mind (XDA), E:V:A (XDA) y majdinj (XDA) cuyos Post me han ayudado mucho a entender todo esto.
Responder Con Cita
Los siguientes 8 usuarios han agradecido a LEPT su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]