¿Dónde debo instalar Toybox?
¿Tendría más sentido instalar Toybox en mi partición de sistema, o en mi partición de datos?
Depende. Si usted no planea restablecer el teléfono de fábrica nunca más, puede elegir la partición de datos, de lo contrario, elija la partición del sistema.
Cuando un comando es proporcionado tanto por Android como por Toybox, quiero que gane la versión de Toybox.
En SENDERO contiene la ubicación de los directorios que contienen los binarios ejecutables. Si decide mantener un directorio separado para sus enlaces simbólicos, configure $PATH para que busque primero un comando en su directorio. Si encuentra uno, lo ejecutará.
En Linux, podría instalar Toybox para /home/unforgettableid/bin
o /usr/local
o /opt
. ¿Podría sugerirme un lugar adecuado para instalar Toybox (y su gran colección de enlaces simbólicos) en mi teléfono?
Todas esas ubicaciones no existen para Android. Dado que estás usando Android 4.1.2, supongo que tendrías la tarjeta SD externa formateada con un sistema de archivos FAT. Symlinks no funciona en sistemas de archivos FAT (no en FAT32 o vfat al menos) por lo que su mejor apuesta es instalar bajo /data
o /system
.
Alternativamente, puedes hacer una imagen bajo tu tarjeta SD externa, formatear esa imagen con un sistema de archivos soportado por el kernel de tu Android (a menudo EXT2 | EXT3 | EXT4), y luego montarla en el dispositivo en cualquier lugar en modo loopback. No he probado este método sin embargo.
Me pregunto qué hacen los distintos instaladores de BusyBox
Busybox ( por Stericson ) coloca el busybox binario en /system/xbin
y crea enlace simbólico para sus applets a su binario en el mismo directorio.
Además, me pregunto cómo establece Android la variable de entorno PATH. Además, también me pregunto si hay o no una manera de cambiar esa variable y hacer que mi cambio persista a través de reinicios.
No sé cuándo configura Android $PATH. Sin embargo, lo más probable es que el shell que estás usando tenga un archivo de configuración.
- mksh ( MirBSD Korn Shell ; el shell por defecto en Android) tiene un archivo de configuración
mkshrc
en /system/etc
. Puede establecer $PATH allí y el cambio sería persistente a través de reinicios.
- Para bash el archivo de configuración es
bashrc
situado bajo /system/etc/bash
.
Parece que ambos archivos son pensado para sesiones interactivas por lo que si intenta utilizar adb para acceder a un Toybox o a su enlace simbólico que no esté ubicado en /sbin
, /vendor/bin
, /system/sbin
, /system/bin
o /system/xbin
(las ubicaciones por defecto en $PATH), recibiría un error "COMMAND: not found". Esto se debe a que se utilizaría el $PATH por defecto en su lugar.
Aún no he encontrado una solución para este problema, pero consulta los comentarios que aparecen 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 tu Android está rooteado, que adb está configurado en PC, y que su dispositivo está conectado a un PC con Depuración USB activada .
Instalación en la partición del sistema
No es necesario cambiar $PATH si elige una ubicación estándar. Busybox prefiere /system/xbin
.
-
Vuelva a montar la partición del sistema en rw modo. En caso necesario, véase No se puede volver a montar /system en rw
-
Copie el caja de juguetes binario a /system/xbin/
y darle permiso de ejecución. (Los permisos por defecto para otros binarios son rwxr-xr-x
.)
Puede hacerlo utilizando chmod
adb shell su -c "chmod 755 /system/xbin/toybox"
-
Crear enlaces simbólicos para varias herramientas accesibles mediante caja de juguetes binario. Tú decides cómo crearlos.
He utilizado un método muy sencillo, pero requiere un sistema *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
Todo lo que estoy haciendo aquí es ejecutar el comando caja de juguetes binario, sustituyendo los espacios en blanco por una nueva línea para que cada herramienta aparezca en una nueva línea. Más tarde estoy eliminando la última línea (estaba en blanco en la salida), eliminando retorno de carro convenientemente puesto por adb, y luego para cada línea de salida estoy creando un enlace simbólico a caja de juguetes binario con el nombre de la herramienta, en el mismo directorio.
Puede utiliza este método si no tienes un sistema operativo *nix en el 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
Hecho. Tu Toybox y sus applets están listos para ser ejecutados.
Instalación en la partición de datos
-
Cree un directorio en /data
( /data/my_bin
en adelante)
-
Copie el caja de juguetes binario a /data/my_bin
y darle permiso de ejecución. (Los permisos por defecto para otros binarios son rwxr-xr-x
.)
adb shell su -c "chmod 755 /system/xbin/toybox"
-
Crear enlaces simbólicos para varias herramientas accesibles mediante caja de juguetes binario. Tú decides cómo crearlos.
He utilizado un método muy sencillo, pero requiere un sistema *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
Sólo ha cambiado la ubicación, el resto del procedimiento es igual al que se sigue para la instalación en la partición del sistema
-
Edita el archivo de configuración de tu shell por defecto y añade
PATH=/data/my_bin:$PATH
Esto haría que el shell buscara en /data/my_bin
primero y ejecutar el binario, si está disponible.
Hecho Disfruta de tu Toybox y sus applets.