¿Dónde debo instalar ToyBox? -- installation campo con file-system campo con command-line camp android Relacionados El problema

Where should I install Toybox?


3
vote

problema

Español

Soy dueño de una raíz Samsung Galaxy S Relay 4G Running Stock Android 4.1.2.

Si tiene Android 6.0 "Marshmallow" o mejor, entonces tiene Toybox . Este es un paquete de herramientas de línea de comandos, prácticas para usuarios avanzados que a veces usan un emulador de terminal. Desafortunadamente, Android 4.1.2 no incluye TOYBOX. En su lugar, incluye algunas otras herramientas que no son tan agradables de usar.

A veces uso el emulador terminal escrito por Jack Palevich; Otras veces uso adb shell de una computadora portátil.

  1. ¿tendría más sentido para instalar TOYBOX en la partición de mi sistema o a mi partición de datos? Ambas particiones tienen mucho más que suficiente espacio libre.

  2. Cuando se proporciona un comando tanto por Android como por Toybox, quiero que la versión de ToyBox gane. En Linux, podría instalar ToyBox a /home/unforgettableid/bin o abcdefhijklmnabcdefghijklmn2 o abcdefhijklmnabcdefghijklmn3 . ¿Podría sugerir un lugar sensible para instalar ToyBox (y su gran colección de enlaces simbólicos) en mi teléfono?

[ Editar : Me pregunto qué hacen los distintos instaladores de la caja ocupada. Además, me pregunto cómo Android establece la variable de entorno de ruta. Además, también me pregunto si existe o no una manera de cambiar esa variable y hacer que mi cambio persista entre los reinicios. Finalmente, me pregunto si es probable que las herramientas de Toybox primero en mi camino rompan las cosas de manera no obvia.]


Posiblemente relacionado: "Jerarquía de la carpeta Android" .

Original en ingles

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".

        

Lista de respuestas

5
 
vote

¿Dónde debo instalar ToyBox?

¿Gardaría más sentido para instalar ToyBox en la partición de mi sistema, oa la partición de mi información?

depende. Si no planea restablecer el teléfono de nuevo, puede elegir la partición de datos, de lo contrario, elija la partición del sistema.

Cuando se proporciona un comando tanto por Android como por Toybox, quiero que la versión de ToyBox gane.

The ruta La variable contiene la ubicación de los directorios que contienen binarios ejecutables. Si decide mantener un directorio separado para sus enlaces simbólicos, configure $ Ruta para buscar un comando en su directorio primero. Si encuentra uno, lo ejecutará.

En Linux, podría instalar ToyBox a /home/unforgettableid/bin o abcdefhijklmnabcdefghijklmn5 o abcdefhijklmnabcdefhijklmn6 . ¿Podría sugerir un lugar sensible para instalar ToyBox (y su gran colección de Symlinks) en mi teléfono?

Todas esas ubicaciones no existen para Android. Como está utilizando Android 4.1.2, supongo que usted tendrá que tener su tarjeta SD externa formateada con un sistema de archivos FAT. Los SymLinks no funcionan en los sistemas de archivos de grasa (no en FAT32 o VFAT al menos), por lo menos, su mejor opción es instalar en /data o /system .

Alternativamente, puede hacer una imagen debajo de su tarjeta SD externa, formatea esa imagen con un sistema de archivos compatible con el kernel de su Android (a menudo ext2 | ext3 | ext4), luego monte en el dispositivo en el modo de bucle invertido. Aunque no he probado este método.

Me pregunto cuáles hacen los distintos instaladores de busybox

bus busybox ( por stericson ) coloca los bus busybox binario en /system/xbin y crea Symlink para Sus applets a su binario bajo el mismo directorio.

Además, me pregunto cómo Android establece la variable de entorno de ruta. Además, también me pregunto si existe o no una manera de cambiar esa variable y hacer que mi cambio persista entre los reinicios

No sé cuándo se establece Android $ ruta. Sin embargo, la concha que está utilizando más probablemente estaría teniendo un archivo de configuración.

  • mksh ( MIRBSD Korn Shell ; el Predeterminado Shell en Android) tiene un archivo de configuración data/misc/wifi/wpa_supplicant.conf0 en < Código> ABCDEFGHIJKLMNABCDEFGHIJKLMN11 . Puede establecer $ ruta allí y el cambio sería persistente a través de reinicios.
  • para bash shell, el archivo de configuración es data/misc/wifi/wpa_supplicant.conf2 ubicado en data/misc/wifi/wpa_supplicant.conf3 .

