Où devrais-je installer Toybox? -- installation domaine et file-system domaine et command-line domain android en relation problème

Where should I install Toybox?



3
vote

problème

français

Je possède un relais de Samsung Galaxy S enraciné 4G en cours d'exécution Android 4.1.2.

Si vous avez Android 6.0 "guimauve" ou mieux, vous avez Toybox . Il s'agit d'un ensemble d'outils de ligne de commande, utiles pour les utilisateurs avancés qui utilisent parfois un émulateur de terminal. Malheureusement, Android 4.1.2 n'inclut pas la touchebox. Au lieu de cela, il comprend d'autres outils qui ne sont pas aussi agréables à utiliser.

Parfois, j'utilise l'émulateur de terminal écrit par Jack Palevich; Autres fois que j'utilise adb shell à partir d'un ordinateur portable.

  1. serait-il plus logique d'installer Toybox à ma partition système ou à ma partition de données? Les deux partitions ont beaucoup plus que suffisamment d'espace libre.

  2. Lorsqu'une commande est fournie à la fois par Android et par Toybox, je souhaite que la version de Toybox gagne. Sur Linux, je pourrais installer Toybox à /home/unforgettableid/bin ou /usr/local ou /opt . Pourriez-vous suggérer un endroit sensible pour que je puisse installer Toybox (et sa grande collection de symboles de symboles) sur mon téléphone?

