Los smartphones parecen morir después de dos años de uso, como si supieran que acabas de pagar la última cuota.
La razón común parece ser la falla de la memoria interna.
Estoy tratando desesperadamente de que mi teléfono escape de este cruel destino.
La idea que inicialmente tenía parecía simple, pero la web no parecía compartir mi optimismo.
Esta es la idea:
- crear particiones ext4 en la tarjeta SD
- montar en el arranque las particiones de la tarjeta SD /data
y /cache
(y tal vez /preload
y /efs
si alguna vez se escriben)
Me gustaría saber qué tiene de malo esta idea y por qué no funciona, pero la pregunta principal es:
¿Puedo dejar de escribir en la memoria interna para siempre?
He visto todas las aplicaciones que existen (app2sd, link2sd, DirecoryBind, s2e, lo que sea) y todas parecen reubicar subdirectorios, nunca el principal /data
.
Cualquier ayuda será muy apreciada.
¡Gracias!
¡Eureka!
Así es como lo he hecho:
Sin saber qué particiones habría podido reubicar, decidí recrear mi tarjeta SD exactamente con el mismo diseño de la memoria interna de mi Samsung Galaxy S III.
USERDATA
es la última partición y hay una buena razón para ello:
el tamaño de mi tarjeta SD es mayor que la memoria interna y la mejor opción ha sido ampliar USERDATA
hasta el sector más lejano posible.
El siguiente trabajo se ha realizado en mi PC con Linux:
parted /dev/sdb mklabel gpt \
mkpart BOTA0 ext2 8192s 16383s \
mkpart BOTA1 ext2 16384s 24575s \
mkpart EFS ext2 24576s 65535s \
mkpart PARAM ext2 65536s 81919s \
mkpart BOOT ext2 81920s 98303s \
mkpart RECOVERY ext2 98304s 114687s \
mkpart RADIO ext2 114688s 180223s \
mkpart CACHE ext2 180224s 2277375s \
mkpart SYSTEM ext2 2277376s 5423103s \
mkpart HIDDEN ext2 5423104s 6569983s \
mkpart OTA ext2 6569984s 6586367s \
mkpart USERDATA ext2 6586368s 60749824s
Bien, particiones creadas.
Ahora, todavía imitando mi dispositivo Android, formateo las particiones en consecuencia:
# /efs
mkfs.ext4 /dev/sdb3 -E root_owner=1001:1000
# /system
mkfs.ext4 /dev/sdb9 -E root_owner=0:0 -L system
# /cache
mkfs.ext4 /dev/sdb8 -E root_owner=1000:2001
# /preload
mkfs.ext4 /dev/sdb10 -E root_owner=0:0
# /data
mkfs.ext4 /dev/sdb12 -E root_owner=1000:1000
La tarjeta SD está lista, ahora puedo "hacer una copia de seguridad" de los archivos de emmc en la partición de la tarjeta SD adecuada, cuidando de preservar los atributos del archivo.
fstab
En las versiones no demasiado antiguas de Android, fstab
el archivo parece estar siempre ubicado en /
.
Los archivos en /
se almacenan en la BOOT
partición ( boot.img
);
es hora de aprender a editar el boot.img
.
Aquí hay dos tutoriales muy útiles que lo pondrán en marcha:
CÓMO: desempaquetar, editar y volver a empaquetar imágenes de arranque
Manipulación de boot.img de Android
un pequeño consejo:
Edite el ramdisk en su dispositivo Android.
Pasé tres días frustrado tratando de hacerlo en mi PC, supongo que es una cuestión de "endianidad".
Al editar el ramdisk, ordene name-list
(entrada estándar) para cpio
.
Pasé tres años frustrando fallas recurrentes al azar.
Mi fstab
antes:
/dev/block/mmcblk0p3 /efs ext4 noatime,nosuid,nodev,journal_async_commit,errors=panic wait
/dev/block/mmcblk0p9 /system ext4 ro,noatime wait
/dev/block/mmcblk0p8 /cache ext4 noatime,nosuid,nodev,journal_async_commit,errors=panic wait
/dev/block/mmcblk0p10 /preload ext4 noatime,nosuid,nodev,journal_async_commit wait
/dev/block/mmcblk0p12 /data ext4 noatime,nosuid,nodev,noauto_da_alloc,journal_async_commit,errors=panic wait,check,encryptable=footer
Mi fstab
después:
/dev/block/mmcblk0p3 /efs ext4 noatime,nosuid,nodev,journal_async_commit,errors=panic wait
/dev/block/mmcblk1p9 /system ext4 ro,noatime wait
/dev/block/mmcblk1p8 /cache ext4 noatime,nosuid,nodev,journal_async_commit,errors=panic wait
/dev/block/mmcblk1p10 /preload ext4 noatime,nosuid,nodev,journal_async_commit wait
/dev/block/mmcblk1p12 /data ext4 noatime,nosuid,nodev,noauto_da_alloc,journal_async_commit,errors=panic wait,check,encryptable=footer
Todo lo que he cambiado es el número de bloque (de 0 a 1).
Todavía no me atrevía a mudarme EFS
, alguien dijo que de alguna manera podrías bloquear el dispositivo jugando con eso, todavía estudiando el tema; Sé que Android sigue escribiendo EFS
(lo estoy monitoreando).
Así es como reubiqué la mayor parte de mis datos de almacenamiento interno en mi tarjeta SD externa.
Las cosas son un poco lentas, como era de esperar, pero Android parece funcionar perfectamente;
Siempre puedo invertir en una tarjeta SD más rápida en el futuro.
Hice todo esto con mi stock ROM de Samsung Galaxy S III, obviamente tendrás que adaptarte a tus circunstancias.
Cuando finalmente instalé CyanogenMod 13 (no queremos firmware estándar, ¿verdad?) las cosas fueron un poco diferentes.
Con un borrado /data
, CM pasa algún tiempo completando el arranque /data
y, en cierto punto, simplemente se da por vencido, se reinicia y pasa al modo de recuperación.
Después de varios intentos me di por vencido y lo reubiqué /system
en la memoria interna, ahora todo está bien.
yo se que/system
está montado como solo lectura, pero noté que la vida útil de emmc se define como la cantidad de ciclos de lectura/escritura, lo que tal vez sugiera que, a diferencia de los discos duros, la lectura es tan perjudicial como la escritura.
Si ese es el caso, estaría muy agradecido si alguien pudiera decirme por qué en CM no puedo reubicarme con éxito /system
.
@Claudio has planteado una muy buena inquietud. Teniendo algunos conocimientos integrados, puedo dar una idea sobre esto:
Cuando enciende un dispositivo, está programado para arrancar desde una ubicación de memoria específica. Esta ubicación de memoria está conectada a la memoria interna.
Por lo general, en los dispositivos integrados de demostración , tenemos un pequeño interruptor que podemos usar para cambiar entre diferentes dispositivos BOOT; puede ser un puerto interno, externo o incluso serie.
Pero en dispositivos de producción o comerciales, este interruptor se eliminará.
Por lo tanto, es casi imposible arrancar directamente desde la memoria externa.
Desearía que algunas empresas pudieran proporcionar una opción (como un interruptor) para arrancar desde la memoria externa, incluso si la memoria interna falla.
boot.img
en un lugar que no fuera el emmc.Pude iniciar con éxito desde la tarjeta SD en QMobile Z8 por:
parted
yfdisk
dd
boot.img
) y los archivos recovery.fstab y uneventd.rc en la recuperación de TWRP para iniciar el montaje y el arranque desde la tarjeta SDC en lugar de la memoria internaTuvo éxito después de algunos experimentos. Creo que este método debería ser aplicable a cualquier dispositivo con una configuración similar. Sin embargo, los archivos a editar pueden variar de un dispositivo a otro.
Si desea colocar solo los datos externos de las aplicaciones en la tarjeta SD y no toda la partición, puede editar fstab en boot.img y la lista de almacenamiento en framework-res.apk en Android 5 y versiones anteriores.
Para más detalles: [CÓMO] ARRANCAR DESDE LA TARJETA SD [EXITOSAMENTE] en QMobile Z8 con eMMC BRICKED/DEAD
izzy
Claudio
LJD200
izzy
Claudio
izzy
/data
a algún lugar en la tarjeta externa, y lo mismo para/cache
. Todo lo demás es principalmente de solo lectura.Claudio
izzy
Claudio
izzy
Claudio