su Binary updaten auf Smartphones mit S-ON

Mon, 2011-10-31 16:53 by admin · Forum/category:

Diese Anleitung gilt nur für Android-Smartphones mit Root-Recht (gerootete Handys).

Die Binary-Datei su kann auf Smartphones mit S-ON-Schutz (Security On) nicht auf dem normalen Wege mit dem Programm Superuser aktualisiert werden. Der Versuch führt zu einem unschädlichen Fehler.

S-ON sperrt die gesamte Partition system und lässt nur Lesen zu, nicht aber Schreiben oder Ändern. Ein Beispiel für einen Smartphone-Typ mit S-ON ist das HTC Legend.

Die folgende Beschreibung ist genau für das HTC Legend geschrieben, lässt sich aber sinngemäß auf andere Smartphones mit S-ON übertragen.

Da sich die Programmdatei su in der Partition system befindet, kann sie nicht aktualisiert werden, während Android läuft. Lediglich die Recovery unterliegt nicht dem S-ON-Schutz und kann auch in system schreiben.

su ist aber ein zentrales Programm, durch das viele andere Programme Root-Rechte erhalten. Daher möchte man su aber einigermaßen regelmäßig aktualisieren, schon, damit die Versionen von su und Superuser nicht zu weit auseinanderdriften. Die Version 3.0.3 (Stand 2011-10-31) ist, soweit ich weiß, sehr gut und vielfach erprobt. Die folgende Anleitung kann aber auch für spätere Versionen verwendet werden, indem man den entsprechenden Dateinamen statt des hier angegebenen verwendet.

