
Iniciado por
jesushs60
salvo que los comandos que empezaban por cp les he tenido que añadir delante lo del busybox cp porque si no, daban error.
A ver, vamos a explicar esto bien, para que lo entendáis todos y no andemos siempre con lo mismo...
Conceptos generales (o "¿de qué va esta movida?"):
- Los comandos de unix/linux* deberían ser (y son en casi todas las distribuciones de linux) archivos ejecutables que están en la capeta /bin o /sbin (en nuestro caso /system/bin y /system/sbin)
* (¡muy mal!... vosotros podéis decir linux, YO en cambio debería decir GNU, pero no me entenderíais)
- Los comandos instalados por otros programas de terceros, deberían colocarse en /xbin (en nuestro caso /system/xbin)
- Los comandos instalados por nosotros, deberían colocarse según su función en /usr/local/bin, /usr/local/sbin o /usr/local/xbin
(quedaos con la idea de que hay un montón de buenas costumbres que medio mundo se salta a la torera a la menor ocasión o con la más peregrina excusa)
- Algunos de los ejecutables más conocidos son "cp" (copiar), "mv" (mover), "rm" (borrar), "mount" (montar una "partición"), "ls" (mostrar el contenido de un directorio), clear (borrar la pantalla),... hay un ciento de ellos.
- Esos ejecutables ocupan poco, pero son muchos, y en estos trastos ¡no caben!
- Para que ocupen menos, se han recogido "casi todos" en un ejecutable grande (pero no tanto como lo que ocuparían individualmente) al que vamos a llamar, de momento, "esclavo, hazme"

- Si en la carpeta /bin existe el ejecutable "cp", el comando no da error.
- Si no existe (a priori no puedo saberlo) dará error... Pero aún puedo probar a ver si "esclavo, hazme cp" funciona...
Si es así, es que Sony a eliminado el "cp" individual porque no cabía
Resumen:
Siempre que intentéis ejecutar un comando "X" y el T1 diga que no existe, vuestra primera reacción (sin preguntar aquí a nadie) debe de ser probar a ejecutar "esclavo, hazme X"
Tipos de esclavos (o "¡en la variedad está el gusto!"):
Esta situación se agrava porque existen dos "esclavo, hazme" habituales y diferentes, a saber:
toolbox:
- Sabe hacer muy pocos comandos, muy básicos y sus opciones a menudo están "capadas"
Por ejemplo, el que viene en nuestro Sony no entiende "ls -la" que, para mi es imprescindible
- Es el que viene de fábrica en estos cacharros "siempre"
Y, como viene "de fábrica", casi siempre está situado en /bin (nuestro /system/bin)
busybox:
- Está desarrollado por la comunidad libre...
- Sabe hacer "de todo" (menos cafés; a veces, hasta duerme conmigo...)
- Pero hay varias versiones y las más nuevas suelen ser capaces de hacer más cosas
- Por si eso fuera poca incertidumbre, cuando yo compilo el busybox (crear el ejecutable para que lo uséis), yo decido que comandos (de entre todos los posibles) quiero que "sepa hacer" y cuales no
- Y, además, algunos comandos no puedo permitir que los sepa hacer...
Por ejemplo, "reboot" debe hacer más cosas si se ejecuta en un android que cuando se ejecuta en un PC... así que haré que NO lo "sepa hacer" y tenga que ser un comando independiente (de los de toda la vida)
- Como es un programa de "terceros" su sitio normal (y, por tanto, donde otros programas esperan que esté) sería /xbin
(nuestro /system/xbin que en el T1 no existe aunque, si sabéis mirar la variable PATH, está configurado como si sí existiera... o sea, que ha existido antes de que nos lo entregaran)
Conclusión:
Existe un "esclavo, hazme" = "busybox" que nos interesa mucho recordar (y si no existe, lo tengo que conseguir)
(Porque, por ejemplo, "busybox ls -la" sí funciona y, además, hace lo que yo quiero)
Siempre jo***ndo (o "¡cómo se complican las cosas!"):
Bueno... Pues ahora ¡vamos a echar todo esto por tierra!...
- Nuestro T1 tiene un busybox en /system/bin