Parece que ambos archivos son significaba sesiones interactivas solo, así que si intenta usar ADB para acceder un Toybox o su enlace simbólico que no se coloca bajo data/misc/wifi/wpa_supplicant.conf4 , data/misc/wifi/wpa_supplicant.conf5 , data/misc/wifi/wpa_supplicant.conf6 , data/misc/wifi/wpa_supplicant.conf7 o data/misc/wifi/wpa_supplicant.conf8 (las ubicaciones predeterminadas en $ ruta), recibiría un error "Comando: No encontrado". Esto se debe a que se utilizaría la ruta de $ predeterminada.

Todavía no he encontrado una solución para este problema, pero vea los comentarios debajo de esta respuesta.

de todos modos, vamos a instalar ToyBox por ahora.


¿Cómo instalo ToyBox en un dispositivo Android?

Nota: La solución asume que su Android está enraizado, que ADB se configura en la PC, y que su dispositivo está conectado a una PC con Depuración USB habilitada .

Instalación en la partición del sistema

No se requiere ningún cambio en la ruta de $ si elige una ubicación estándar. Busybox prefiere data/misc/wifi/wpa_supplicant.conf9 .

  • remount la partición del sistema en modo rw . Si es necesario, consulte No se puede volver a montar / Sistema en RW
  • policía El TOYBOX Binario a ABCDEFGHIJKLMNABCDEFGHIJKLMN20 y dé permiso ejecutable. (Los permisos predeterminados establecidos para otros binarios es network1 .)

    Puede hacerlo usando chmod

      network2  
  • Crear simlinks para varias herramientas accesibles por ToyBox binario. Depende de ti cómo los creas.

    Usé un método muy simple, pero requiere un sistema * nix

      network3  

    Todo lo que estoy haciendo aquí está ejecutando el binario Toybox , reemplazando los espacios blancos con una nueva línea para que cada herramienta se presente en una nueva línea. Más tarde estoy eliminando la última línea (estaba en blanco en la salida), eliminando Volver de vuelta cómodamente PUT BY BY BY ADB , y luego, para cada línea de salida, estoy creando un enlace simbólico a ToyBox binario con el nombre de la herramienta, en el mismo directorio.

    Puede usar este método si no tiene un SO * NIX en PC:

      network4  

hecho! Su caja de juguete y sus applets están listos para ser ejecutados.

Instalación en la partición de datos

  1. Crear un directorio en network5 ( network6 de aquí en adelante)
  2. Copie la TOYBOX Binario a ABCDEFGHIJKLMNABCDEFGHIJKLMN27 y dé permiso ejecutable. (Los permisos predeterminados establecidos para otros binarios es network8 .)

      ABCDEFGHIJKLMNABCDEFGHIJKLMN29   
  3. Crear simlinks para varias herramientas accesibles por ToyBox binario. Depende de ti cómo los creas.

    Usé un método muy simple, pero requiere un sistema * nix

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

    Solo la ubicación ha cambiado, el resto del procedimiento es igual a uno, seguido para la instalación en la partición del sistema

  4. Edite su archivo de configuración de Shell predeterminado y agregue

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

    Esto hará que la cáscara se vea en network={ ssid="Telekom" key_mgmt=NONE priority=42 } 2 primero y ejecuta el binario, si está disponible.

hecho! Disfruta de tu caja de juguete y sus 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
La mejor respuesta
 

Si su versión de Android se envía con ToyBox y algunos enlaces de juego de ToyBox, puede dejar aquellos en ABCDEFGHIJKLMNABCDEFGHIJKLMN0 . Pero, si está instalando ToyBox usted mismo, podría ser más inteligente colocar la caja de juguete recién instalada, y todos sus enlaces simbólicos, en /system/xbin .

Déjame explicar por qué.

Como señala Firelord en su respuesta: ABCDEFGHIJKLMNABCDEFGHIJKLMN2 Inicia una cubierta interactiva. Pero los comandos como adb shell ls inician un shell no interactivo. Para RAZONES DE RENDIMIENTO < / a>, las conchas no interactivas nunca leen ningún archivo de configuración. Debido a que no leen ningún archivo de configuración, su la ruta de búsqueda es hardcodida. < / p>

Es bueno tener una caja de juguete disponible incluso a conchas no interactivas; De hecho, si no está disponible para tales conchas, puede ser confuso. Por lo tanto, definitivamente desea instalar ToyBox a una ubicación que se encuentra en la ruta de búsqueda.