Hier die Arbeitsschritte:

  1. Die Datei su-bin-3.0.3-efgh-signed.zip herunterladen von: http://downloads.androidsu.com/superuser/su-bin-3.0.3-efgh-signed.zip

    Die ZIP-Datei nicht auspacken. Sie wird so benötigt, wie sie ist, als eine ZIP-Datei.

  2. Das Smartphone an den Computer anschließen und per Button unter dem grünen Android-Männchen die SD-Karte als Massenspeicher freigeben. Das grüne Android-Männchen wird orange.
  3. Die heruntergeladene ZIP-Datei auf die SD-Karte kopieren. Man kann sich für diesen Zweck der Ordnung halber einen Ordner einrichten, z.B. flash.
  4. Die SD-Massenspeicher-Funktion wieder ausschalten, indem man auf den Button unter dem orangen Android-Männchen tippt. Das Männchen wird wieder grün.
  5. Nun kommt eine Sicherheitsmaßnahme für den Fall, dass ein zukünftiges su einmal nicht funktioniert und man wieder ein anderes installieren muss. Ich erkläre das unten genauer für diejenigen, die es interessiert.
    1. ROM Manager öffnen - liegt wahrscheinlich im Drawer.
    2. Sicherstellen, dass eine gute WLAN-Verbindung besteht. Eventuell in die Nähe eines WLAN-Routers gehen und auf gute Verbindung achten.
    3. Im ROM Manager die Funktion starten: ClockworkMod Recovery installieren.
    4. Wenn das einwandfrei funktioniert hat, ROM Manager wieder schließen.
    5. Einen Datei-Manager öffnen, z.B. den kleinen, der bei CyanogenMod schon dabei ist. Eventuell liegt er auch im Drawer und heißt möglicherweise OI Dateimanager.
    6. Nachschauen, ob im Root-Ordner der SD-Karte eine Datei namens update.zip liegt, die etwa 1.3 MB groß ist.
    7. Prüfen, ob du ohne ROM Manager in die ClockworkMod Recovery booten kannst:
      1. Smartphone ganz ausschalten.
      2. Halte den Volume-down-(leiser)-Knopf (links) gedrückt und drücke dann kurz den Power-Knopf, während du den Volume-down-Knopf noch weiter gedrückt hältst. Der Boot-Loader, HBOOT, sollte erscheinen.
      3. Warte ca. 10 s, bis ein grüner Text kurz über einen Teil des Bildschirms läuft. (So ist es beim HTC Legend.) Dann drücke einmal kurz den Volume-down-(leiser)-Knopf, um die Auswahl von FASTBOOT auf RECOVERY zu verschieben. Wenn das Wort RECOVERY gewählt, also blau hinterlegt ist, drücke einmal kurz den Power-Button (oben). Das Smartphone bootet jetzt in die eingebaute Mini-Recovery. Ein rotes Dreieck mit einem Ausrufezeichen erscheint.
      4. Halte den Volume-up-(lauter)-Button (links) gedrückt und drücke dann kurz den Power-Knopf, während du den Volume-up-Knopf weiterhin gedrückt hältst. Die eingebaute Mini-Recovery (blaue Schrift) sollte erscheinen. Unten erscheint eine gelbe Fehlermeldung: "E:Can't open …", die uns nicht kümmert.
      5. Drücke einmal kurz den Volume-down-(leiser)-Knopf (links), um den zweiten Menüpunkt, "Apply sdcard:update.zip" auszuwählen. Drücke einmal kurz den Power-Knopf (oben), um die gewählte Funktion zu starten. Nach wenigen Sekunden erscheint die ClockworkMod Recovery v5.0.2.0 oder neuer.
      6. Das war der Test. Wir wissen nun, dass wir in die ClockworkMod Recovery gelangen können, ohne Android zu benutzen.
  6. Wenn wir schon in der ClockworkMod Recovery sind, können wir sie auch gleich benutzen, um die neue su-Version su-bin-3.0.3-efgh-signed.zip zu flashen. Alternativ kann man das auch aus dem ROM Manager tun, wenn man die vorigen Schritte nicht ausgeführt hat, z.B. beim nächsten Update von su.
    1. Benutze den Trackball oder Volume down, um den Menüpunkt "- install zip from sdcard" zu wählen. Drücke dann einmal kurz den Trackball, um die Funktion zu starten.
    2. Drücke den Trackball noch einmal, um die Funktion "- choose zip from sdcard" auszuführen.
    3. Falls du die Datei in einen Ordner geschrieben hast, wähle mit dem Trackball diesen Ordner (z.B. flash) und drücke dort den Trackball.
    4. Wähle mit dem Trackball die Datei "- su-bin-3.0.3-efgh-signed.zip" und drücke dort den Trackball.
    5. Wähle mit dem Trackball die Auswahl "- Yes - Install su-bin-3.0.3-…" und drücke dort den Trackball. Die Datei wird installiert.
    6. Drücke die Back-(zurück)-Taste, um zum Hauptmenü zurückzugelangen.
    7. Drücke den Trackball einmal kurz, um die Funktion "- reboot system now" zu starten. Das Smartphone startet neu.
  7. Wir führen jetzt noch zwei Tests aus, um sicherzustellen, dass die Operation erfolgreich war.
    1. Wir prüfen, ob die Version su 3.0.3 tatsächlich installiert ist.
      1. Starte das Programm Superuser. Es liegt wahrscheinlich im Drawer. Wenn nicht, dann installiere es aus dem Market.
      2. Drücke die Menu-Taste und tippe auf Einstellungen. Rolle ganz hinunter bis zum Ende. Dort findest du den Abschnitt Superuser Information.
      3. Die Superuser-Version sollte mindestens v3.0.6 sein. Die Su binary Version sollte mindestens v3.0.3 sein. Wenn du auf Su binary tippst, dann sollte das Programm anzeigen: "Aktuelle Version bereits installiert. Keine Aktion erforderlich." Es hat wenig Zweck, auf den Button "Trotzdem aktualisieren" zu tippen, weil dies beim HTC Legend und bei allen Android-Handys mit S-ON (Security On) nicht funktioniert.
      4. Drücke abschließend dreimal die Back-(rückwärts)-Taste, um das Programm wieder zu verlassen.
    2. Als zweiten Test wollen wir probieren, ob su tatsächlich funktioniert. Dazu können wir die Programme ROM Manager oder Titanium Backup verwenden, weil beide ohne su nicht vollständig funktionieren. Nehmen wir als Beispiel den ROM Manager und versuchen wir wieder, in die ClockworkMod Recovery zu booten.
      1. Öffne den ROM Manager. Er liegt wahrscheinlich im Drawer.
      2. Tippe auf die Funktion "Neustart ins Recovery-System". Das Smartphone bootet in die ClockworkMod Recovery. Damit ist unser Test schon abgeschlossen.
      3. Drücke den Trackball einmal kurz, um die Funktion "- reboot system now" zu starten. Das Smartphone startet neu und lädt wieder Android. Der Test ist beendet.

