3 votes

Comment faire fonctionner les liens symboliques dans /storage/emulated en 4.4.4 ?

J'ai créé un lien symbolique à partir de /storage/sdcard1/somefolder a /data/media/0/somefolder mais les applications traitent le lien symbolique comme un fichier et non comme un dossier (et se plantent parce qu'elles sont codées en dur pour chercher des fichiers dans un dossier à ce chemin).

Les applications racine qui accèdent au lien symbolique à partir de /data/media/0/somefolder fonctionne et le traite comme un dossier, les applications non Root utilisent le point de montage fusionné à /storage/emulated/0/somefolder parce qu'ils n'ont pas la permission de regarder à l'intérieur. /data/media .

Il n'est pas possible d'établir un lien symbolique vers le point fusionné directement (erreur de liaison entre périphériques). Les autorisations de point de symlink sur le point fusionné sont les suivantes 770 pour un app_ID:1028 au lieu de 777 pour root:root comme s'il s'agissait de /data/media il n'est pas possible de modifier les autorisations en utilisant Root sur le point de fusion. /storage/sdcard1/somefolder est 777 .

L'exploit de debuggerd doit être évité aussi longtemps que possible et les points de montage ne seront pas visibles à l'échelle du système.

Que faut-il changer pour que le lien symbolique fonctionne à partir du point de fusion ? Comment cela affectera-t-il le reste du système ?

2voto

slugster Points 27178

Android garde les points de montage depuis la sortie d'Android 4.2. Vous avez déjà mentionné le hack debuggerd, donc je suppose que vous connaissez cette restriction.

Cela peut sembler évident, mais vous devez d'abord vérifier si le système de fichiers utilisé sur le stockage externe émulé et sur le stockage externe réel prend en charge les liens symboliques. Si votre carte SD est formatée en FAT32, qui ne supporte pas les liens symboliques, rien ne se passera et vous devrez formater le stockage externe en quelque chose comme ext2/3/4 ou yaffs.

L'erreur "cross device link" peut être corrigée en utilisant la méthode suivante ln -s /data/media/0/somefolder /storage/sdcard1/somefolder au lieu de ln /data/media/0/somefolder /storage/sdcard1/somefolder . Cela créera un lien symbolique au lieu d'un lien dur, de sorte qu'il puisse s'étendre sur plusieurs systèmes de fichiers et périphériques de stockage. Vous devez effectuer cette opération en tant que Root, sinon cela ne fonctionnera pas.

Si les autorisations posent problème, vous devez peut-être résoudre le problème de la carte SD externe. Ce problème fait que la carte SD externe réelle est en lecture seule sur les versions de Kitkat. Les détails sont sur cette page . Il s'agit d'éditer /system/etc/permissions/platform.xml afin que les applications avec le WRITE_EXTERNAL_STORAGE La permission peut également écrire sur le "vrai" stockage externe. Cela peut être fait en installant cette application ou en procédant comme suit :

  1. Lancez votre gestionnaire de fichiers préféré avec les droits d'accès Root activés. Vous pouvez utiliser n'importe quelle application que vous préférez et qui peut fonctionner en mode élevé sur votre appareil. Par exemple, l'application " Root Explorer " ou " Total Commander " ou " File Manager " de CyanogenMod fera l'affaire.

  2. Naviguez vers le fichier suivant :

/system/etc/permissions/platform.xml

  1. Trouvez les lignes Android.permission.WRITE_EXTERNAL_STORAGE et Android.permission.WRITE_MEDIA_STORAGE. Il s'agit de sections XML. Vous devez les faire ressembler exactement aux chaînes ci-dessous :
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_r" />
<group gid="sdcard_rw" />
<group gid="media_rw" />
</permission>
<permission name="android.permission.WRITE_MEDIA_STORAGE" >
<group gid="sdcard_rw" />
<group gid="media_rw" />
</permission>

Sauvegardez le fichier platform.xml. Il est nécessaire de définir les autorisations du fichier à 644 (rw-/r-/r-) avant le redémarrage du mobile. Maintenant, redémarrez votre appareil Android.

Les crédits vont à poolmaker@XDA

0voto

Désolé mais je n'ai pas bien compris mais si vous voulez dire que vous voulez libérer plus d'espace sur la mémoire interne en créant des liens symboliques Pourquoi ne pas essayer Link2SD maintenant il peut lier même les données privées de n'importe quelle application à la carte SD externe sans causer de problème en plus de mais NE LIEZ PAS N'IMPORTE QUEL APPAREIL DU SYSTÈME À la carte SD externe car il causera de mauvais effets à votre téléphone. Il est recommandé d'avoir une carte SD avec une grande vitesse d'écriture et de lecture.

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