4 votes

Invoquez manuellement /system/bin/sdcard via le terminal

Je suis en train d'essayer de monter une carte SD formatée en EXT4 sous Cyanogenmod 13.1 (Android 6.0.1).

Jusqu'à présent, j'ai mis en place des scripts pour monter la carte à /mnt/ext_sdcard lors du démarrage. Ma compréhension actuelle est que le service "sdcard" doit ensuite être invoqué pour créer un montage FUSE pointant vers le vrai point de montage qui finira par conduire le scanner média vers le disque nouvellement monté.

En suivant quelques anciennes anciennes documentations et fils de forum, cela m'a conduit à cette commande dans le terminal :

service sdcard /system/bin/sdcard /mnt/ext_sdcard /mnt/test 1023 1023
    class late_start

Lorsque j'exécute la commande (en tant que root bien sûr), elle échoue avec un code de sortie de 1 et aucun message de sortie/erreur.

Ma question : Est-ce que je fais quelque chose de mal, ou cette commande est-elle obsolète dans 6.0.1 (les documents/fils de forum semblaient se référer à KitKat) ? Quelle est la syntaxe/les arguments corrects pour utiliser cette commande ?

0voto

Ben Baltz Points 152

Mettriez-vous cette commande dans un fichier init.*.rc? Je crois que vous devriez la mettre dans un fichier init.extmount.rc par exemple. Cela nécessite d'extraire et de recompiler le boot.img.

Comme je n'avais rien de mieux à faire, j'ai créé ceci : https://github.com/BenBaltz/mountext

Il s'agit d'un fichier zip flashable via le mode recovery pour installer votre script en extrayant le boot.img et en le recompilant avec les modifications.

ÉDITION Commandes Terminal

su -c mount -o bind /mnt/ext_sdcard /chemin/vers/nouveau/dossier

0 votes

Merci Ben, je vais vérifier ton script. Aussi, oui j'utilise cette commande dans le fichier init.rc principal actuellement.

0 votes

J'ai essayé votre commande dans init.mountext..rc et j'ai obtenu service: Commande inconnue sdcard. Ensuite, j'ai essayé service call sdcard... qui a retourné Le service sdcard n'existe pas. J'ai aussi trouvé deux instances en cours d'exécution de sdcard sur mon système et j'ai découvert qu'elles étaient invoquées avec /system/bin/sdcard -u1023 -g1023 -U0 /mnt/media_rw/8005-91F9 8005-91F9. Est-ce que cette commande varie entre les ROM Android?

0 votes

@Jake Je ne vois rien après 'J'ai compris'.

0voto

Irfan Latif Points 16863

Dans Android 6+ configuration du stockage:

Le montage des volumes de stockage externes physiques est géré par vold, qui effectue des opérations de préparation pour préparer le média avant de l'exposer aux applications.
...
Les services FUSE codés en dur ont été supprimés des fichiers init.rc spécifiques aux appareils et sont plutôt activés dynamiquement à partir de vold lorsqu'ils sont nécessaires.

Ainsi les services sdcard définis dans les fichiers *.rc ne sont plus nécessaires, ni storage_list.xml n'est maintenu à l'intérieur de framework-res.apk. Au lieu de cela, vold gère entièrement les dispositifs de stockage définis avec le drapeau voldmanaged= dans fstab. Voir plus de détails dans Le parcours du stockage d'Android.

Dans Android 9, le support FUSE a été complètement supprimé du binaire sdcard remplacé par sdcardfs. sdcardfs peut être monté directement en utilisant la commande mount, donc sdcard n'est pas nécessaire. Cependant, de Android 6 à 8, le binaire sdcard devrait monter un système de fichiers émulé s'il est exécuté avec les arguments appropriés. Vous pouvez voir le journal des erreurs dans logcat.

Vous pouvez également utiliser un outil tiers basé sur FUSE appelé bindfs pour obtenir le même résultat. Voir les détails dans Comment monter un dossier à l'intérieur de /sdcard avec les permissions correctes?

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