No se puede ejecutar su en adb shell en una máquina con Ubuntu

Dispositivo: Tableta Android sin marca
Android: 2.2

Estaba tratando de rootear mi tableta usando mi máquina Ubuntu 11.10.

Seguí las siguientes instrucciones de un sitio:

1. adb Install Superuser.apk
2. adb push busybox /sdcard/
3. adb push su /sdcard/

En la misma terminal, ahora abrimos adb:

adb shell

Ingrese el comando para superusuario

su

Ahora, copiará y pegará estos comandos:

1. mount -o remount,rw /system
2. mv /system/xbin/su /system/xbin/oldsu
3. cp /sdcard/busybox /system/bin/busybox
4. cp /sdcard/su /system/bin/su
5. chmod 06755 /system/bin/su
6. chmod 0755 /system/bin/busybox
7. ln -s /system/bin/su /system/xbin/su
8. exit su (may say something about a bad number
9. exit
10. adb reboot

No pude ejecutar el primer comando de montaje, pero continué con el resto de los 9 comandos. Luego, ejecuté una aplicación de verificación de raíz después de reiniciar para verificar si mi dispositivo estaba enraizado. Indicó que no hay acceso de root.

Luego volví a ejecutar adb shell, y luego al ejecutar su, dio un error:

su: 1: Syntax error: "(" unexpected

Ahora, ni siquiera puedo eliminar este archivo. Estoy atascado y es la primera vez que intento rootear un dispositivo Android. No tengo idea de qué se debe hacer ahora para resolver este problema y rootear mi dispositivo con éxito.

Fuera de tema, este es un problema común de secuencias de comandos de Shell y no está relacionado con Android en absoluto. El paso 8 no es un comando sino un comentario, probablemente olvidó el '#' delante de él. O simplemente omita el paso 8. Incluso si intenta ejecutar el paso 8, el paso 9 se ejecutará de todos modos. No hay problema aquí.
@ce4 Pero no puede ejecutar el primer comando de montaje. ¿Cuál podría ser el problema con eso?
Si no puede ejecutar el primer comando, los siguientes también deberían fallar. Además, ¿cómo debería funcionar eso? Inmediatamente después de adb shellque él emita su, que aún no está allí. Al no ser root, mountno puede funcionar, por lo que las cosas no se pueden copiar en la /systempartición. Lo que me confunde un poco es el paso 2, que implica que ya hay uno sudisponible antes de rootear. Nunca comprobé eso; ¿Es ese el caso? Entonces, ¿uno podría obtener permisos de root a través de ADB en un dispositivo no rooteado? Lo dudo, ¿entonces por qué necesitamos exploits para rootear los dispositivos?
Podría ser una de esas tabletas pre-rooteadas, pero ¿por qué habría una guía para rootear un dispositivo ya rooteado...?
Antes de hacer todo esto, cuando ejecuté su en adb shell, apareció #. Pero ahora viene un error. ¿Hay alguna manera de que pueda hacer algo con ese archivo?
Y si inicialmente venía #, ¿significaba eso que ya estaba rooteado? Porque cuando ejecuté una aplicación de terminal, no estaba tomando el comando su.
A #en el shell significa que eres root, exactamente. Entonces, como Shywim ya se preguntó, ¿por qué quería rootear un dispositivo rooteado? No tiene sentido. Para deshacer sus cambios, primero debe convertirse en root, lo cual acaba de romper. Intente oldsuen lugar de suconvertirse en root, bien podría ser que el "nuevo su" sea incompatible de alguna manera.
Para los votantes cercanos: ¿Por qué debería ser una "pregunta de teléfono independiente de Android"? OP rompió la raíz en su dispositivo, y esta pregunta es sobre cómo restaurarlo. Una pregunta de Android perfectamente buena en mi humilde opinión, y también sobre el tema. No tiene nada que ver con Ubuntu, el problema está en el dispositivo Android.
@Izzy Intenté ejecutar oldsu. Muestra #. Gracias por el consejo :) ¿Qué debo hacer a continuación? Quiero actualizar mi tableta de 2.2 a una versión más nueva...

Respuestas (1)

Obviamente, el subinario que instaló no funciona bien con su sistema. Como afortunadamente creó una copia de seguridad del suejecutable original, la recomendación es revertir primero los cambios incompatibles:

adb shell
$ oldsu
# mount -o remount,rw /system
# rm /system/xbin/su /system/bin/su
# cp /system/xbin/oldsu /system/xbin/su
# exit
$ exit
adb reboot

Explicación: Comience adb shelly conviértase en root (usando el oldsuejecutable de trabajo). Elimine /system/xbin/su(que ahora es solo un enlace simbólico) y el incompatible /system/bin/su, luego copie el trabajo sude nuevo a donde pertenece. Luego salga del shell raíz y finalmente del shell adb. El reinicio es opcional y no debería ser necesario. También, opcionalmente, puede eliminarlo busybox(o conservarlo si funciona). Antes de salir, adb shelles posible que desee probar si sufunciona nuevamente, solo para estar seguro (por eso escribí cppara esto: si algo sale mal, todavía tiene su oldsudisponible).

Con esos pasos, al menos debería tener todo en funcionamiento nuevamente, y este problema está resuelto. La actualización a una versión más nueva de Android es un problema aparte: compruebe la etiqueta Lo mismo para la ROM que pueda necesitar (verifique la etiqueta para eso, y también verifique la etiqueta-wikis para actualizar y rom ).