(Lo puso ahí Sony, dios sabe por que razón, aunque nos beneficie que exista)
- Está en mal sitio

(Porque debería estar en /system/xbin, una vez recreada esa carpeta)
- El busybox que trae es una m**rd*

(Porque es una versión muy vieja, la compilaron para que "supiera" hacer muy pocas cosas y, además, los comandos están muy capados)
- Y, casi por último, está sin instalar
(Más o menos... Lo explico después...) ¡no os vais a librar de mí tan facilmente! 
- Cuando arrancamos el T1 en "modo recovery" estamos arrancando un sistema distinto...

(es un linux básico que está almacenado en una partición distinta)
(tiene OTRO busybox distinto del anterior)
(de momento, NO podemos cambiar nada en esta partición, así que nos adaptaremos a lo que hay...)
Soluciónes:
- Compilar un nuevo busybox personalizado para android
· Preferiblemente la última versión, que "sepa hacer" al menos todos los comandos que necesitemos, y que estos dispongan de todas las opciones posibles o necesarias.
· Y esto, va a ser que no queréis hacerlo... (a mi no me miréis, yo nací vago...) 
- Conseguir un nuevo busybox personalizado para android
· La podemos buscar por internet... o
· Extraerla de una aplicación (paquete ".apk" que es, en realidad, un ".zip") que la incluya:
Stericson (de XDA) tiene en el market una aplicación llamada (¡oh, sorpresa!) "busybox", que:
- Contiene las últimas 4 o 5 versiones de busybox
- Son bastante completas de "sabe hacer" (desde luego, todo lo necesario), y
- Los comandos no están capados...
- Incluye también una versión mejorada de "toolbox" y el ejecutable independiente "reboot"
Yo uso otra, pero "la buena" es la de stericson
- Es una versión beta aún mejor, pero con posibles errores...

¿Por qué instalar busybox? (o "¡la madre del cordero!"):
Porque quiero:
- No tener que escribir "busybox ls" cuando quiero ejecutar "ls"
- No tener que hacer lo mismo con cada comando que mi busybox "sepa hacer"
- Disponer de todos los comandos que mi busybox "sepa hacer"
¿Cómo instalar busybox? (o "Dios, ¡Qué lio!"):
Hay que:
- Crear la carpeta /system/xbin
- Añadir /system/xbin a la variable PATH (preferiblemente al principio del todo)
En nuestro T1 no hace falta porque ya está ahí, pero al final del todo
- Meter nuestro busybox "bueno" en /system/xbin y darle permisos de ejecución
- Ejecutar "/system/xbin/busybox --install -s /system/xbin"
- Borrar /system/xbin/su (si fue creado al instalar busybox)
(Porque tenemos un sustituto mejor, ¡lo instalamos en /system/bin al rootear!)
- Borrar /system/xbin/reboot (si fue creado al instalar busybox)
(Porque tenemos un sustituto mejor, el de stericson)
- Borrar /system/xbin/sh (si fue creado al instalar busybox)
(Porque todo el sistema se puede ir al garete si no usamos el original de /system/bin)
(Mentira, ya lo he hecho y funciona bien... pero es "más precavido" usar el de Sony)
- Borrar todos los "ejecutables" inútiles que estén en /system/bin
Son inútiles todos los que mi busybox "sepa hacer" (excepto "su", "sh" y "reboot")
- Evidentemente, borrar /system/bin/busybox
¿Y si no hago todo esto? (o "Menudo rollazo ¡Que complicao! ¡Paso! ¡Que lo haga tu madre!"):
- Si no os habéis dormido, al menos habréis aprendido algo...
- Seguro que ya no veis esto tan fácil a la hora de pedir...
Lo más importante sigue siendo:
Siempre que intentéis ejecutar "comando" y el T1 diga que no existe, vuestra primera reacción debe de ser probar a ejecutar "busybox comando"