su kann nicht in der adb-Shell auf einem Ubuntu-Rechner ausgeführt werden

Gerät: Android-Tablet ohne Markenzeichen
Android: 2.2

Ich habe versucht, mein Tablet mit meinem Ubuntu 11.10-Rechner zu rooten.

Ich habe die folgenden Anweisungen von einer Website befolgt:

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

Im selben Terminal öffnen wir jetzt adb:

adb shell

Geben Sie den Befehl für Superuser ein

su

Jetzt kopieren Sie diese Befehle und fügen sie ein:

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

Ich konnte den ersten Mount-Befehl nicht ausführen, fuhr aber trotzdem mit den restlichen 9 Befehlen fort. Dann habe ich nach dem Neustart eine Root-Checker-App ausgeführt, um zu überprüfen, ob mein Gerät gerootet ist. Es zeigte keinen Root-Zugriff an.

Ich habe dann erneut adb shell ausgeführt und beim Ausführen von su gab es einen Fehler:

su: 1: Syntax error: "(" unexpected

Jetzt kann ich diese Datei nicht einmal löschen. Ich stecke fest und versuche zum ersten Mal, ein Android-Gerät zu rooten. Ich habe keine Ahnung, was jetzt getan werden sollte, um dieses Problem zu lösen und mein Gerät erfolgreich zu rooten.

Off-Topic, dies ist ein häufiges Shell-Scripting-Problem und überhaupt nicht mit Android zu tun. Schritt 8 ist kein Befehl, sondern ein Kommentar, Sie haben wahrscheinlich das '#' davor vergessen. Oder lassen Sie Schritt 8 einfach aus. Auch wenn Sie versuchen, Schritt 8 auszuführen, wird Schritt 9 trotzdem ausgeführt. Kein Problem hier.
@ce4 Aber er kann den ersten Mount-Befehl nicht ausführen. Was könnte daran das Problem sein?
Wenn er den ersten Befehl nicht ausführen kann, sollten die folgenden ebenfalls fehlschlagen. Außerdem, wie soll das gehen? Unmittelbar danach adb shellstellt er aus su– was noch nicht da ist. Nicht root zu sein, mountkann nicht funktionieren, daher kann das Zeug nicht auf die /systemPartition kopiert werden. Was mich ein wenig verwirrt, ist Schritt 2 – was impliziert, dass subereits vor dem Rooten eine verfügbar ist. Ich habe das nie überprüft; ist das so? Man könnte also Root-Berechtigungen über ADB auf einem nicht gerooteten Gerät erhalten? Ich bezweifle das, denn warum brauchen wir dann Exploits, um Geräte zu rooten?
Es könnte eines dieser vorgerooteten Tablets sein, aber warum sollte es eine Anleitung zum Rooten eines bereits gerooteten Geräts geben ...?
Bevor ich dies alles tat, als ich su in der adb-Shell ausführte, kam #. Aber jetzt kommt ein Fehler. Gibt es eine Möglichkeit, dass ich etwas gegen diese Datei tun kann?
Und wenn anfangs # kam, bedeutete das, dass es bereits gerootet war? Denn als ich eine Terminal-App ausführte, nahm sie den su-Befehl nicht an.
Ein #an der Shell bedeutet, dass Sie root sind, genau. Also, wie sich Shywim schon gefragt hat, warum wollten Sie ein gerootetes Gerät rooten? Macht keinen Sinn. Um Ihre Änderungen rückgängig zu machen, müssen Sie zuerst root werden – was Sie gerade gebrochen haben. Versuchen Sie oldsu, anstatt suroot zu werden, es könnte gut sein, dass nur das "Neue su" irgendwie inkompatibel ist.
An Nahwähler: Warum soll das eine „Android-unabhängige Telefonfrage“ sein? OP hat die Wurzel auf seinem Gerät verloren, und bei dieser Frage geht es darum, wie man es wiederherstellt. IMHO eine vollkommen in Ordnung Android-Frage, und auch zum Thema. Hat nichts mit Ubuntu zu tun, das Problem liegt auf dem Android-Gerät.
@Izzy Ich habe versucht, oldsu auszuführen. Es zeigt #. Danke für den Tipp :) Was soll ich als nächstes tun?Ich möchte mein Tablet von 2.2 auf eine neuere Version upgraden...

Antworten (1)

Offensichtlich sufunktioniert die von Ihnen installierte Binärdatei nicht gut mit Ihrem System. Da Sie glücklicherweise eine Sicherungskopie der ursprünglichen suausführbaren Datei erstellt haben, empfiehlt es sich, zuerst die inkompatiblen Änderungen rückgängig zu machen:

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

Erläuterung: Starten Sie adb shellund werden Sie root (unter Verwendung der funktionierenden oldsuausführbaren Datei). Löschen Sie /system/xbin/su(was jetzt nur ein Symlink ist) und die inkompatible /system/bin/su, und kopieren Sie dann die Arbeit sudorthin zurück, wo sie hingehört. Verlassen Sie dann die Root-Shell und schließlich die Adb-Shell. Der Neustart ist optional und sollte nicht erforderlich sein. Optional können Sie busyboxes auch entfernen (oder behalten, wenn es funktioniert). Vor dem Beenden adb shellmöchten Sie vielleicht testen, ob es suwieder funktioniert, nur um sicherzugehen (weshalb ich cpdafür geschrieben habe: Wenn etwas schief geht, haben Sie immer noch Ihr oldsuverfügbares).

Mit diesen Schritten sollten Sie zumindest alles wieder funktionsfähig haben, und dieses Problem ist gelöst. Das Update auf eine neuere Android-Version ist ein separates Thema: Bitte überprüfen Sie das Tag, da bereits entsprechende Fragen bestehen. Gleiches gilt für das ROM, das Sie möglicherweise benötigen (überprüfen Sie das Tag darauf und überprüfen Sie auch die Tag-Wikis auf update und rom ).