0 votos

¿Por qué se restablecería mi partición /system después de ser redimensionada?

Antecedentes:


Dispositivo: Yu Yureka | CM 12.1(5.1)

https://www.gsmarena.com/yu_yureka-6987.php


Ha pasado un tiempo desde que Cyanogen murió y estaba pensando en pasarme a una ROM más nueva. Resulta que Resurrection Remix tiene una ROM personalizada para Tomato (mi nombre de compilación) con soporte para Nougat: https://sourceforge.net/projects/resurrectionremix/files/tomato/ cortesía del Sr. Abhishek, el mantenedor de la ROM para Yureka.

De todos modos, seguí adelante, cambié mi recuperación de Cyanogen a TeamWin e instalé la nueva ROM, siendo la única parte pendiente la instalación de GApps, excepto que al instalar GApps me dio el famoso Error 70: https://tech.chandrahasa.com/2017/03/09/error-70-gapps-fix/

En mi caso, quería reparticionar /system para solucionar el problema, así que utilicé una herramienta (construida específicamente para mi dispositivo) para hacerlo. Funcionó y terminó formateando /system, /dalvik, /cache, /data.

Problema:

Cuando revisé el tamaño de la partición, mostraba 2.5GB tal como se prometió en este punto. Seguí adelante e instalé la nueva ROM y de alguna manera, la partición terminó siendo de 1.15GB como lo estaba originalmente. Sospecho que el script de instalación de la ROM restablece el tamaño de la partición como una verificación de integridad de manera predeterminada, después de todo - esta nueva ROM es un fork de la ROM CM 12.1 que originalmente vino con el teléfono. O quizás hay algún tipo de límite en el tamaño de la partición /system (no estoy seguro realmente...).

Pregunta: ¿Cómo puedo mantener este nuevo tamaño de repartición y evitar que la ROM lo restablezca a 1.15GB (si es que ese es el caso)?


Para su referencia:

Aquí está el script de actualización para la ROM:

assert(getprop("ro.product.device") == "YUREKA" || getprop("ro.build.product") == "YUREKA" || abort("E3004: Este paquete es para el dispositivo: YUREKA; este dispositivo es " + getprop("ro.product.device") + "."););
assert(cm.verify_trustzone("TZ.BF.3.0.R2-00034") == "1");
ui_print("Objetivo: YU/YUREKA/YUREKA:5.1.1/LMY49J/YOG4PAS8A4:usuario/llaves-lanzamiento");
ifelse(is_mounted("/system"), unmount("/system"));
package_extract_dir("install", "/tmp/install");
set_metadata_recursive("/tmp/install", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644);
set_metadata_recursive("/tmp/install/bin", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755);
mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system", "");
run_program("/tmp/install/bin/backuptool.sh", "backup");
unmount("/system");
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print(" RRRRRRRRRRRRRRRRR     RRRRRRRRRRRRRRRRR   ");
ui_print(" R::::::::::::::::R    R::::::::::::::::R  ");
ui_print(" R::::::RRRRRR:::::R   R::::::RRRRRR:::::R ");
ui_print(" RR:::::R     R:::::R  RR:::::R     R:::::R");
ui_print("   R::::R     R:::::R    R::::R     R:::::R");
ui_print("   R::::R     R:::::R    R::::R     R:::::R");
ui_print("   R::::RRRRRR:::::R     R::::RRRRRR:::::R ");
ui_print("   R:::::::::::::RR      R:::::::::::::RR  ");
ui_print("   R::::RRRRRR:::::R     R::::RRRRRR:::::R ");
ui_print("   R::::R     R:::::R    R::::R     R:::::R");
ui_print("   R::::R     R:::::R    R::::R     R:::::R");
ui_print("   R::::R     R:::::R    R::::R     R:::::R");
ui_print(" RR:::::R     R:::::R  RR:::::R     R:::::R");
ui_print(" R::::::R     R:::::R  R::::::R     R:::::R");
ui_print(" R::::::R     R:::::R  R::::::R     R:::::R");
ui_print(" RRRRRRRR     RRRRRRR  RRRRRRRR     RRRRRRR");
ui_print(" ");
ui_print(" ");
ui_print(" **************** Software *****************");
ui_print(" OS ver: RR-N-v5.8.3-20170621-tomato-OFFICIAL-VoLTE");
ui_print("");
ui_print(" Android ver: 7.1.2");
ui_print("");
ui_print(" Parche de seguridad: 2017-06-05");
ui_print("");
ui_print(" Versión SDK: 25");
ui_print("");
ui_print(" Estado de root: Habilitado");
ui_print("");
ui_print(" ID de compilación: NJH47B");
ui_print("");
ui_print(" Fecha de compilación: Mié Jun 21 18:23:54 IST 2017");
ui_print("");
ui_print(" Tipo de compilación: OFFICIAL-VoLTE");
ui_print("");
ui_print(" Anfitrión de compilación: DeadlyMachine");
ui_print("");
ui_print(" Mantenedor: Men_in_black007");
ui_print(" **************** Hardware *****************");
ui_print(" Nombre en clave del dispositivo: tomato");
ui_print("");
ui_print(" Fabricante: YU");
ui_print("");
ui_print(" *******************************************");
if is_mounted("/data") then
package_extract_file("META-INF/org/lineageos/releasekey", "/tmp/releasekey");
run_program("/tmp/install/bin/otasigcheck.sh") != "31744" || abort("No se puede instalar este paquete sobre datos incompatibles. Por favor, intente con otro paquete o realice un restablecimiento de fábrica");
else
mount("f2fs", "EMMC", "/dev/block/bootdevice/by-name/userdata", "/data", "");
package_extract_file("META-INF/org/lineageos/releasekey", "/tmp/releasekey");
run_program("/tmp/install/bin/otasigcheck.sh") != "31744" || abort("No se puede instalar este paquete sobre datos incompatibles. Por favor, intente con otro paquete o realice un restablecimiento de fábrica");
unmount("/data");
endif;
show_progress(0.750000, 0);
ui_print("Aplicando parche a la imagen del sistema incondicionalmente...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") ||
  abort("E1001: Error al actualizar la imagen del sistema.");
