En bref si je monte ma carte SD Ext4 de 8GB, seul Root (SU) peut voir il. Le reste des utilisateurs (donc, le reste des applications) ne le détectent pas.
Tant que mon Ext4 SD La carte n'est pas montée correctement (Android donne toujours Damaged SD card. Format it... blah blah blah
), j'ai suivi ce guide pour le monter. Et ça marche :
Carte SD est à carte SD /dev/block/mmcblk1
donc la première partition est à /dev/block/mmcblk1p1
.
J'ai effectué le processus ADB préalable (pas très clair pour moi) :
su
setprop service.adb.tcp.port 5555
adb kill-server
stop adbd
start adbd
HOME=/sdcard adb start-server
adb connect localhost
adb -s localhost:5555 shell
exit
stop adbd
cat /sdcard/.android/adbkey.pub >> /data/misc/adb/adb_keys
start adbd
Et puis la carte est correctement monté en faisant (comme Root) :
# mount -t ext4 /dev/block/mmcblk1p1 /storage/extSdCard && sleep 5 && /system/bin/vold
Notez comment cela fonctionne comme SU mais pas comme un utilisateur normal :
root@unknown:/ # ls /storage/sdcard1
lost+found
root@unknown:/ # exit
u0_a98@unknown:/ $ ls /storage/sdcard1
ls: can't open '/storage/sdcard1': Permission denied
J'ai testé les étapes ci-dessus via SSH (shell distant).
La carte SD a été formatée depuis Windows à l'aide de la fonction Minitool Partition Wizard .
J'ai aussi testé :
- Modifier le
/system/etc/permissions/platform.xml
manuellement (en ajoutant<group gid=”media_rw” />
) àWRITE_EXTERNAL_STORAGE
section, comme indiqué ici. - SDFix .
- Utilisation du cadre Xposed avec HandleExternalStorage module.
Mais les applications (Total Commander, Ghost Commander, ou tout autre programme) n'ont pas accès à la carte SDCard Ext4.
Qu'est-ce que je pourrais essayer d'autre ?
Solutions de contournement pour que les applications lisent (et écrivent) la carte SD acceptée aussi.
Données supplémentaires 1 :
Notez la sortie du mount
pour les deux utilisateurs :
root@unknown:/ # mount | grep "sdcard" -i
/dev/block/mmcblk1p1 /storage/sdcard1 ext4 rw,seclabel,relatime,data=ordered 0 0
root@unknown:/ # exit
u0_a98@unknown:/ $ mount | grep "sdcard"
u0_a98@unknown:/ $ mount | grep "mmcblk"
Comme on peut le voir, l'utilisateur root a un périphérique monté que l'utilisateur normal n'a pas ( !). Je ne savais pas que cela pouvait arriver sous Linux.