1 votes

Monter le dossier de la carte SD portable dans le dossier interne (WhatsApp)

Je essaie de monter le répertoire media WhatsApp de la carte SD portable vers la "SD" interne, car le stockage interne du téléphone est très limité.

Mon téléphone : Sony Xperia XZ1 Compact (stockage interne de 32 Go, carte SD externe de 128 Go), Pie 9.0, image stock, bootloader déverrouillé, dm-verity et SElinux activé. Magisk 20.1 (mode de namespace de montage = Namespace global). bindfs v.1.14.2.

J'ai lu et essayé ce qui est montré dans ces fils de discussion :

Sortie 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

Les dernières lignes pertinentes de la sortie de mount -r ....

/data/media sur /mnt/runtime/default/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiutilisateur,masque=6,dérivé_gid,default_normal)
/data/media sur /storage/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiutilisateur,masque=6,dérivé_gid,default_normal)
/data/media sur /mnt/runtime/read/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiutilisateur,masque=23,dérivé_gid,default_normal)
/data/media sur /mnt/runtime/write/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiutilisateur,masque=7,dérivé_gid,default_normal)
/dev/block/sda60 sur /mnt/qns type ext4 (rw,seclabel,nosuid,nodev,noexec,noatime,discard,data=ordered)
/dev/block/vold/public:179,1 sur /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 sur /mnt/runtime/default/6534-3933 type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,masque=6,sans_cache)
/mnt/media_rw/6534-3933 sur /storage/6534-3933 type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,masque=6,sans_cache)
/mnt/media_rw/6534-3933 sur /mnt/runtime/read/6534-3933 type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,masque=18,sans_cache)
/mnt/media_rw/6534-3933 sur /mnt/runtime/write/6534-3933 type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,masque=18,sans_cache)

La sortie de la commande proposée :

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 donne l'erreur suivante :

fuse: le point de montage n'est pas vide
fuse: si vous êtes sûr que c'est sans danger, utilisez l'option de montage 'nonempty'

J'ajoute alors la chaîne nonempty à la commande, et ensuite le répertoire de la carte SD externe est monté comme "interne".

Les nouvelles lignes de mount -r se lisent maintenant :

/mnt/media_rw/6534-3933/WhatsApp/Media sur /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 sur /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 sur /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 sur /mnt/runtime/read/emulated/0/WhatsApp/Media type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)

WhatsApp lit correctement tous les fichiers, cependant je ne peux pas télécharger quoi que ce soit de nouveau sur le lecteur. C'est frustrant au plus haut point, car j'en suis arrivé à ce stade auparavant. Je ne peux tout simplement pas trouver comment faire en sorte que WhatsApp puisse ÉCRIRE dans le répertoire.

J'ai utilisé des applications comme apps2sd, ts-bind, fbind, des options de montage. Tout ce qui existe. Je ne parviens jamais à atteindre un stade où WhatsApp peut écrire sur la carte SD externe, même s'il est "trompé" pour lire depuis la carte SD externe.

La seule solution qui fonctionne, mais qui n'est pas viable, est d'installer xposed expérimental, d'installer l'ancien module xinternalSD, et le module magisk "ExSDCard Access Enabler". Ensuite, WhatsApp fonctionne parfaitement, mais je crois que c'est très instable pour le reste de mon système et de mon téléphone. Et j'aimerais vraiment avoir une solution plus propre à ce problème, comme celle que vous proposez.

Veuillez m'aider avec cette grande grande migraine.

Dernière note, j'ai également essayé la commande telle qu'elle est donnée dans votre autre publication :

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

Même résultat après ajout de l'option nonempty, WhatsApp peut lire depuis la carte SD externe, mais ne peut pas écrire dessus.

0 votes

Salut @Irfan, Tu sembles être la personne la plus compétente sur ce problème. J'ai suivi à la lettre tes guides, mais ils ne semblent pas fonctionner pour moi. Si tu vois ce que j'ai fait, ça devrait être bon, non? Je n'ai pas été autorisé à commenter sur les autres fils de discussion cependant. De plus, quelle différence cela ferait-il, que ce soit le dossier complet WhatsApp ou simplement le dossier des médias? Le résultat devrait être le même non?

0 votes

Merci beaucoup pour votre assistance active et votre aide. La raison pour laquelle je ne crois pas que ce soit le cas comme vous le suggérez, c'est que si j'ouvre la carte SD interne et que je navigue jusqu'au dossier que j'ai monté à partir de la carte SD externe/portable, je peux lire le dossier, mais je ne peux pas écrire dedans. Cela se fait par l'intermédiaire d'un explorateur de fichiers tiers sur Android (x-plore). Cela renforce mes soupçons qu'il y a quelque chose de fondamentalement incorrect. Pourrait-il s'agir de quelque chose avec SELINUX étant défini sur appliqué. Je crois que quelqu'un l'a suggéré sur le forum xda.

0voto

Andrew T. Points 12017

Basé sur le commentaire et la réponse personnelle de l'OP :

C'est le résultat principal de cette discussion, et comment cela a été fait pour fonctionner.

  1. WhatsApp ne fonctionnera pas si vous ne liez que le dossier Média dans WhatsApp. Je ne sais pas pourquoi. C'est-à-dire que vous devez lier /WhatsApp et non pas /WhatsApp/Media

  2. Il y a une différence si vous exécutez des commandes à partir de la coque ADB ou à partir d'une application de terminal sur le téléphone lui-même. Je n'avais jamais fait attention à ce détail auparavant, car je pensais qu'ils étaient les mêmes.

  3. bindfs n'a pas fonctionné à partir d'une application de terminal sur le téléphone. D'une manière ou d'une autre, il ne se chargeait pas. Il fonctionnait à partir de la coque ADB, mais alors il ne fonctionnait pas correctement. Par conséquent, j'ai utilisé l'option bind sdcardfs à la place. C'est-à-dire que la commande complète est :

    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 votes

Merci pour cela mais cela ne fonctionne pas sur Android Q. Y a-t-il un moyen de monter WhatsApp sur Android Q avec root ?

0 votes

En réalité, j'ai essayé cette approche il y a longtemps. Il semble que /mnt/runtime/write/emulated/0/WhatsApp ne pointera pas exactement vers /Storage/emulated/0/WhatsApp à moins que vous ne désinstalliez peut-être ce qui est déjà monté en premier. Ce dernier continuera à écrire dans stockage interne, donc je me demande si / comment le ci-dessus a aidé ?

0 votes

& Je considère bien sûr que le stockage de WhatsApp est défini en dur sur /Stockage/emulé/0/WhatsApp. Peu importe les manigances que vous faites en coulisses... le résultat final devrait affecter ce chemin /Stockage/emule/0/WhatsApp

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X