Estoy intentando montar el directorio multimedia de WhatsApp desde la SD portátil a la "SD" interna, ya que el almacenamiento interno del teléfono es muy limitado.
Mi teléfono: Sony Xperia XZ1 Compact (32GB de almacenamiento interno, 128GB de tarjeta SD externa), Pie 9.0, imagen de stock, bootloader desbloqueado, dm-verity, y SElinux enforcing. Magisk 20.1 (montaje Namespace Mode= Global Namespace). bindfs v.1.14.2.
He leído y probado lo que se muestra en estos hilos:
- ¿Cómo enlazar-montar las carpetas "data" y "obb" de la tarjeta SD externa en "/sdcard/Android"?
- ¿Cómo puedo hacer un enlace simbólico (o equivalente) dentro de /storage/emulated/0?
- ¿Cómo se puede montar una carpeta dentro de /sdcard con los permisos correctos?
- ¿Por qué no se puede escribir en WhatsApp para fijar los montajes?
Salida de /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cpuset
nodev cgroup
nodev cgroup2
nodev tmpfs
nodev configfs
nodev debugfs
nodev tracefs
nodev sockfs
nodev pipefs
nodev devpts
ext3
ext2
ext4
vfat
msdos
nodev ecryptfs
nodev sdcardfs
fuseblk
nodev fuse
nodev fusectl
f2fs
nodev pstore
nodev selinuxfs
texfat
nodev functionfs
Las últimas líneas relevantes de salida de mount -r ....
/data/media on /mnt/runtime/default/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid,default_normal)
/data/media on /storage/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid,default_normal)
/data/media on /mnt/runtime/read/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiuser,mask=23,derive_gid,default_normal)
/data/media on /mnt/runtime/write/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiuser,mask=7,derive_gid,default_normal)
/dev/block/sda60 on /mnt/qns type ext4 (rw,seclabel,nosuid,nodev,noexec,noatime,discard,data=ordered)
/dev/block/vold/public:179,1 on /mnt/media_rw/6534-3933 type texfat (rw,dirsync,nosuid,nodev,noexec,noatime,uid=1023,gid=1023,umask=0007,allow_utime=0020,utf8,min_prealloc_size=64k,max_prealloc_size=121910k,writeback_boundary=4M,readahead=4M,fail_safe,discard,hidden=show,errors=continue)
/mnt/media_rw/6534-3933 on /mnt/runtime/default/6534-3933 type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,mask=6,nocache)
/mnt/media_rw/6534-3933 on /storage/6534-3933 type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,mask=6,nocache)
/mnt/media_rw/6534-3933 on /mnt/runtime/read/6534-3933 type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,mask=18,nocache)
/mnt/media_rw/6534-3933 on /mnt/runtime/write/6534-3933 type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,mask=18,nocache)
La salida del comando propuesto:
bindfs -u u0_a195 -g 9997 -p a-rwx,ug+rw,ug+X /mnt/media_rw/6534-3933/WhatsApp/Media /mnt/runtime/write/emulated/0/WhatsApp/Media
Me da el siguiente error:
fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option
Luego añado la cadena no vacía al comando, y entonces el directorio de la tarjeta SD externa se monta como "interno".
Las nuevas líneas de mount -r ahora dicen:
/mnt/media_rw/6534-3933/WhatsApp/Media on /mnt/runtime/write/emulated/0/WhatsApp/Media type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)
/mnt/media_rw/6534-3933/WhatsApp/Media on /storage/emulated/0/WhatsApp/Media type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)
/mnt/media_rw/6534-3933/WhatsApp/Media on /mnt/runtime/default/emulated/0/WhatsApp/Media type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)
/mnt/media_rw/6534-3933/WhatsApp/Media on /mnt/runtime/read/emulated/0/WhatsApp/Media type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)
WhatsApp lee todos los archivos correctamente, pero no puedo descargar nada nuevo en la unidad. Esto es muy frustrante, ya que he llegado a esta etapa antes. Parece que no puedo encontrar la manera de hacer que WhatsApp sea capaz de ESCRIBIR en el directorio.
He utilizado aplicaciones como apps2sd, ts-bind, fbind, mount options. Cualquier cosa bajo el sol. Nunca puedo llegar a una etapa más que WhatsApp ser "engañado" para leer desde la SD externa, pero nunca ser capaz de escribir en la SD externa.
La única solución que funciona, no es una solución viable, es instalar xposed experimental, instalar el módulo antiguo xinternalSD, y el módulo magisk "ExSDCard Access Enabler". Entonces WhatsApp funciona perfectamente, pero creo que esto es un muy inestable para el resto de mi sistema y mi teléfono. Y la verdad es que me gustaría tener una solución más limpia para este problema, como la que propones.
Por favor, asista a este gran dolor de cabeza.
Última nota, también probó el comando como se da desde su otro post:
bindfs -o nosuid,nodev,noexec,noatime,context=u:object_r:sdcardfs:s0 -u 0 -g 9997 -p a-rwx,ug+rw,ugo+X --create-with-perms=a-rwx,ug+rw,ugo+X --xattr-none --chown-ignore --chgrp-ignore --chmod-ignore /mnt/media_rw/6534-3933/WhatsApp/Media /mnt/runtime/write/emulated/0/WhatsApp/Media
El mismo resultado después de añadir la opción no vacía, WhatsApp puede leer de la SD externa, pero no puede escribir en ella.
0 votos
Duplicado de ¿Cómo se puede montar una carpeta dentro de /sdcard con los permisos correctos?
0 votos
Hola @Irfan, Parece que eres la persona que más sabe de este tema. He seguido tus guías al pie de la letra, pero parece que no me funcionan. Si ves lo que he hecho, debería estar bien, ¿no? Sin embargo, no se me permitió comentar en los otros hilos. Además, ¿qué diferencia habría si es toda la carpeta de whatsapp o simplemente la carpeta de medios? El resultado debería ser el mismo no?
0 votos
Muchas gracias por su activa asistencia y ayuda. La razón por la que no creo que es el caso como usted sugiere, es si abro la tarjeta SD interna, y navegar a la carpeta que he montado desde la tarjeta SD externa / portátil, puedo leer la carpeta, pero no puede escribir en la carpeta. Esto es por 3er partido fole explorador en Android (x-plore). Esto refuerza mi sospecha, que hay algo fundamentalmente mal. ¿Podría ser algo con SELINUX está configurado para aplicar. Creo que alguien sugirió que en el foro xda.
0 votos
Ok. He probado tu sugerencia de montar toda la carpeta de WhatsApp y no la carpeta de WhatsApp/Media. No ha habido suerte. También he probado a montar a través del comando sdcarsfs dado en tu otro post: bindfs -o nosuid,nodev,noexec,noatime,context=u:object_r:sdcardfs: s0 -u 0 -g 9997 -p a-rwx,ug+rw,ugo+X --create-with-perms=a-rwx,ug+rw,ugo+X --xattr-none --chown-ignore --chgrp-ignore --chmod-ignore /mnt/media_rw/6534-3933/WhatsApp /mnt/runtime/write/emulated/0/WhatsApp Así que he probado tanto el montaje sdcardfs como el vfat.
0 votos
Además, me parece que el explorador de archivos sólo puede leer la carpeta montada, pero no puede escribir en ella. ¿Podría ser que el contexto no es el mismo para todos los teléfonos Android. Así, por ejemplo: context=u:object_r:sdcardfs:s0 debería ser otra cosa?
0 votos
No hay nada que hacer. He hecho exactamente lo que deseabas. pastebin.com/gZm5LPd3