1 votes

Droits d'exécution sur le système de fichiers fuse/fat

J'ai réussi à faire une compilation croisée de Ruby pour Android et tout se passe bien dans l'émulateur.

Mais alors que je teste ces drôles de choses sur mon appareil (Nexus4), j'ai remarqué que /sdcard (o /storage/emulated/0 ) est un montage de fusible sans autorisation d'exécution.

Comment puis-je exécuter quelque chose sur la carte SD ?

J'ai vu que sous Linux vous pouvez le passer comme argument à l'éditeur de liens. Sous Android, cela ne fonctionne pas : /system/bin/linker veut un pointeur vers une structure spéciale. Je pense que je peux écrire un petit programme C qui crée cette structure et lancer le linker pour exécuter un programme lisible.

Mais qu'en est-il des bibliothèques partagées ? Ruby charge des dizaines de bibliothèques partagées (chaque fois que vous avez un "require"), je parie que des autorisations d'exécution sont nécessaires pour charger les bibliothèques partagées.

Déplacer l'exécutable vers /data/data/my.app.name/files/ ou tout autre endroit n'est pas une solution, mes binaires sont très gros (liés statiquement) et les utilisateurs devraient être libres de spécifier n'importe quel endroit où les stocker.

1voto

tux_mind Points 203

J'ai trouvé une solution pour les lister.

lorsque vous ouvrez un fichier sur le point de montage, le gestionnaire FS de fuse l'ouvre également.

J'ai utilisé ces informations et j'ai écrit un petit programme en C qui utilise proc pour trouver les répertoires sources.

si vous êtes intéressé par le Le projet est hébergé sur github .

Salutations, tux_mind.

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