Où dois-je installer Toybox ?
Serait-il plus logique d'installer Toybox sur ma partition système, ou sur ma partition de données ?
Ça dépend. Si vous ne prévoyez pas de réinitialiser le téléphone, vous pouvez choisir la partition de données, sinon, choisissez la partition système.
Quand une commande est fournie à la fois par Android et par Toybox, je veux que la version Toybox gagne.
En PATH contient l'emplacement des répertoires contenant les binaires exécutables. Si vous décidez de conserver un répertoire séparé pour vos liens symboliques, configurez $PATH pour qu'il recherche d'abord une commande dans votre répertoire. S'il en trouve une, il l'exécutera.
Sous Linux, je pourrais installer Toybox pour /home/unforgettableid/bin
o /usr/local
o /opt
. Pourriez-vous me suggérer un endroit raisonnable pour installer Toybox (et sa grande collection de liens symboliques) sur mon téléphone ?
Tous ces emplacements n'existent pas pour Android. Puisque vous utilisez Android 4.1.2, je suppose que votre carte SD externe est formatée avec un système de fichiers FAT. Les liens Symlinks ne fonctionnent pas sur les systèmes de fichiers FAT (pas sur FAT32 ou vfat en tout cas), donc votre meilleure chance est d'installer sous /data
o /system
.
Alternativement, vous pouvez faire une image sous votre carte SD externe, formater cette image avec un système de fichiers supporté par le noyau de votre Android (souvent EXT2 | EXT3 | EXT4), puis la monter dans l'appareil n'importe où en mode loopback. Je n'ai pas essayé cette méthode cependant.
Je me demande ce que font les différents installateurs de BusyBox.
Busybox ( par Stericson ) place le busybox binaire en /system/xbin
et crée lien symbolique pour ses applets à son binaire sous le même répertoire.
De plus, je me demande comment Android définit la variable d'environnement PATH. Je me demande également s'il existe ou non un moyen de modifier cette variable et de faire en sorte que cette modification persiste lors des redémarrages.
Je ne sais pas quand Android configure $PATH. Cependant, le shell que vous utilisez a probablement un fichier de configuration.
-
mksh ( MirBSD Korn Shell ; le shell par défaut sur Android) possède un fichier de configuration
mkshrc
において /system/etc
. Vous pouvez définir $PATH à cet endroit et le changement sera persistant lors des redémarrages.
- Pour bash le fichier de configuration est
bashrc
situé sous /system/etc/bash
.
Il apparaît que les deux fichiers sont destiné aux sessions interactives seulement, donc si vous essayez d'utiliser adb pour accéder à une Toybox ou à son lien symbolique qui n'est pas placé sous le nom de /sbin
, /vendor/bin
, /system/sbin
, /system/bin
o /system/xbin
(les emplacements par défaut dans $PATH), vous recevriez une erreur "COMMAND : not found". Cela est dû au fait que le $PATH par défaut serait utilisé à la place.
Je n'ai pas encore trouvé de solution à ce problème, mais voyez les commentaires sous cette réponse.
Quoi qu'il en soit, installons Toybox pour le moment.
Comment installer Toybox sur un appareil Android ?
Note : la solution suppose que votre Android est enraciné, que adb est configuré dans PC, et que votre appareil est connecté à un PC avec Débogage USB activé .
Installation dans la partition du système
Aucune modification de $PATH n'est nécessaire si vous choisissez un emplacement standard. Busybox préfère /system/xbin
.
-
Remonter la partition système dans rw mode. Si nécessaire, voir Impossible de remonter /system en rw
-
Copiez le coffre à jouets binaire à /system/xbin/
et lui donner la permission d'être exécuté. (Les permissions par défaut pour les autres binaires sont les suivantes rwxr-xr-x
.)
Vous pouvez le faire en utilisant chmod
adb shell su -c "chmod 755 /system/xbin/toybox"
-
Créer des liens symboliques pour divers outils accessibles par coffre à jouets binaire. C'est à vous de décider comment vous les créez.
J'ai utilisé une méthode très simple, mais elle nécessite un système *nix
adb shell toybox | sed 's/\ /\n/g' | head -n -1 | tr -d '\r' | while read line; do adb shell su -c 'ln -sf /system/xbin/toybox "/system/xbin/$line"'; done
Tout ce que je fais ici, c'est d'exécuter l'opération coffre à jouets binaire, en remplaçant les espaces blancs par une nouvelle ligne pour que chaque outil apparaisse sur une nouvelle ligne. Plus tard, j'enlève la dernière ligne (elle était vide en sortie), j'enlève retour chariot pratique mis par adb, et ensuite pour chaque ligne de sortie je crée un lien symbolique vers coffre à jouets binaire portant le nom de l'outil, dans le même répertoire.
Vous pouvez Utilisez cette méthode si vous n'avez pas de système d'exploitation *nix sur votre PC :
adb shell
su
toybox | toybox sed 's/\ /\n/g'| toybox sed '$d'| while read line; do toybox ln -sf /system/xbin/toybox /system/xbin/$line; done
C'est fait ! Votre Toybox et ses applets sont prêts à être exécutés.
Installation dans la partition de données
-
Créez un répertoire sous /data
( /data/my_bin
dorénavant)
-
Copiez le coffre à jouets binaire à /data/my_bin
et lui donner la permission d'être exécuté. (Les permissions par défaut pour les autres binaires sont les suivantes rwxr-xr-x
.)
adb shell su -c "chmod 755 /system/xbin/toybox"
-
Créer des liens symboliques pour divers outils accessibles par coffre à jouets binaire. C'est à vous de décider comment vous les créez.
J'ai utilisé une méthode très simple, mais elle nécessite un système *nix
adb shell su -c "/data/my_bin/toybox" | sed 's/\ /\n/g' | head -n -1| tr -d '\r'| while read line; do adb shell su -c "ln -sf /data/my_bin/toybox '/data/my_bin/$line'"; done
Seul l'emplacement a changé, le reste de la procédure est similaire à celle suivie pour l'installation dans la partition système.
-
Modifiez le fichier de configuration de votre shell par défaut et ajoutez
PATH=/data/my_bin:$PATH
Ceci amènerait le shell à regarder dans /data/my_bin
d'abord et exécuter le binaire, s'il est disponible.
C'est fait ! Profitez de votre Toybox et de ses applets.