UMI

El recovery sirve, entre otras cosas, para actualizar el sistema de nuestro dispositivo Android.

Así, al cargar el archivo que contiene la nueva ROM, que tal como define el estándar no es más que un archivo comprimido en formato zip que puede estar firmado o no, dependiendo de si el recovery que utilizamos es o no seguro, se realizan una serie de tareas que preparan el sistema para su actualización.

Dichas tareas se especifican en un archivo de la ROM, el cual contiene todas las instrucciones que deben ejecutarse, y que pueden resumirse en las siguientes: comprobaciones previas, formateo, carga y borrado de archivos auxiliares, si los hubiera.

META-INF/com/google/android/updater-script

Qué pasa cuando instalamos una ROM

Comprobaciones previas

Flasear una ROM es una tarea de conlleva un cierto riesgo y que, aunque no es habitual, podría provocar un brick permanente del dispositivo, por lo que es fundamental que el usuario sepa lo que hace y cómo actuar en caso que hubiera algún problema durante éste.

Actualizar un dispositivo con una ROM que pertenece a otro dispositivo, o al mismo dispositivo pero en una versión diferente, es causa de brick, por lo que debe evitarse.

Los buenos cocineros incluyen en sus desarrollos una instrucción que permite comprobar que el dispositivo soporte la ROM antes de iniciar el flaseo, abortando la instalación en caso contrario.

assert(getprop("ro.product.device") == "galaxys2" ||
       getprop("ro.build.product") == "galaxys2");

Formateo

La actualización de una ROM, una vez comprobado que ello es posible, empieza con el formateo de la partición de sistema, lo que borra cualquier rastro de la ROM anterior, incluyendo los programas de sistema (y el root), así como las configuraciones de origen.

format("ext4", "EMMC", "/dev/block/mmcblk0p9", "0");

Dado que el recovery funciona en un nivel intermedio, no se pierden las modificaciones que se hubieran realizado en el bootloader, si fuera el caso.

En ocasiones, dependiendo del tipo de ROM, también se formatea la partición de datos, borrándose todas las aplicaciones instaladas, así como sus datos, por lo que conviene tener un backup de las mismas, ya que puede darse el caso de que algunas hayan sido borradas de la Play Store.

Qué pasa cuando instalamos una ROM

Carga de la ROM

Esta fase se inicia montando las particiones que se van a modificar en modo lectura/escritura, algo fundamental para que pueda escribirse su contenido.

mount("ext4", "EMMC", "/dev/block/mmcblk0p9", "/system");

Una vez montadas las particiones el script de inicialización procede a copiar el contenido de la ROM en el dispositivo, así como a realizar otras tareas adicionales (creación de links, cambios de propietario o permisos en algunos archivos, etc) a criterio del cocinero.

package_extract_dir("system", "/system");

Finalmente, se desmontan las particiones que se hayan modificado, lo que provoca que el sistema almacene cualquier contenido que estuviera en cache.

unmount("/system");

Adicionalmente, en caso que la ROM contenga un kernel específico, lo que suele ser habitual, se procede a la carga del mismo en la partición correspondiente, así como a la sustitución del recovery (que se reemplazará en el siguiente inicio).

assert(package_extract_file("zImage", "/tmp/zImage"),
write_raw_image("/tmp/zImage", "/dev/block/mmcblk0p5"),

Si el cocinero ha incluido un módem concreto, éste es flaseado de la misma manera.

Qué pasa cuando instalamos una ROM

Borrado de archivos auxiliares

Consiste en el borrado de los archivos temporales necesarios para la correcta inicialización de la ROM, y que suelen ubicarse en el directorio /data/local/tmp o en /tmp.

Borrado manual de los datos

En cuanto al borrado manual de los datos previos, que puede realizarse o no, aunque es muy recomendable hacerlo, o incluso obligatorio, si se cambia de versión de Android o de tipo de ROM (al cambiar de una ROM de origen Samsung a CyanogenMod, por ejemplo), debería incluir el formateo de las particiones de datos y cache, no siendo necesario realizarlo más de una vez, como se ha publicado en algunos foros, en los que se recomienda realizar hasta tres wipes consecutivos como la cosa más lógica del mundo.

En cuanto al borrado de la partición de cache, es recomendable y no afecta a la disponibilidad de las aplicaciones instaladas ni a sus datos.

Sin comentarios

Deja una respuesta