¡Eureka!
Así es como lo he hecho:
Partición y formato de la tarjeta SD
Sin saber qué particiones podría reubicar, decidí volver a crear mi tarjeta sd con la misma disposición exacta 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 ha sido realizado en mi pc 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 como corresponde:
# /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 "respaldar" los archivos de la emmc a la partición correspondiente de la tarjeta sd, teniendo cuidado de conservar los atributos de los archivos.
Editar fstab
En las versiones no muy antiguas de Android, fstab
parece estar siempre ubicado en /
.
Archivos en /
se almacenan en el BOOT
partición ( boot.img
);
es el momento de aprender a editar el boot.img
.
Aquí tienes dos tutoriales muy útiles que te pondrán en marcha:
CÓMO: Desempaquetar, editar y volver a empaquetar imágenes de arranque
Manipulación del boot.img de Android
una pequeña pista:
~~Edita el ramdisk en tu dispositivo Android.
Me pasé tres días de frustración intentando hacerlo en mi pc, supongo que es una cuestión de "endianidad".~~
Cuando se edita el ramdisk, hacer la ordenación name-list
(entrada estándar) para cpio
.
Pasé tres años en frustrantes fracasos recurrentes.
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
Lo único que he cambiado es el número de bloque (de 0 a 1).
No podía atreverme aún a trasladar EFS
Alguien dijo que de alguna manera se puede brickear el dispositivo jugando con eso, aún estoy estudiando el tema; lo que sí sé es que Android sigue escribiendo EFS
(Lo estoy supervisando).
Conclusiones y preguntas adicionales
Así es como reubiqué la mayor parte de mis datos de almacenamiento interno a mi tarjeta sd externa.
Las cosas van ligeramente lentas, como era de esperar, pero Android parece estar en perfecto estado de funcionamiento;
Siempre puedo invertir en una tarjeta sd más rápida en el futuro.
Todo esto lo hice con mi ROM stock del Samsung Galaxy S III, obviamente tendrás que adaptarte a tus circunstancias.
Cuando finalmente instalé CyanogenMod 13 (no queremos un firmware de stock, ¿verdad?) las cosas fueron un poco diferentes.
Con un limpiado /data
CM está pasando algún tiempo en el arranque poblando /data
y en un momento dado se da por vencido, se reinicia y pasa al modo de recuperación.
Después de varios intentos me rendí y me trasladé /system
en la memoria interna, ahora todo está bien.
Sé que /system
está montado como sólo lectura, pero me di cuenta de que la vida útil de la emmc se define como la cantidad de ciclos de lectura/escritura, tal vez sugiriendo 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
.
1 votos
¡Bienvenido a los entusiastas de Android! ¿Has probado la función de búsqueda de nuestro sitio, y comprobado detrás de las etiquetas utilizadas (la mayoría de ellas tienen un wiki adjunto)? Esa pregunta ya se hizo aquí más de una vez. Y además, tengo 2 teléfonos Android que ya uso durante 5 años y más, mi dispositivo principal actual que uso durante unos 3 años. Nada murió hasta ahora (a excepción de una tarjeta SD, que fue reemplazado fácilmente).
0 votos
Hola @Izzy, he encontrado mucho sobre cómo aumentar la memoria, nada que responda a la pregunta real del título. Ese es exactamente mi punto, es fácil de tirar y reemplazar una tarjeta sd, no se puede decir lo mismo de un teléfono
0 votos
Creo que Android Marshmallow tiene esta función incorporada, pero esto no es tan relevante para todos los demás que siguen en Lollipop y anteriores. Esperemos que pueda ayudar a algunos usuarios.
0 votos
@LJD200 casi tiene razón. MM permite fusionar los dos. Pero el OP quiere usar sólo el externo, y no tocar el interno en absoluto - así que eso no servirá.
0 votos
Acabo de flashear CyanogenMod 13 (Android 6) versión NIGHTLY. ¡Me dieron por vencido después de 2 días de investigaciones y foros sin respuesta y empecé a ver videos sobre la sustitución de emmc :-) ahah ! @Izzy, una escritura de una sola vez podría estar bien, lo que quiero evitar es un reemplazo continuo de archivos por parte de las aplicaciones o del propio Android.
0 votos
Eso significaría básicamente un DirectoryBind de
/data
a algún lugar de la tarjeta externa, y lo mismo para/cache
. Todo lo demás es mayormente de lectura.0 votos
@Izzy ¿puedo hacer eso con DirectoryBind? ¿Es sencillo? 2 particiones ext4 en la tarjeta sd enlazadas a /data y /cache ? Mientras tanto estoy monitorizando cómo va Android Marshmallow. El almacenamiento emulado está en emmc, ¡no contento!
0 votos
Nunca he utilizado DirectoryBind, así que no puedo decir lo sencillo que es en realidad. Sólo sé que es posible desde el punto de vista técnico.
0 votos
Hace un tiempo encontré este post Montar una carpeta desde la sd externa como /data y parece que todo el mundo lo acepta. Todavía no me entra en la cabeza: lo único que veo es la partición de DATOS montada en la tarjeta sd, ¡¡¡los archivos siguen almacenados en la partición!!! Me he fijado en ti @Izzy proponiendo esto como solución incluso en días más recientes
0 votos
Parece que tienes razón con eso, Claudio: es sólo el punto de montaje estando allí, con el almacén real todavía donde siempre ha estado. Yo diría que hay que poner un comentario allí para señalarlo. Pero aparte de eso, la respuesta de allí no está relacionada con DirectoryBind.
0 votos
No puedo comentar, no tengo suficiente reputación. Cualquier solución es buena para mí, siempre y cuando funcione.