show_progress(0.020000, 10);
mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system", "");
run_program("/tmp/install/bin/backuptool.sh", "restore");
unmount("/system");
show_progress(0.050000, 5);
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
show_progress(0.200000, 10);
set_progress(1.000000);

1 votos

Solo conjeturando por la parte del script que has incluido: Es probable que la partición en sí no se haya redimensionado de nuevo. Pero el script escribió una imagen por bloques (block_image_update), por lo que el sistema de archivos piensa que tiene esos 1,15 GB. Si estoy en lo cierto con eso, todo lo que sería necesario es ajustar o expandir el sistema de archivos (no conozco los pasos para eso, pero estoy seguro de que es posible: lo mismo se hace, por ejemplo, con Raspberry Pis después de flashear una imagen de 2 GB en una tarjeta SD mucho más grande).

0 votos

@Izzy: Encontré una solución con un truco. Ver mi respuesta.

0 votos

Eso es aún más fácil, ¡buen descubrimiento (votado)! Aunque tú y yo (y probablemente muchos otros) sabemos que puede ser conveniente aclarar que fue una copia de seguridad de nandroid y que no estás hablando de "restauración de fábrica" sino de TWRP :) Y sí, con las versiones recientes de recoveries personalizados (TWRP seguro, CWM supongo lo mismo) Nandroid ya no significa una copia de seguridad basada en bloques, sino más bien un "archivo de contenido", lo que posibilitó este procedimiento en primer lugar.

1voto

pulp_fiction Puntos 111

Lo hice con un truco. Primero flasheé la ROM con solo 1.15 GB de partición. Luego, cambió a recovery, hice una copia de seguridad de la ROM en la tarjeta SD y luego ejecuté el script para reparticionar, que se convirtió en 2.5GB, flasheando /system, /data, /cache y /dalvik.

Luego, en lugar de flashear la ROM de nuevo, restauré la copia de seguridad en esta partición.

¡Voilá! ¡Funcionó!

Ahora soy un feliz usuario de una ROM personalizada con Android Nougat (la original era Lollipop) y solo con las aplicaciones de Google que considero útiles.

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