Se habla mucho de las particiones de Android que se pueden encontrar con Google. A veces puedo encontrar referencias a GPT en la documentación de los procesadores móviles o en XDA Developers (donde he aprendido que ciertos dispositivos utilizan GPT como su esquema). Aparte de eso, no hay mucha discusión sobre lo que los dispositivos Android utilizan para almacenar información de las particiones. Hay excepciones: Sé que algunos dispositivos utilizan el método basado en la línea de comandos del subsistema MTD, como algunos de los dispositivos anteriores de HTC, y sé que los dispositivos de Qualcomm parecen utilizar una tabla de particiones GUID.
Si las particiones de un dispositivo están representadas por nodos de dispositivo que empiezan con mtd
o mtdblock
entonces Linux recibe la información de la partición de los argumentos de arranque. Si las particiones están representadas por nodos de dispositivo que empiezan con mmcblk
entonces el esquema de partición es ambiguo. Podría estar usando una tabla de partición GUID, pero el problema es que la tabla tendría que empezar en el primer sector que es también donde todos los cargadores de arranque de primera etapa residen en mi experiencia.
Así como la información de las particiones de los dispositivos cuyos nodos de partición comienzan con mtd
se puede encontrar en /proc/mtd
en los dispositivos donde los nodos del dispositivo comienzan con mmcblk
la misma información puede (normalmente) encontrarse en /proc/emmc
. Por qué el eMMC, un tipo de dispositivo de almacenamiento, es tratado como una alternativa al MTD, que es una interfaz para acceder al almacenamiento flash, no lo sé. Pero este en la página de GitHub parece implicar que la información de la partición de los dispositivos con /proc/emmc
no se reúne una mesa como GPT.
Esa misma página parece decir también que los núcleos iniciados por U-Boot exponen las particiones de una manera diferente a MTD o GPT. Aquí está el pasaje:
Since MTK devices use the uboot mechanism, partitions including boot and recovery, are not revealed as separate partitions, but rather accessed sequencially by size and start parameters.
Esa frase no tiene sentido para mí por la parte del acceso secuencial. Tal vez alguien pueda explicarlo mejor.
Entonces, ¿qué tan común es el GPT en los dispositivos Android? No he visto ninguna referencia a la partición en el sitio web del desarrollador de Android. Si los cargadores de arranque se almacenan después de la tabla de particiones, ¿significa eso que los chips son compatibles con GPT?
0 votos
Por lo que sé, la mayoría de los dispositivos Android utilizan GPT. Puedes comprobarlo fácilmente con
fdisk -l /dev/block/mmcblk0
. Por cierto, este hilo puede ser útil: Referencia de la tabla de partición de El Grande0 votos
@GokulNC He visto ese hilo. Es uno de los que yo comentaba. Los dispositivos que utilizan el subsistema MTD, que parece ser un número decente de los primeros smartphones Android, sin embargo, no utilizan una tabla de particiones. En esos casos, puede haber un MBR almacenado en el primer sector/bloque de la memoria interna si la ROM de arranque del SoC está diseñada con eso en mente (el cargador de arranque de la primera etapa en los dispositivos basados en OMAP comienza 512 bytes adentro, por ejemplo).
0 votos
¿las tablas de partición tienen que estar en el primer sector? ¿tal vez un SoC pueda arrancar desde el último sector también, como la lectura del sector inverso?
0 votos
También con respecto a MTD vs eMMC: el MTD es para el almacenamiento de tipo NAND crudo, por lo que utiliza diferentes controladores que NAND gestionado como eMMC.