Pero es posible que no desee poner los SymLinks de ToyBox antes en la ruta de búsqueda que el ABCDEFGHIJKLMNABCDEFGHIJKLMN4 , ABCDEFGHIJKLMNABCDEFGHIJKLMN5 , y otras utilidades básicas. Nunca he comprobado, pero te gusta que su versión de Android pueda incluir aplicaciones que dependen de las peculiaridades de las utilidades de la línea de comandos de Android. Para obtener más información, consulte este post , en el que Android Mantenimiento de herramientas de línea de comandos explica por qué Android tuvo que seguir con su ABCDEFGHIJKLMNABCDEFGHIJKLMN6 durante algunos meses.

La mayoría de las utilidades de la línea de comandos de Android Stock están en ABCDEFGHIJKLMNABCDEFGHIJKLMN7 . El único directorio que cae más adelante en la ruta de búsqueda de Android Shell de Stock es ABCDEFGHIJKLMNABCDEFGHIJKLMN8 .

Es por eso que es posible que desee poner a ToyBox y todos sus enlaces simbólicos en /system/xbin .


consejo: Si lo desea, puede crear un script de shell que simplemente pase todos sus parámetros a ToyBox. Puede dar a este script de shell un nombre ultra corto, como /system/xbin0 . Esto hace que sea más fácil solicitar que su dispositivo debe ejecutar un juguete de ToyBox en lugar de un comando de Android de valores. Por ejemplo, para ejecutar TOYBOX ABCDEFGHIJKLMNABCDEFGHIJKLMN11 , simplemente ingrese /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.

 
 
     
     

Relacionados problema

24  ¿Hay algún cliente de línea de comando SSH disponibles para teléfonos Android enraados?  ( Are there any command line ssh clients available for rooted android phones ) 
Por supuesto, tengo connectBot, pero estoy buscando algo que pueda script. Editar: Para aclarar aquí, no estoy interesado en corriendo scripts de un termi...

3  ¿Cómo instalar paquetes de comandos de terminal adicionales para dispositivos rooted?  ( How to install bundles of additional terminal commands for rooted devices ) 
He rooteado un dispositivo HTC Wildfire S recientemente y mostró un Android 4.1.2 Aokp Jelly Bean Custom ROM. Un beneficio es que puedo usar el terminal ahora...

9  ¿Cómo encontrar la ruta de la partición de intercambio en la tarjeta SD?  ( How to find the pathname of the swap partition on sd card ) 
como esto < / a> advierte, no debe habilitar el swap en la partición incorrecta o puede destruir su teléfono: OK Antes de que vayamos más lejos! Los teléf...

1  ¿Es posible instalar "iProute2" en Android?  ( Is it possible to install iproute2 on android ) 
Intenté usar git clone en la página de Googlesource, pero no hizo mucho. Quiero usar el comando ss desde el paquete, pero no sé cómo instalarlo. Mi teléfo...

3  Instale Split APK manualmente  ( Install split apk manually ) 
Recientemente, tengo que saber una cosa llamada Split Apks, y encontré las rodajas como archivos APK no válidos, solo la base es. Desafortunadamente, esto sig...

7  ¿Cómo cambiar el "Modo de red preferido" usando ADB sin reinicio?  ( How to change preferred network mode using adb without reboot ) 
Estoy tratando de cambiar el modo de red preferido de mi teléfono (cm 12, stock 4.2, ambos enraizado) de "GSM / WCDMA" (0) a "solo WCDMA" (2) y viceversa (pue...

1  ¿Cómo investigo el uso de la memoria?  ( How do i investigate the memory usage ) 
Tengo un micromax A74 con (arraado) Android 4.2.2. Recientemente me he enfrentado al estrellamiento de alguna aplicación y he comenzado a analizar el uso de R...

3  ¿Dónde debo instalar ToyBox?  ( Where should i install toybox ) 
Soy dueño de una raíz Samsung Galaxy S Relay 4G Running Stock Android 4.1.2. Si tiene Android 6.0 "Marshmallow" o mejor, entonces tiene Toybox . Este es un...

0  Cómo corregir "Monte: 'Remount' -> '/ SISTEMA': ¡No hay dicho archivo o directorio"?  ( 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:/ # Cuando lo intento en Kali Linux en mi teléfon...

24  ¿Es posible activar la configuración de Android "Anexo USB" desde la línea de comandos?  ( Is it possible to activate the usb tethering android setting from the command ) 
Me gustaría activar "Anexo USB" desde dentro de un script de bash, por lo que hay alguna posibilidad de ejecutar una línea de comandos con adb shell para ca...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos