Pregunta básica sobre flashear copias de seguridad de nandroid

Quiero saber que cuando flasheamos imágenes de partición específicas (por ejemplo, system.img, data.img, cache.img, etc.), ¿cómo sabe el software dónde colocar exactamente esos bytes de partición? Por ejemplo, si flasheo system.img, ¿qué sector CHS/LBA considerará como el comienzo de ese bloque? Si se basa en las tablas MBR/EBR1, ¿qué sucederá si también actualizo el MBR/EBR1?

La razón por la que pregunto es que quiero cambiar ligeramente la partición en EBR1, de modo que se asigne más espacio a la /datapartición en lugar de /sdcard. Tengo un teléfono inteligente viejo pero bien acondicionado basado en MediaTek (MTK-6577) llamado Karbonn-A30 que es excelente en calidad de construcción y en casi todos los demás aspectos, pero solo tiene 500 MB de almacenamiento interno (partición en la jerga de Linux) /dataque no es lo suficientemente bueno para las aplicaciones. Actualmente, las particiones MBR y EBR1 son así:

$disktype MBR
--- MBR
Regular file, size 512 bytes
DOS/MBR partition map
Partition 1: 2.000 TiB (2199023255040 bytes, 4294967295 sectors from 1024)
  Type 0x05 (Extended)
Partition 2: 10 MiB (10485760 bytes, 20480 sectors from 18432)
  Type 0x83 (Linux)
Partition 3: 10 MiB (10485760 bytes, 20480 sectors from 38912)
  Type 0x83 (Linux)
Partition 4: 650 MiB (681574400 bytes, 1331200 sectors from 113152)
  Type 0x83 (Linux)


$disktype EBR1
--- EBR1
Regular file, size 512 bytes
DOS/MBR partition map
Partition 1: 376 MiB (394264576 bytes, 770048 sectors from 1443328)
  Type 0x83 (Linux)
Partition 2: 1.293 GiB (1388314624 bytes, 2711552 sectors from 2213376)
  Type 0x83 (Linux)
Partition 3: 1.998 TiB (2196501691904 bytes, 4290042367 sectors from 4924928)
  Type 0x83 (Linux)

¡Por qué esta última partición que corresponde a /sdcardqueda tan grande (1.998 TiB) está más allá de mi comprensión! Dado que hay un buen espacio de 2,5 GB disponible en mi /sdcardpartición real, estaba pensando si puedo modificar el EBS1 y cambiar el direccionamiento de LBA para que la tercera partición comience con 2097152 sectores adicionales (lo que equivale a 1024 MB o 1 GB, que es lo suficientemente bueno para mí), ¿aumentará automáticamente mi /datapartición en 1 GB y la disminuirá /sdcarden 1 GB correspondientemente? En XDA y otros foros, he leído que la gente ha realizado con éxito este mod y ha logrado el cambio en el tamaño de las particiones, pero primero quiero entender cómo sucede.

Respuestas (1)

Como tengo un teléfono basado en MTK-6577 y tuve que profundizar en la reparación de una tabla de partición rota recientemente, pensé en intentar responder esto.

Quiero saber que cuando flasheamos imágenes de partición específicas (por ejemplo, system.img, data.img, cache.img, etc.), ¿cómo sabe el software dónde colocar exactamente esos bytes de partición?

Si flashea puntos de montaje conocidos, /system, /data, /cacheno necesita conocer la estructura subyacente, simplemente hay suficiente espacio y está en el formato correcto (por ejemplo, ext4). Los puntos de montaje se especifican en vold.fstab.

Sin embargo, si utiliza una herramienta de flasheo de bajo nivel como SP Flash, también deberá modificar el archivo de dispersión asociado al nuevo diseño de las particiones, ya que accederá directamente a las direcciones de memoria de las particiones.

Un ejemplo de puntos de montaje del sistema de archivos para el MT-6577 (copiado de /tmp/recovery.log):

CWM-based Recovery v6.0.2.8
recovery filesystem table
=========================
  0 /tmp ramdisk (null) (null) 0
  1 /boot emmc /dev/bootimg (null) 0
  2 /cache ext4 /dev/block/mmcblk0p4 (null) 0
  3 /data ext4 /dev/block/mmcblk0p5 (null) 0
  4 /misc emmc /dev/misc (null) 0
  5 /recovery emmc /dev/recovery (null) 0
  6 /emmc vfat /dev/block/mmcblk0p6 (null) 0
  7 /system ext4 /dev/block/mmcblk0p3 (null) 0
  8 /sdcard vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1 0
  9 /sd-ext auto /dev/block/mmcblk1p2 (null) 0

Por qué esta última partición que corresponde a /sdcard se deja tan grande (1.998 TiB) está más allá de mi comprensión

Este es el resultado de usar tablas de partición GPTmás antiguas MBR. Es una partición extendida especial que es el rango máximo de direcciones de 32 bits (2 TB). Permite cargar el MBR a cualquier dispositivo sin importar el tamaño de su memoria interna. Luego tienes las personalizadas EBR1(y EBR2personalizadas) para cada modelo.

Estaba pensando si puedo alterar el EBS1 y cambiar el direccionamiento de LBA para que la tercera partición comience desde 2097152 sectores adicionales (que llega a 1024 MB o 1 GB, lo cual es suficiente para mí), ¿aumentará automáticamente mi partición /data en 1 GB y disminuya la /sdcard en 1GB correspondientemente

No estoy del todo seguro acerca de los detalles de eso.

En su lugar, intercambié los tamaños de partición de /datay /emmccon un EBR1proporcionado en xda-developers.com . Luego, en Android, use la aplicación Link2SD que utiliza una partición ext4 de 2 GB en la tarjeta SD externa y mueve las aplicaciones grandes.

Solo pensé en agregar que si las cosas salen espectacularmente mal, como sucedió originalmente para mí, puede recuperarse usando copias de seguridad del original MBRy ERB1archivos para adb shellconectarse a su teléfono en modo de recuperación.

Restaurar detalles de la partición:

dd if=/tmp/MBR of=/dev/block/mmcblk0
dd if=/tmp/EBR1 of=/dev/block/mmcblk0p1

Ah, y para crear manualmente una copia de seguridad en primer lugar:

dd if=/dev/block/mmcblk0 of=/tmp/MBR bs=512 count=1
dd if=/dev/block/mmcblk0p1 of=/tmp/ERB1 bs=512 count=1

Monte una tarjeta SD externa desde CWM y podrá copiar el archivo a/desde /sdcard.