27 Juil 2012 |
|
| Depuis peu, je suis l'heureux propriétaire d'un téléphone / ordinateur de poche : le fameux Samsung Galaxy Note et son écran géant ! Et comme je suis (un peu ?) un bidouilleur, je n'ai pas pu m'empêcher de rentrer directement dans le coeur de la bête. Il est proposé par défaut avec le système Android Gingerbread 2.3.6, basé sur un noyau GNU/Linux. Le problème avec ces appareils, c'est qu'on n'a pas par défaut la main sur tout le système : il n'est pas possible d'obtenir les droits super-utilisateur comme sous un vrai système GNU/Linux. Mais il y a plein d'astuces en ligne qui permettent de d'y remédier et d'ajouter cette possibilité. Ce n'est pas le but de cet article, il y a déjà ce tout qu'il faut en ligne. Par exemple ce tutoriel qui a très bien marché dans mon cas. Une autre chose énervante, c'est que la plupart des applications installées stockent leurs données sur la mémoire interne de l'appareil et pas sur la carte mémoire externe que j'ai ajouté. Comme il y a 12Go en interne et que j'ai mis une carte externe de 32Go, c'est quand même un peu bête ! Ce que je vous propose dans cet article, c'est une astuce qui permet de tromper les applications en délocalisant leurs données dans la carte externe sans qu'elles n'y trouvent rien à redire ! ![]() Pour commencer, il faut impérativement que votre Android soit rooté pour que tout ce qui suit puisse marcher. Vous pouvez utiliser le tutoriel que j'ai indiqué ci-dessus ou chercher sur internet, les docs à ce sujet ne manque pas ! Si vous ne souhaitez pas rooter votre appareil, il faudra malheureusement passer votre chemin, cet article n'est pas pour vous ! Ensuite, il vous faudra installer 2 applications gratuites disponibles sur le Google Play (la boutique officielle des applications Android) : Autostart (Root) Android Terminal Emulator Ce n'est pas indispensable, mais pour plus de confort avec la frappe au clavier dans le terminal, je vous conseille également le Hacker's Keyboard. Le principe est de permettre à des applications hébergeant leurs données sur la mémoire interne du téléphone (partition système ou carte interne) de continuer à fonctionner tout en stockant leurs données sur une carte mémoire externe. Par exemple, pour l'application de navigation routière NavFree, les données OpenStreetMap de la France entière pèsent 1.2Go et elles sont forcément stockées par l'application dans un répertoire en interne. J'aimerai vraiment stocker ça sur ma carte externe de 32Go, surtout si je souhaite un jour rajouter d'autres pays ! Le répertoire interne qui contient les données d'applications se trouve ici : /mnt/sdcard/Android/data. Je souhaite les transférer dans /mnt/sdcard/external_sd/data. Première solution : utiliser un lien symboliqueUne première solution à laquelle j'ai pensé serait de faire un lien symbolique de /mnt/sdcard/Android/data vers /mnt/sdcard/external_sd/data. Mais malheureusement ce n'est pas possible car la partition de la carte externe est en FAT32 et que ce système de fichiers ne gère pas les liens symboliques. Et il n'est pas possible de mettre un autre système de fichier pour la carte externe sous Android. Deuxième solution : créer un point de montageIl s'agit de lier le répertoire interne à celui de la carte externe en utilisant un point de montage avec la commande mount. C'est l'idée qui est proposée sur cette page. 1) Transférer le répertoire des données d'applications sur la carte externeSur votre Android, ouvrez la console Terminal Emulator. Passez en super-utilisateur avec la commande su puis créer le répertoire data dans la carte externe : Il se peut que ce répertoire existe déjà (oui il y des applications intelligentes qui installent leur données dans la carte externe !). Dans ce cas, ne pas tenir compte du message d'erreur et continuer avec ce qui suit. Copiez les données sur la carte externe : Cela peut prendre du temps si il y a beaucoup de données, soyez patient ! Renommer temporairement l'ancien répertoire des données (tout à l'heure on supprimera ce répertoire si tout se passe bien) : 2) Créer le point de montage vers le nouveau répertoire de la carte externeToujours en super-utilisateur sous la console, tapez : Naviguez dans le répertoire monté pour vérifier que tout s'est bien passé : Vous devriez voir toutes les données qui pourtant se trouvent bien dans external_sd. Si c'est bien le cas, vous pouvez supprimer le répertoire de sauvegarde qu'on avait laissé sur la mémoire interne (attention de ne pas vous tromper de répertoire !) : Si vous vérifier l'espace occupé dans la mémoire interne, vous verrez que vous avez gagné tout ce qui était dans le répertoire data. Espace qui a bien entendu été perdu dans la carte externe ! Vous pensez que tout est bon maintenant. Hé bien non... Essayez de redémarrer complètement votre téléphone (pas simplement une mise en veille mais un redémarrage complet), et vous verrez que le montage a disparu ! Ce qui est normal car les points de montage créé à la main par la commande mount ne sont valables que pour la session en cours. Mais il y a une astuce qui permet de lancer la commande de montage au démarrage du système. 3) Recréer le point de montage à chaque démarrage du systèmePour pouvoir recréer le point de montage à chaque redémarrage, il faut utiliser une application qui permet de lancer l'exécution de commandes. C'est justement ce que fait l'application Autostart. Au démarrage, cette application lance les commandes qui sont écrites dans le fichier /data/opt/autostart.sh. Il faut créer le répertoire opt dans /data soit avec votre explorateur de fichiers, soit en ligne de commande : Reste ensuite à remplir le fichier autostart.sh avec la commande de montage. Pour cela, vous pouvez créer un nouveau fichier autostart.sh dans le répertoire /data/opt, puis y saisir la commande de montage comme ceci : Ou si vous préférez tout faire en ligne de commande : cd /data/opt echo "su" > autostart.sh echo "mount -o bind /mnt/sdcard/external_sd/data /mnt/sdcard/Android/data" >> autostart.sh Puis il faut donner tous les droits sur le fichier et le répertoire créé : Et c'est gagné ! Vous pouvez essayer de redémarrer complètement le téléphone et vous verrez dans /mnt/sdcard/Android/data que le répertoire est bien remonté vers celui qui se trouve dans la carte externe. Testez quelques applications pour vérifier que tout va bien. En tout cas avec NavFree et les autres applications que j'ai installé pas de problème ! ![]() Si vous avez des remarques ou des suggestions, je suis preneur. Je me suis peut-être compliqué la vie sur certains points, mais pour le moment je ne connais pas encore bien toutes les astuces Android. |
Ajouter un Commentaire
Tout les contenus de ce site sont publiés selon les termes de la licence Creative Commons by sa. En ajoutant votre commentaire, vous acceptez implicitement sa mise à disposition selon les termes de cette licence.







Commentaires
Je m'excuse d'être complètement hors sujet mais est-il possible de réagir concernant le tuto sur Android du 27 juillet et notamment avoir un peu d'aide sur autostart?
D'avance Merci
Patrick
J'ai déplacé votre commentaire sur le bon sujet. J'avais créé une nouvelle rubrique pour cet article, mais oublié d'activer les commentaires dans cette nouvelle rubrique. Désolé...
Pour autostart sur Android, j'avais trouvé quelques explications ici :
http://fr.androidzoom.com/android_applications/tools/autostart-root_bacu.html
http://android.stackexchange.com/questions/6558/how-can-i-run-a-script-on-boot
J'espère que ça pourra vous être utile. Normalement pour que ça marche, il suffit de mettre les commandes qu'on veut lancer au démarrage du système dans le script /data/opt/autostart.sh
J'ai tenté cette manip sur mon htc desire qui n'a que 256Mo de mémoire interne. En fait maintenant je ne suis pas certain que la manipulation a marché. En effet au redémarrage en regardant par l'intermédiaire de windows (téléphone branché en USB) le répertoire "/mnt/sdcard/Android/data" semble modifié (nouveau fichier). Mais le répertoire "/mnt/sdcard/external_sd/data" semble aussi modifié. Peut être que toutes les applications ne réagissent pas à ce montage.
Pouvez vous cependant me confirmer que dans le fichier .sh il faut copier intégralement les deux lignes y compris la partie près les symboles ">".
D'autre part j'ai été troublé de voir dans le chemin de la mémoire interne qu'il y a une répertoire sdcard.
Pour situer mon niveau je ne connais pas linux mais ai beaucoup pratiqué le DOS.
Les symboles ">" consiste simplement à envoyer le texte affichés par echo dans le fichier. Le premier > créé un fichier vide et le 2ème >> ajoute à la suite dans ce même fichier. Vous pouvez tout aussi bien créer un nouveau fichier et l'éditer avec un éditeur de texte Android pour y mettre ce qui suit :
su
mount -o bind /mnt/sdcard/external_sd/data /mnt/sdcard/Android/data
Le premier su sert à indiquer à Android de prendre les droits root avant d'exécuter la 2ème commande (sinon le mount ne marchera pas).
Dans mon cas ce n'était pas normal car je regardais avec windows téléphone branché en usb et les données n'étaient pas identiques.
Je n'avais pas compris que les deux lignes permettait de remplir directement le fichier autostart.sh. Comme elles n'étaient pas de la même couleur je pensais qu'il fallait créer le fichier chose que j'ai fait et copier les deux lignes intégralement.
Mais c'est corrigé.
Je vais regarder maintenant si cela fonctionne correctement.
Merci
tout doit se faire en su ou seulement une partie?
Je suis troublé par le fait que les données d'applications sont à la base stockées sous /mnt/sdcard/Android/data. Pour moi à partir du moment ou il y avait sdcard dans le chemin c'est que les données étaient physiquement stockées sur la mémoire externe soit la SD
CARD.
Je te rassure, j'ai été troublé moi aussi quand j'ai regardé pour la première fois le système de fichiers du Galaxy Note. En fait il y a déjà une carte mémoire interne de 12Go dans l'appareil et c'est celle-là qui est accessible dans /mnt/sdcard. La carte externe que tu ajoutes toi-même se trouve bien dans /mnt/sdcard/external_sd.
Ça fait bizarre au début, mais après on s'habitue
pour un novice comme moi et bien d'autres je suppose, tous ça ressemble a du chinois et c'est vraiment dommage que tous le monde ne puisse pas en profiter, serait il possible d'avoir un tutos un peut plus compréhensible? parce qu'a ce jour c'est le seul tutos qui existe sur la toile.
merci pour ton travail
Je veux bien essayer
Pourrais-tu me dire précisément quels sont les points du tuto où tu as "coincé" ?
après chaque invite de commande le résultat est no found je desespere
cp -R /mnt/sdcard/Android/data/* /mnt/sdcard/external_sd/data [Enter]
Bizarre que tu obtiennes "no found" à chaque ligne de commande. Est-ce que la commande mkdir a marché ?
Ton appareil mobile est-il un Galaxy Note ? Il se peut que les chemins ne soient pas les même pour un autre appareil. Le répertoire de base n'est pas forcément /mnt/sdcard dans le cas de ton appareil. Il faudrait que tu cherches où se trouvent les répertoire "Android" et "external_data". N'hésites pas à me faire un retour si tu trouves pour que je complète l'article.
Dernière chose : est-ce que tu as bien activé les droits super-utilisateur sur ton appareil ? Le rootage est indispensable pour que les manips que j'ai indiqué puissent marcher.
j'ai fais comme expliquer:en su sa marche et après je tape la lignes de commande mkdir en oubliant pas les espaces et résultat: mkdir failed for (ligne de commande) file e xists.
mon mobile est un galaxy s i9000 rooter avec
Cyanogen Mod 9.
Merci bien pour le tuto, j'ai modifier par contre un détail car il y a des applications qui reste a la racine de la carte. carte gps par exemple
su
mount -o bind /mnt/sdcard/external_sd//mnt/sdcard/
Telephone chinois parfais 32 go enfin ;)
je suis sous samsung galaxy ace et je suis pourtant bien passer en super utilisateur
merci d'avance pour votre reponse, si vous avez une solution
Attention il manque un / avant mnt. Ça change tout et c'est peut-être de là que vient le problème. Sinon il faut vérifier dans quel répertoire est montée la mémoire externe dans la Galaxy Ace. Ce n'est peut-être pas "sdcard/external_sd" comme pour le Galaxy Note. Il faut adapter la commande avec le bon répertoire du Ace. Pour trouver quel est le répertoire il suffit d'aller sur la carte externe avec un explorateur de fichiers, le chemin est en général indiqué en haut.
S’abonner au flux RSS pour les commentaires de cet article.