Gratuliere. Du hast einen etwas schwierigen Update erfolgreich ausgeführt und dabei auch gleich einiges über das Smartphone gelernt, insbesondere zwei verschiedene Arten, die Recovery zu starten, und auch, sie zu benutzen.

Nun noch die versprochene Erklärung zum technischen Hintergrund. Du musst sie nicht lesen.

Mir ist bei einem neuen Handy folgendes passsiert, und im Nachhinein bin ich doch ganz froh darüber, weil ich sonst einige wichtige Dinge nicht gelernt hätte.

Ich wollte su updaten. Mit dem Programm Superuser ging es nicht, wegen S-ON. Die neueste Version war noch nicht als flashbare ZIP-Datei auf der Webseite des Programmierers, aber ich hatte das neue su bereits auf meinem Nexus One. Dieses hat kein S-ON, daher konnte das Programm Superuser dort die Datei schreiben und updaten.

Ich kopierte also die Datei su von meinem Nexus One auf das HTC Legend und benutzte dazu den Terminal Emulator.

Zu der Zeit war mir noch nicht klar, wie S-ON genau wirkt. Es wirkte ziemlich heimtückisch. Es erlaubte mir, das alte su umzubenennen und das neue hineinzukopieren. Erst dann schlug S-ON zu und erlaubte mir nicht mehr, die Ausführungsrechte für das su-Programm zu setzen. Jeder Versuch, su auszuführen, schlug fehl.

Nach vielen Versuchen gelang es mir tatsächlich, mittels eines komplizierten mount-Befehls die Ausführungsrechte zu setzen. Nun blieb das Handy bei jedem Versuch, su zu benutzen, stehen und tat gar nichts mehr.

Ich suchte ewig den Fehler bei mir, weil ich vermutete, dass ich beim Setzen der Ausführungsrechte doch noch irgendetwas falsch gemacht hatte, bis ich endlich nach vielen Stunden erkannte, dass die Version 3.0.1, die ich zu der Zeit benutzte, mit dem HTC Legend nicht kompatibel ist und immer diesen Fehler zeigt.

Zwar funktionierte das Smartphone und Android einwandfrei, aber es gab keine Root-Rechte mehr. Leider wusste ich zu der Zeit auch noch nicht, dass man die Recovery auch starten kann, ohne Android und den ROM Manager zu starten. Es blieb mir nichts weiter übrig, als einen großen Teil der Rooting-Prozedur zu wiederholen, um das Smartphone wieder in einen benutzbaren Zustand zu bringen.

Aber selbst mit der flashbaren ZIP-Datei wäre eine kleinere Katastrophe passiert. Ich hätte sie normal geflasht und dadurch die Root-Rechte verloren. Sobald ich das gemerkt hätte, hätte ich versucht, die Recovery zu starten, wie üblich aus dem ROM Manager, nur um festzustellen, dass der ROM Manager mangels Root-Rechten die Recovery nicht mehr starten kann. Das wär's dann gewesen.

Erst heute habe ich nach gründlicher Lektüre einiger einschlägiger Webseiten herausgefunden, dass man die ClockworkMod Recovery ohne Android und ohne den ROM Manager starten kann, und das sogar ganz einfach, wenn man nur weiß, wie.

Für jeden Benutzer ist das auch potentiell wichtig, denn es kann bei jedem Update von Android/CyanogenMod passieren, dass bestimmte Einstellungen des alten Systems mit dem neuen so inkompatibel sind, dass das Handy nicht mehr bootet. Dann muss man mit Hilfe der Recovery das alte System wiederherstellen und versuchen, mittels Titanium Backups die problematischen Einstellungen nicht wiederherzustellen, alle anderen aber schon, wenn man nicht alles wieder von Hand einstellen will.

Wenn man aber nicht in Android booten kann, dann kann man auch den ROM Manager nicht starten und ohne die vorstehend beschriebene alternative Methode die Recovery nicht erreichen.

Das ist der Fluch der S-ON-Einstellung des Boot-Loaders. Sein Segen ist, dass diese Smartphones sicherer sind als andere, weil die system-Partition ziemlich gut geschützt ist.