1 votos

Montaje de la carpeta de la tarjeta SD portátil a la carpeta interna (WhatsApp)

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:

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

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.

0voto

Andrew T. Puntos 2107

Basado en el comentario y el auto-respuesta por OP:

Este es el resultado principal de este hilo, y cómo se ha hecho funcionar.

  1. WhatsApp no funcionará si sólo se enlaza el montaje del Media carpeta en WhatsApp. No tengo ni idea de por qué. Es decir, que debe bind /WhatsApp y no /WhatsApp/Media

  2. Hay una diferencia si se ejecutan comandos desde el shell de ADB o desde una aplicación de terminal en el propio teléfono. Nunca había prestado atención a este detalle, ya que pensaba que eran lo mismo.

  3. bindfs hizo no trabajar desde la aplicación del terminal en el teléfono. Por alguna razón no se cargaba. Funcionaba desde el shell de ADB, pero entonces no funcionaba correctamente. Por lo tanto, he utilizado el bind sdcardfs en su lugar. Es decir, el comando completo es:

    mount -t sdcardfs -o nosuid,nodev,noexec,noatime,mask=7,gid=9997 /mnt/media_rw/6534-3933/WhatsApp /mnt/runtime/write/emulated/0/WhatsApp

0 votos

Gracias por lo anterior, pero no funciona en Android Q. ¿Alguna forma de vincular el montaje WhatsApp en Android Q con root

0 votos

En realidad, intenté este mismo enfoque anterior hace mucho tiempo. Suena como /mnt/runtime/write/emulated/0/WhatsApp no apuntará del todo a /Storage/emulated/0/WhatsApp' A no ser que se desmonte lo que ya está montado en primer lugar. Este último seguirá escribiendo en internal storage Así que me pregunto si / cómo lo anterior ayudó ?

0 votos

Y yo por supuesto WhatsApp's el almacenamiento está codificado en /Storage/emulated/0/WhatsApp' . Así que cualquier travesura que hagas bajo el capó... el resultado final debería afectar a este camino '/Storage/emulated/0/WhatsApp

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