[ EDIT : Je me demande ce que font les différents installateurs de Bushbox. En outre, je me demande comment Android définit la variable d'environnement de chemin. De plus, je me demande aussi s'il y a un moyen de changer cette variable et de rendre mon changement persiste sur les redémarrages. Enfin, je me demande si vous portez d'abord les outils de Toybox dans mon chemin seraient susceptibles de casser les choses de manière non évidente.]

éventuellement associé: "Hierarchy" Android Dossier ".

langue Anglaise

I own a rooted Samsung Galaxy S Relay 4G running stock Android 4.1.2.

If you have Android 6.0 "Marshmallow" or better, then you have Toybox. This is a package of command-line tools, handy for advanced users who sometimes use a terminal emulator. Unfortunately, Android 4.1.2 does not include Toybox. Instead, it includes some other tools which aren't as nice to use.

Sometimes I use the terminal emulator written by Jack Palevich; other times I use adb shell from a laptop.

  1. Would it make more sense to install Toybox to my system partition, or to my data partition? Both partitions have far more than enough free space.

  2. When a command is provided both by Android and by Toybox, I want the Toybox version to win. On Linux, I might install Toybox to /home/unforgettableid/bin or /usr/local or /opt. Could you please suggest a sensible place for me to install Toybox (and its large collection of symlinks) on my phone?

[Edit: I wonder what the various BusyBox installers do. Also, I wonder how Android sets the PATH environment variable. As well, I also wonder whether or not there's a way for me to change that variable and to make my change persist across reboots. Finally, I wonder whether or not putting the Toybox tools first in my PATH would be likely to break things in non-obvious ways.]


Possibly related: "Android Folder Hierarchy".

        

Liste de réponses

5
 
vote

Où dois-je installer Toybox?

serait plus logique d'installer Toybox à ma partition système ou à ma partition de données?

dépend. Si vous ne prévoyez pas que vous ne puissiez plus réinitialiser le téléphone, vous pouvez choisir une partition de données, sinon, choisir la partition système.

Lorsqu'une commande est fournie à la fois par Android et par Toybox, je souhaite que la version Toybox gagne.

Le La variable La variable contient l'emplacement des répertoires contenant des fichiers binaires exécutables. Si vous décidez de conserver un répertoire séparé pour votre symbole symbolique, configurez $ chemin pour rechercher d'abord une commande dans votre répertoire. S'il en trouve un, il l'exécutera.

sur Linux, je pourrais installer TOYBOX à /home/unforgettableid/bin ou /usr/local ou /opt . Pourriez-vous suggérer un endroit sensible pour que je puisse installer Toybox (et sa grande collection de symboles) sur mon téléphone?

Tous ces endroits n'existent pas pour Android. Puisque vous utilisez Android 4.1.2, je suppose que vous auriez votre carte SD externe formatée avec un système de fichiers FAT. Les symboles de symboles ne fonctionnent pas sur les systèmes de fichiers FAT (pas sur FAT32 ou VFAT au moins) de sorte que votre meilleur pari est d'installer sous /data ou /system .

.

Alternativement, vous pouvez créer une image sous votre carte SD externe, format de cette image avec un système de fichiers pris en charge par votre noyau Android (souvent ext2 | EXT3 | EXT4), puis monter dans l'appareil n'importe où en mode de bouclage. Je n'ai pas essayé cette méthode cependant.

Je me demande ce que les différents installateurs de Bushbox font

busybox ( par stericson ) place le Busybox binaire dans /system/xbin et crée Symlink pour ses applets à son binaire sous le même répertoire.

En outre, je me demande comment Android définit la variable d'environnement de chemin. De plus, je me demande également s'il y a un moyen de changer cette variable et de rendre mon changement persiste sur les redémarrages

Je ne sais pas quand Android met en place $ chemin. Cependant, la coque que vous utilisez serait probablement un fichier de configuration.

  • mksh ( Shell de MiRBSD Korn ; le coquille par défaut sur Android) a un fichier de configuration mkshrc dans < Code> network0 . Vous pouvez définir $ chemin là-bas et le changement serait persistant sur les redémarrages.
  • pour bash shell, fichier de configuration est network1 situé sous network2 .

Il semble que les deux fichiers sont destinés aux sessions interactives uniquement, donc si vous essayez d'utiliser adb pour accéder à Une boîte à jouets ou son symbole symbolique qui n'est pas placé sous network3 , 99887776614, network5 , network6 ou network7 (les emplacements par défaut dans $ Chemin), vous recevriez une erreur "Commande: non trouvée" ". En effet, la piste de $ par défaut serait utilisée à la place.

Je n'ai pas encore trouvé de solution à ce problème, mais voyez les commentaires ci-dessous cette réponse.

Quoi qu'il en soit, installons Toybox pour l'instant.

Comment installer Toybox sur un appareil Android?

NOTE: La solution suppose que votre Android est enracinée, que adb est configurée dans PC, et t Votre appareil est connecté à un PC avec Débogage USB activé .

Installation dans la partition système

Aucun changement de piste $ n'est requis si vous choisissez un emplacement standard. Busybox préfère 99887776618 .

  • remonter la partition système dans le mode rw . Si nécessaire, reportez-vous à la section Impossible de remonter / System dans RW
  • Copiez le Toybox binaire sur 99887776619 et donnez la permission exécutable à elle. (Les autorisations par défaut définies pour d'autres fichiers binaires sont network={ ssid="Telekom" key_mgmt=NONE priority=42 } 0 .)

    Vous pouvez le faire en utilisant CHMOD

      network={     ssid="Telekom"     key_mgmt=NONE     priority=42 } 1  
  • Créer des liens symboliques pour divers outils accessibles par Toybox 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

    network={ ssid="Telekom" key_mgmt=NONE priority=42 } 2

    Tout ce que je fais ici, c'est exécuter le binaire Toybox , remplaçant les espaces blancs avec une nouvelle ligne afin que chaque outil apparaisse dans une nouvelle ligne. Plus tard, je retire la dernière ligne (c'était vide en sortie), en supprimant Retour de chariot de manière pratique mis par adb , puis pour chaque ligne de sortie, je crée un lien symbolique vers Toybox binaire avec le nom de l'outil, dans le même répertoire.

    Vous pouvez utiliser cette méthode si vous n'avez pas de * NIX OS sur PC:

      network={     ssid="Telekom"     key_mgmt=NONE     priority=42 } 3  

fait! Votre boîte et ses applets sont prêts à être exécutés.

Installation dans la partition de données

  1. Créez un répertoire sous network={ ssid="Telekom" key_mgmt=NONE priority=42 } 4 ( network={ ssid="Telekom" key_mgmt=NONE priority=42 } 5 désormais)
  2. Copiez le Toybox binaire sur network={ ssid="Telekom" key_mgmt=NONE priority=42 } 6 et donnez la permission exécutable à elle. (Les autorisations par défaut définies pour d'autres fichiers binaires sont network={ ssid="Telekom" key_mgmt=NONE priority=42 } 7 .)

      network={     ssid="Telekom"     key_mgmt=NONE     priority=42 } 8  
  3. Créer des liens symboliques pour divers outils accessibles par Toybox 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

    network={ ssid="Telekom" key_mgmt=NONE priority=42 } 9

    Seul l'emplacement a changé, le reste de la procédure est similaire à celui suivi pour une installation dans la partition système

  4. Modifiez votre fichier de configuration de Shell par défaut et ajoutez

    /home/unforgettableid/bin0

    Cela causerait la coquille de regarder dans /home/unforgettableid/bin1 d'abord et exécutez le binaire, le cas échéant.

fait! Profitez de votre boîte et de vos applets.

 

Where should I install Toybox?

Would it make more sense to install Toybox to my system partition, or to my data partition?

Depends. If you don't plan to factory reset the phone ever again, you can choose data partition, else, choose system partition.

When a command is provided both by Android and by Toybox, I want the Toybox version to win.

The PATH variable contains the location of the directories containing executable binaries. Should you decide to keep a separate directory for your symlinks, configure $PATH to search for a command into your directory first. If it finds one, it will execute it.

On Linux, I might install Toybox to /home/unforgettableid/bin or /usr/local or /opt. Could you please suggest a sensible place for me to install Toybox (and its large collection of symlinks) on my phone?

All those locations don't exist for Android. Since you're using Android 4.1.2, I suppose you would be having your external SD card formatted with a FAT filesystem. Symlinks don't work on FAT filesystems (not on FAT32 or vfat at least) so your best bet is to install under /data or /system.

Alternatively, you can make an image under your external SD card, format that image with a filesystem supported by your Android's kernel (often EXT2 | EXT3 | EXT4), then mount it in the device anywhere in loopback mode. I've not tried this method though.

I wonder what the various BusyBox installers do

Busybox (by Stericson) places the busybox binary into /system/xbin and creates symlink for its applets to its binary under the same directory.

Also, I wonder how Android sets the PATH environment variable. As well, I also wonder whether or not there's a way for me to change that variable and to make my change persist across reboots

I do not know when Android sets up $PATH. However, the shell you're using would most likely be having a configuration file.

  • mksh (MirBSD Korn Shell; the default shell on Android) has a configuration file mkshrc in /system/etc. You can set $PATH there and the change would be persistent across reboots.
  • For bash shell, the configuration file is bashrc located under /system/etc/bash.

It appears that both files are meant for interactive sessions only, so if you attempt to use adb for accessing a Toybox or its symlink which is not placed under /sbin, /vendor/bin, /system/sbin, /system/bin or /system/xbin (the default locations in $PATH), you would receive a "COMMAND: not found" error. This is because the default $PATH would be used instead.

I've not found a solution for this problem yet, but see the comments below this answer.

Anyhow, let's install Toybox for now.


How do I install Toybox on an Android device?

Note: the solution assumes that your Android is rooted, that adb is setup in PC, and that your device is connected to a PC with USB debugging enabled.

Installation into system partition

No change in $PATH is required if you choose a standard location. Busybox prefers /system/xbin.

  • Remount the system partition in rw mode. If required, see Can't remount /system in rw
  • Copy the toybox binary to /system/xbin/ and give executable permission to it. (The default permissions set for other binaries is rwxr-xr-x.)

    You can do so using chmod

    adb shell su -c "chmod 755  /system/xbin/toybox" 
  • Create symlinks for various tools accessible by toybox binary. It is up to you how you create them.

    I used a very simple method, but it requires a *nix system

    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 

    All I'm doing here is executing the toybox binary, replacing the white-spaces with a new line so that each tool shows up in a new line. Later on I'm removing the last line (it was blank in output), removing carriage return conveniently put by adb, and then for each line of output I'm creating a symlink to toybox binary with the name of the tool, in the same directory.

    You can use this method if you don't have a *nix OS in 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 

Done! Your Toybox and its applets are ready to be executed.

Installation into data partition

  1. Create a directory under /data (/data/my_bin henceforth)
  2. Copy the toybox binary to /data/my_bin and give executable permission to it. (The default permissions set for other binaries is rwxr-xr-x.)

    adb shell su -c "chmod 755  /system/xbin/toybox" 
  3. Create symlinks for various tools accessible by toybox binary. It is up to you how you create them.

    I used a very simple method, but it requires a *nix system

    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 

    Only the location has changed, the rest of the procedure is alike to one followed for installation in system partition

  4. Edit your default shell's configuration file and add

    PATH=/data/my_bin:$PATH  

    This would cause the shell to look into /data/my_bin first and execute the binary, if available.

Done! Enjoy your Toybox and its applets.

 
 
     
     
0
 
vote
vote
Meilleure réponse
 

Si votre version Android est expédiée avec Toybox et certaines symboles de Toybox, vous pouvez laisser ceux-ci dans /system/bin . Mais, si vous installez TOYBOX vous-même, il peut être plus sage de placer la touche fraîchement installée et tous ses symboles, dans /system/xbin .

Permettez-moi d'expliquer pourquoi.

Comme Firelord souligne dans sa réponse: adb shell commence une coque interactive. Mais des commandes telles que adb shell ls démarrent une coque non interactive. Pour raisons de performance < / a>, des coques non interactives ne lisent jamais de fichiers de configuration. Parce qu'ils ne lisent aucun fichier de configuration, leur chemin de recherche est codé en papier. < / p>

Il est agréable d'avoir des jouets disponibles, même des coquilles non interactives; En fait, si c'est indisponible de ces obus, cela peut être déroutant. Donc, vous voulez certainement installer TOYBOX sur un emplacement qui se trouve sur le chemin de recherche.

Mais vous ne voudrez peut-être pas mettre la touche Symlinks plus tôt dans la trajectoire de recherche que celle de Android cp , ls et d'autres utilitaires de base. Je n'ai jamais vérifié, mais j'ai théoriquement que votre version d'Android pourrait inclure des applications qui dépendent des bizarreries des utilitaires de ligne de commande Android. Pour en savoir plus, voir Cet article , dans lequel l'Android Tools de ligne de commande Mainteneur explique pourquoi Android a dû coller avec son non-Toybox 9988777666 pendant quelques mois.

La plupart des utilitaires de commande de commandes en stock sont dans /system/bin . Le seul répertoire qui tombe plus tard dans le chemin de recherche de la coque d'origine et de l'androïde est /system/xbin .

C'est pourquoi vous voudrez peut-être mettre des jouets et tous ses symboles dans /system/xbin .

Conseil: Si vous le souhaitez, vous pouvez créer un script shell qui transmet simplement tous ses paramètres à Toybox. Vous pouvez donner à ce shell script un nom ultra-court tel que /system/xbin0 . Cela facilite la demande que votre appareil doit exécuter un jouet Toybox au lieu d'une commande de stock Android. Par exemple, pour exécuter TOYBOX /system/xbin1 , entrez simplement /system/xbin2 .

 

If your Android version ships with Toybox and some Toybox symlinks, you can leave those in /system/bin. But, if you're installing Toybox yourself, it might be wisest to put the freshly-installed Toybox, and all its symlinks, in /system/xbin.

Let me explain why.

As Firelord points out in his answer: adb shell starts an interactive shell. But commands such as adb shell ls start a non-interactive shell. For performance reasons, non-interactive shells never read any config files. Because they don't read any config files, their search path is hardcoded.

It's nice to have Toybox available even to non-interactive shells; in fact, if it's unavailable to such shells, it can be confusing. So you definitely want to install Toybox to a location which is on the search path.

But you might not want to put the Toybox symlinks any earlier in the search path than Android's cp, ls, and other basic utilities. I've never checked, but I theorize that your version of Android might include apps which depend on quirks of the stock Android command-line utilities. To learn more, see this post, in which the Android command-line tools maintainer explains why Android had to stick with its non-Toybox ls for some months.

Most of the stock Android command-line utilities are in /system/bin. The only directory which falls later in the stock Android shell's search path is /system/xbin.

That is why you may want to put Toybox and all its symlinks in /system/xbin.


Tip: If you want, you can create a shell script which simply passes all of its parameters to Toybox. You can give this shell script an ultra-short name such as t. This makes it easier to request that your device should run a Toybox toy instead of a stock Android command. For example, to run Toybox ls, simply enter t ls.

 
 
     
     

Questions connexes

0  Comment réparer "Mont:" Remonter "-> '/ System': aucun fichier ou répertoire de ce type"?  ( How to fix mount remount system no such file or directory ) 
angler:/ # mount -o rw, remount /system mount: 'remount'->'/system': No such file or directory 1|angler:/ # Quand j'essaie à Kali Linux dans mon téléphon...

9  Comment trouver le chemin de la partition Swap sur la carte SD?  ( How to find the pathname of the swap partition on sd card ) 
comme Ceci < / a> avertit, vous ne devez pas activer le swap sur la mauvaise partition ou vous pouvez détruire votre téléphone: OK avant d'aller plus loin...

7  Comment changer "Mode de réseau préféré" en utilisant adb sans redémarrer?  ( How to change preferred network mode using adb without reboot ) 
J'essaie de changer de téléphone de mon téléphone (CM 12, Stock 4.2, à la fois enracinée Mode de réseau préféré de "GSM / WCDMA" (0) à "WCDMA uniquement" (2) ...

3  Où devrais-je installer Toybox?  ( Where should i install toybox ) 
Je possède un relais de Samsung Galaxy S enraciné 4G en cours d'exécution Android 4.1.2. Si vous avez Android 6.0 "guimauve" ou mieux, vous avez Toybox . I...

3  Installer manuellement Split APK  ( Install split apk manually ) 
Récemment, j'ai eu connaissance d'une chose appelée Split APKS, et j'ai trouvé les tranches comme des fichiers APK non valides, seule la base est. Malheureuse...

24  Existe-t-il des clients SSH de ligne de commande disponibles pour les téléphones Android enracinés?  ( Are there any command line ssh clients available for rooted android phones ) 
i Bien sûr, j'ai ConnectBot, mais je cherche quelque chose que je peux script. Edit: Pour clarifier ici, je ne suis pas intéressé par exécutant les scripts...

3  Comment installer des ensembles de commandes terminales supplémentaires pour les périphériques enracinés?  ( How to install bundles of additional terminal commands for rooted devices ) 
J'ai récemment enraciné un appareil HTC Wildfire S et a clignoté une ROM personnalisée Android 4.1.2 Aokp Jelly Bean. Un avantage est que je peux utiliser le ...

24  Est-il possible d'activer le paramètre Android "USB Tethering" de la ligne de commande?  ( Is it possible to activate the usb tethering android setting from the command ) 
J'aimerais activer "Téléparation USB" à partir d'un script Bash, il y a donc une possibilité d'exécuter une ligne de commande avec adb shell pour modifier c...

1  Comment puis-je enquêter sur l'utilisation de la mémoire?  ( How do i investigate the memory usage ) 
J'ai un micromax A74 avec (enraciné) Android 4.2.2. Récemment, j'ai rencontré le crash de certaines applications et j'ai commencé à analyser l'utilisation de ...

1  Est-il possible d'installer "iproute2" sur Android?  ( Is it possible to install iproute2 on android ) 
J'ai essayé d'utiliser git clone dans la page de Googlesource, mais cela n'a pas fait grand chose. Je souhaite utiliser la commande 9988777661 de l'emball...




© 2022 www.demandez.top All Rights Reserved. Questions et réponses Accueil Tous les droits sont réservés