1 votes

Comment lier le montage de libunionfs ?

Samsung a introduit une fonctionnalité dans sa ROM stock qui permet de déplacer le contenu des applications de médias sociaux (comme WhatsApp) vers la carte SD, puis de lier les deux dossiers.

J'ai exécuté la commande suivante dans Termux :

$su
#mount | grep -i "whatsapp"

La sortie suivante a été renvoyée :

libunionfs /mnt/runtime/default/emulated/0/WhatsApp fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
libunionfs /storage/emulated/0/WhatsApp fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
libunionfs /mnt/runtime/read/emulated/0/WhatsApp fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
libunionfs /mnt/runtime/write/emulated/0/WhatsApp fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0

J'ai appris sur le net que libunionfs est un système de fichiers virtuel. Comment Samsung a-t-il créé des montages bind sur ce système ? Normal #mount -o bind n'a pas fonctionné.

0voto

Irfan Latif Points 16863

UnionFS ne lie pas les montages, il s'agit d'un système de fichiers indépendant dans le noyau (bien qu'il existe également un système de fichiers unionfs-fuse ). Bind-mount et UnionFS ont des usages différents mais peuvent être considérés comme des alternatives l'un à l'autre dans certaines situations. Il en va de même pour OverlayFS et d'autres implémentations similaires. Il s'agit de systèmes de fichiers d'unification empilables qui unifient le contenu de deux répertoires différents. Les fichiers du répertoire inférieur sont recouverts par les fichiers de même nom du répertoire supérieur. Tous les autres fichiers du répertoire inférieur sont visibles comme des fichiers normaux. Un montage bind, quant à lui, recouvre complètement le contenu du répertoire inférieur. Voir aussi Comment fonctionne UnionFS ?

D'après votre commentaire :

Le problème est que Termux dit "no such device" si j'utilise l'option none dans la commande mount. Comment mentionner mon téléphone comme étant le périphérique sur lequel le montage doit être effectué ?

Le vôtre semble être UnionFS basé sur FUSE (juste le nom, pas lié à UnionFS dans le noyau). Le cadre de stockage d'Android fonctionne en changeant dynamiquement les permissions de fichiers en fonction des privilèges des applications accédant aux fichiers, ce qui nécessite un phénomène comme FUSE ou sdcardfs pour définir des pseudo-modes de permission. Les montages FUSE ne fonctionnent pas en utilisant simplement mount commande. Vous avez besoin d'un programme spécifique qui communique avec le noyau par l'intermédiaire de /dev/fuse et monte le F ilesystem in U ser S pac E (FUSE). La monture est liée à ce programme.

Je ne sais pas exactement quel est le nom de l'exécutable que Samsung utilise pour les montages FUSE, vous pouvez voir vos processus en cours pour trouver le binaire exécutable. Ensuite, utilisez ce programme spécifique en passant les arguments requis, la propriété, le mode, le contexte SELinux, les répertoires source et destination.

Cependant, il est très probable que l'implémentation ne se fasse que dans une bibliothèque partagée à laquelle on accède à partir du cadre Android. Dans ce cas, vous devez utiliser des programmes tiers tels que unionfs-fuse . Si vous souhaitez uniquement un montage en bind avec les permissions correctes bindfs peut également être utilisé. Pour plus de détails, voir Comment monter un dossier à l'intérieur de /sdcard avec les bonnes permissions ?

Si vous voulez un vrai UnionFS, vous devrez reconstruire le noyau (probablement avec quelques correctifs). OverlayFS est un meilleur choix, il fait partie du noyau Linux principal (il aurait dû être construit avec CONFIG_OVERLAY_FS ). Vous pouvez poser une question si vous avez besoin de détails sur un cas d'utilisation spécifique sur Android. Mais cela serait bien plus compliqué à mettre en place qu'une solution basée sur FUSE.

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