ROM Update Utility

Aus Android Wiki

Ein ROM Update Utility, kurz RUU genannt, ist eine Möglichkeit, ein offizielles ROM auf sein HTC-Gerät zu flashen. Die RUUs werden dabei nur sehr selten von HTC direkt bereitgestellt, sondern geleakt, also von einem Mitarbeiter oder einer anderen Quelle unerlaubt verbreitet. Da die RUUs an sich keinen Schaden an den Geräten anrichten, wird dies von HTC in den meisten Fällen nicht weiter (nach extern) verfolgt.

Hintergrund

HTC hat mit dem RUU eine Möglichkeit entwickelt, ein HTC-Gerät, auch mit S-ON, einem offiziellen ROM, zu flashen. Zusätzlich wird meist noch ein Update für den HBOOT, das Radio sowie diverse andere Daten beigelegt.

Funktion

Das RUU liegt für Windows-Systeme als ausführbare Datei (exe-Datei) vor und ist in der Handhabung sehr einfach und sicher gestaltet. Wenn man alle Schritte nach Anleitung im RUU befolgt, kann das Handy dabei im Regelfall nicht kaputt gehen. Das RUU ist an sich immer das selbe. Das einzige, was sich ändert, ist normalerweise die rom.zip, in der sich die Systemdateien befinden, die auf das Handy übertragen werden.

Folgende Dateien werden meist in der rom.zip hinterlegt:

boot.img
Beinhaltet den Boot-Header, den Kernel und den RAM-Disk
hboot*.nb0
HBOOT
recovery.img
Recovery
system.img
eigentliches Android-ROM
radio.img
Radio
ramdisk.img
wahrscheinlich Initial-RAM-Disk
rcdata.img
Radiodaten für das Inspire 4G
userdata.img
Beinhaltet Nutzerdaten (z. B. Einstellungen)
splash1.nb0
Splashscreen
android-info.txt
Informationen zum RUU

Die rom.zip ist von HTC signiert. Dadurch wird sichergestellt, dass auch Geräte mit S-ON durch ein RUU neu geflasht werden können.

Wird die RUU ausgeführt, werden zuerst Sicherheitshinweise und Haftungsausschlüsse angezeigt, die der Nutzer bestätigen muss. Im Anschluss wird die ROM-Version überprüft, die mit der RUU ausgeliefert wird. Durch einen Klick auf Aktualisieren liest die RUU mittels eines ADB- oder Fastboot-Befehls die aktuell installierte ROM-Version aus. Ist diese Version neuer als die, die durch die RUU ausgeliefert wird, wird eine Installation im weiteren Verlauf mit dem Fehler "main version older" abbrechen. Dieser Fehler wird allerdings durch den Bootloader generiert und von der RUU lediglich wiedergegeben.

Nachdem die Versionen feststehen, startet die RUU das Telefon in einen RUU-Modus. Dies geschieht mit dem Fastboot-Befehl "fastboot oem rebootRUU". In diesem Modus sieht der Nutzer nicht die einzelnen Schritte auf dem Gerät, sondern lediglich einen Fortschrittsbalken. Im Anschluss überträgt die RUU die rom.zip an das Gerät zur Installation. Dies geschieht wiederum mit dem Fastboot-Befehl "fastboot update rom.zip".

Nachdem die Datei vollständig übertragen wurde, überprüft der Bootloader die Gültigkeit der digitalen Signatur des Pakets. Stimmt diese nicht mit der erwarteten, von HTC hinterlegten, überein, wird die Installation mit dem Fehler "signature fail" abgebrochen. Dies hat primär den Zweck, dass nur von HTC offiziell freigegebene ROMs installiert werden können, macht allerdings eine Installation von Drittanbieter-Firmware über diese Methode unmöglich. Ist die Signatur gültig, wird das Paket entpackt und die android-info.txt gelesen.

Als weitere Überprüfung, ob die im RUU hinterlegte ROM für das Gerät bestimmt ist, wird nun die CID überprüft. Durch den Fastboot-ähnlichen Befehl "getvar cid" wird die CID des Gerätes gelesen und mit den gültigen der android-info.txt abgeglichen. Ist die CID nicht in der Liste enthalten, wird die Installation mit dem Fehler "cid incorrect" abgebrochen. Ist die CID enthalten, werden die Nutzerdaten mit dem Fastboot-ähnlichem Befehl "erase userdata" gelöscht. Dies soll vor allem Inkompatibilitäten von verschiedenen Kernel- und ROM-Versionen vorbeugen.

Nachdem die Nutzerdaten gelöscht wurden, werden die Inhalte der rom.zip geflasht. Der Nutzer kann den Fortschritt sowohl auf dem Display des Gerätes mit dem Fortschrittsbalken verfolgen, als auch durch die Informationsleiste der RUU, welche relativ detailliert wiedergibt, was gerade gemacht wird. Sind die Teile alle korrekt installiert, wird das Gerät mit dem Befehl "fastboot reboot" neu gestartet. Das Gerät ist nun aktualisiert.