2 votos

Crear manualmente particiones A/B

Tengo un Xiaomi Mi 6X que es la versión china de A2. Hay una forma de convertirlo en A2, pero las actualizaciones OTA no funcionarán porque el 6X solo tiene una partición A. No estoy seguro, pero he leído que es posible crear/eliminar particiones en un dispositivo Android.

Así que quiero crear manualmente las particiones A/B, pero no tengo idea de cómo se ve eso.

5voto

Jack Wade Puntos 231

Android utiliza la Tabla de Particiones GUID (GPT) como su sistema de particionado, el cual es posible modificar usando herramientas como parted y gdisk. Pero hay algunas limitaciones que puedo pensar, además del problema de actualización por aire que ya has mencionado:

  • Los dispositivos Android con esquema de partición A/B tienen muchas particiones en pares (_a/_b) incluyendo system, vendor, aboot, sbl y modem. Las nuevas particiones requieren espacio que obviamente no está disponible en la memoria flash (eMMC) y necesita ser liberado de tu partición userdata. Por lo que te quedarás corto en espacio de /sdcard.
  • Dado que todas las particiones a crear no están contiguas a la partición userdata (que normalmente es la última), es posible que necesites eliminar y crear decenas de particiones. Los detalles exactos dependen del orden de particiones en tu tabla de particiones. Por lo tanto, hay altas posibilidades de brickear tu dispositivo. :)
  • El bootloader de aplicaciones (aboot) en dispositivos A/B es diferente al de dispositivos no A/B. En dispositivos A/B, hay dos particiones boot y ninguna partición recovery. Por lo tanto, el proceso de elegir desde dónde arrancar el dispositivo es diferente que en dispositivos no A/B.
  • Además, otras funcionalidades de aboot que dependen de nombres de partición como fastboot update también se romperán. Y dado que los bootloaders son de código cerrado, no puedes modificarlo para que sea compatible con tu nueva tabla de particiones (a menos que tengas suerte y seas un experto en editar binarios con hexedit).

Así que parece prácticamente imposible convertir un dispositivo no A/B en un dispositivo A/B.

1 votos

Recientemente analicé algunas imágenes abl y tiene soporte para ranura a/b incluso en un teléfono con a solamente. Pero, por supuesto, es muy peligroso y se necesita entender lo que estás haciendo. Fuentes de abl de Qualcomm: source.codeaurora.org/quic/la/abl/tianocore/edk2/tree/…

0 votos

@Axifive interesante. ¿Has hecho ingeniería inversa en abl? Si es así, ¿pudiste encontrar direcciones codificadas especialmente para boot_[a|b]?

2voto

Cauchy Puntos 511

Xiaomi A2 tiene el mismo hardware que Mi 6X y de hecho, Mi 6X es la versión china de A2. ¿Por qué no flashear completamente Mi 6X con la ROM de A2, incluyendo las estructuras GPT del firmware? El problema será el fastboot en sí mismo, ya que no se puede escribir en GPT allí o cambiar el nombre de las particiones ya que rompe el fastboot existente en el ABL actual (BootLoader de Android), pero debería funcionar si el ABL en sí mismo es cambiado por el de A2.

Necesitarás usar el modo EDL para escribir completamente la ROM de A2 en Mi 6X con la tabla de particiones de A2, o al menos escribir tanto la estructura GPT como ABL.elf con otras particiones de carga de arranque como XBL.elf y luego usar fastboot (que será flasheado desde A2 por lo que debe reconocer y responder al nombre de las particiones de A2) para flashear las particiones restantes.

Esto debería ser posible solo si ambos dispositivos son típicamente iguales en hardware y firmware de SoC y no hay un eFuse de Secure Boot proporcionado por Qualcomm en el SoC de Mi 6X, ya que esto evitará que se cargue un ABL modificado o diferente (incluso si el gestor de arranque está desbloqueado) lo que te llevará de nuevo al modo EDL con un error de arranque. Así que primero, verifica si tienes secure boot habilitado o no usando algo como fastboot oem SecureBoot GetFuseStatus si tu dispositivo soporta este comando, o flasheando directamente una ROM de A2 diferente con sus estructuras GPT y ver qué sucede.

También debes saber que lo que haces es arriesgado y tienes una probabilidad bastante alta de dejar tu teléfono inutilizable, así que hazlo bajo tu propia responsabilidad.

0voto

user315326 Puntos 1

El esquema de particionado a/b no consume almacenamiento interno, en un Google Pixel 1, el esquema a/b solo ocupa 320MiB más que el esquema de a solo. Fuente: Android Developers https://source.android.com/devices/tech/ota/ab/ab_faqs

1 votos

¿Cómo responde esto a la pregunta? // ¿Cómo podrías reducir a la mitad el tamaño de la partición del sistema sin recompilar tu ROM con código fuente modificado? Necesitas ser un desarrollador de ROM para poder crear un sistema operativo personalizado para ahorrar espacio en /system_a colocando archivos .odex en /system_b y luego moverlos a /data en el primer inicio. De todas formas, el espacio no es el único problema. Otros problemas requieren más consideración seria.

0 votos

¿Puedes también sugerir alguna herramienta para crear una partición AB en un teléfono inteligente?

0 votos

@IrfanLatif ya existe una ROM con partición A/B de Xiaomi A2. Me pregunto si puedo crear una partición A/B en un Mi 6X (que tiene el mismo hardware).

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