Estoy usando un Sony Xperia M4 Aqua. Como es sabido, la memoria interna es bastante pequeña. Especialmente la Media
directorio de WhatsApp
utiliza un montón de espacio precioso, por lo tanto, estoy tratando de moverlo a la tarjeta SD. Estoy usando Android 6 y he formateado la tarjeta SD para tener una partición de almacenamiento adoptada.
El almacenamiento adoptado se utilizaría normalmente para migrar todos los /data
a la misma, como se discute aquí . Sin embargo, estoy interesado en mover sólo el directorio único WhatsApp/Media
en otro lugar (posiblemente en la partición de almacenamiento adoptada), y luego bind-mount a su ubicación original.
Para ello, trasladé el WhatsApp/Media
en el directorio adoptado. A continuación, tras esta discusión , he modificado el script /system/etc/init.qcom.post_boot.sh
añadiendo lo siguiente mount
(el teléfono no tiene soporte para init.d
scripts)
mount -o bind /mnt/expand/4fdb2500-9aa7-44bc-a2c4-80aeae28e764/WhatsAppMedia /storage/emulated/0/WhatsApp/Media
mount -o bind /mnt/expand/4fdb2500-9aa7-44bc-a2c4-80aeae28e764/WhatsAppMedia /mnt/runtime/write/emulated/0/WhatsApp/Media
mount -o bind /mnt/expand/4fdb2500-9aa7-44bc-a2c4-80aeae28e764/WhatsAppMedia /mnt/runtime/read/emulated/0/WhatsApp/Media
mount -o bind /mnt/expand/4fdb2500-9aa7-44bc-a2c4-80aeae28e764/WhatsAppMedia /mnt/runtime/default/emulated/0/WhatsApp/Media
mount -o bind /mnt/expand/4fdb2500-9aa7-44bc-a2c4-80aeae28e764/WhatsAppMedia /data/media/0/WhatsApp/Media
Aviso: /mnt/expand/4fdb25....
apunta a la partición de almacenamiento adoptada.
Esto sólo funciona aparentemente: si abro un shell con adb
Puedo ver correctamente que el WhatsApp/Media
contiene el directorio montado. Además, no veo ninguna vista adicional que contenga el directorio WhatsApp, como se puede comprobar haciendo, en un adb shell
find / -type d -name WhatsApp
Sin embargo, WhatsApp no puede acceder a la galería multimedia. Por ejemplo, en el chat sólo veo imágenes borrosas (como una vista previa), y al pulsar sobre ellas no veo la imagen completa. Además, si alguien me envía una imagen, todo lo que puedo ver es una vista previa borrosa con el icono de descarga. Al hacer clic en el icono de descarga no se produce nada.
Los permisos erróneos son presumiblemente la fuente de los problemas. Por ejemplo, algunos permisos/propiedad de grupos parecen ser incorrectos en algunas vistas:
root@E2303:/ # ls -n /storage/emulated/0/WhatsApp
drwxrwx--x 0 1015 2019-09-04 14:37 Backups
drwxrwx--x 0 1015 2019-10-19 02:00 Databases
drwxrwx--x 0 1015 2019-09-04 20:24 Media
root@E2303:/ # ls -n /mnt/runtime/write/emulated/0/WhatsApp
drwxrwx--- 0 9997 2019-09-04 14:37 Backups
drwxrwx--- 0 9997 2019-10-19 02:00 Databases
drwxrwx--x 0 1015 2019-09-04 20:24 Media
root@E2303:/ # ls -n /mnt/runtime/read/emulated/0/WhatsApp
drwxr-x--- 0 9997 2019-09-04 14:37 Backups
drwxr-x--- 0 9997 2019-10-19 02:00 Databases
drwxrwx--x 0 1015 2019-09-04 20:24 Media
root@E2303:/ # ls -n /mnt/runtime/default/emulated/0/WhatsApp
drwxrwx--x 0 1015 2019-09-04 14:37 Backups
drwxrwx--x 0 1015 2019-10-19 02:00 Databases
drwxrwx--x 0 1015 2019-09-04 20:24 Media
root@E2303:/ # ls -n /data/media/0/WhatsApp/
drwxrwxr-x 1023 1023 2019-09-04 14:37 Backups
drwxrwxr-x 1023 1023 2019-10-19 02:00 Databases
drwxrwx--x 0 1015 2019-09-04 20:24 Media
Permisos y propiedad de grupo del Media
debe ser el mismo de los otros directorios (no montados en bind) Backups
y Databases
. Curiosamente, un intento de volver a montar los directorios con el gid correcto
root@E2303:/ # mount -o remount, gid=9997 /mnt/runtime/write/emulated/0/WhatsApp/Media
root@E2303:/ # mount -o remount, gid=9997 /mnt/runtime/read/emulated/0/WhatsApp/Media
root@E2303:/ # mount -o remount, gid=1023 /data/media/0/WhatsApp/Media
no produce ningún cambio en la propiedad del grupo: ls -n
como el anterior da resultados idénticos.
Aún más extraño, pero tal vez no relacionado, es omitir el espacio entre remount
y gid=...
resultados en
mount: Invalid argument
Cómo atar la montura WhatsApp/Media
carpeta de la tarjeta SD externa con los permisos correctos?