Samsung Galaxy S Plus I9001 rooten

M

mrdjtb

Neues Mitglied
21
So, hier mal die Anleitung von Frank_m das SGS+ per Hand zu rooten!

Wer es auf diese weise lieber nicht versuchen möchte, kann auch die Variante 2 etwas weiter unter benutzen:

Hier Variante 1

frank_m schrieb:
Wie immer gilt: Jeder ist für sein Telefon selber verantwortlich. Wer sein Gerät mit Hilfe dieser Anleitung schrottet, ist selber schuld. Ich hab euch gewarnt, die Sache ist gefährlich.

zunächst kümmern wir uns um die SMD Archive. SMD Archive scheinen eine Art aufgebohrtes TAR zu sein. Es gibt einen Header, der Informationen über den Dateinamen, die Länge, das Start-Offset der Datei im Archiv und eine MD5 Checksumme der Datei enthält. Im Anschluss an den Header sind die integrierten Dateien einfach hintereinander angehängt. Der Header ist immer ein Vielfaches von 512 Byte lang.

//EDIT
Ich habe ein automatisiertes Script geschrieben, dass den Vorgang des Extrahierens komplett übernimmt:
Code:
#!/bin/bash

base=0
length=1
while (( length > 0 ))
do
    # calculate Length
    let "skip = base + 18"
    length=`hexdump -e '"%d"' -s ${skip} -n 2 ${1}`
    let "length = length * 65536"
    let "skip = base + 16"
    length2=`hexdump -e '"%d"' -s ${skip} -n 2 ${1}`
    let "length += length2"
    let "length = length / 512"  # Number of 512-Byte blocks

    # calculate offset
    let "skip = base + 22"
    offset=`hexdump -e '"%d"' -s ${skip} -n 2 ${1}`
    let "offset = offset * 65536"
    let "skip = base + 20"
    offset2=`hexdump -e '"%d"' -s ${skip} -n 2 ${1}`
    let "offset += offset2"
    let "offset = offset / 512" # Number of 512-Byte blocks

    # save header in case of first loop
    if (( base == 0 ))
    then
        dd if=${1} bs=512 of=header count=${offset}
    fi

    # extract filename
    let "skip = base + 32"
    filename=`dd if=${1} skip=${skip} count=16 bs=1 2>/dev/null`

    # and finally: extract Image
    if (( length > 0 ))
    then
        echo "Länge: ${length}"
        echo "Offset: ${offset}"
        echo "Dateiname: ${filename}"
        dd if=${1} bs=512 of=${filename} skip=${offset} count=${length} 2>/dev/null
    fi

    # next header
    let "base += 64"
done
Hinweis: Wenn man das Script hier rauskopiert und in einen Texteditor in Linux einfügt, muss man anschließend die gespeicherte Datei ausführbar machen:
Code:
chmod +x extract.sh
Aufruf:
Code:
exctract.sh SMD-Archive
also z.B.
Code:
./extract.sh  SMD_PDA_I9001XXKP4_CL374422_REV00_user_low_ship_EMMC.smd
Damit gehört das elendige Rechnen der Offsets Und Längen der Vergangenheit an. ;)

//EDIT end


Alte manuelle Version:

Das Bild zeigt den Header, wenn ein Archiv im Hex-Editor geladen ist (ich verwende ghex2 in Ubuntu 11.04).

Anhang anzeigen 48272

Ich lade immer die Datei, stelle dann im Menu "Ansicht" -> "Daten gruppieren" auf "Longwords". Dann ziehe ich das Fenster so in die Breite, dass immer 32 (0x20) Byte in einer Zeile angezeigt werden. Damit werden Längen und Offsets immer direkt passend angezeigt, und die Dateinamen stehen immer am Zeilen-Anfang. Pro Datei werden 64 Byte im Header verwendet.
Im Bild sind die entscheidenden Inhalte für die erste Datei markiert:
  • Grün ist die Länge
  • Rot das Offset
  • Violett der Dateiname
  • Blau die MD5 Checksumme
Direkt im Anschluss an die Checksumme für die erste Datei beginnen die Infos für die 2. Datei.

Mit den Infos kann man sich nun an das Extrahieren der Dateien machen. Dafür gibt es einen schönen Trick: Wenn man den Cursor im ghex2 an die richtige Stelle setzt, werden einem unten in den Feldern direkt die passenden Dezimal-Werte der hexadezimalen Header Inhalte angezeigt:

Anhang anzeigen 48274

Wie man sieht, steht der Cursor oben auf dem Offset Wert der ersten Datei. Unten wird 1536 angezeigt: Das ist das Startbyte der Datei. Wichtig ist, dass "Little Endian" aktiviert ist.

Wenn man bedenkt, dass SMD Dateien immer ein Vielfaches von 512 Byte lang sind, kommt man schnell auf folgendes Shell Script:
Code:
#!/bin/bash

let "skip_var = ${3} / 512"
let "count_var = ${4} / 512"

echo "dd if=${1} bs=512 of=${2} skip=${skip_var} count=${count_var}"
dd if=${1} bs=512 of=${2} skip=${skip_var} count=${count_var}
Hinweis: Das Script ist sehr rudimentär und momentan nur eine Behelfskrücke. Ich muss mich mal in bash Scripting einarbeiten. Das kann man bestimmt auch eleganter und automatisiert lösen.

Syntax:
Code:
extract.sh SMD_Archiv Zieldatei Offset Länge
Also im Beispiel:
Code:
./extract.sh SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC.smd partition.bin 1536 29184
Die Ausgabe:
Code:
dd if=SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC.smd bs=512 of=partition.bin skip=3 count=57
57+0 Datensätze ein
57+0 Datensätze aus
29184 Bytes (29 kB) kopiert, 0,0163007 s, 1,8 MB/s
Auf die Art kann man schnell alle Dateien der SMD Dateien extrahieren. Man muss sich halt immer Länge und Offset aus dem Hexeditor holen, den Dateinamen angeben und ab dafür. Im Falle der KF6 sind das:
  • partition.bin
  • dbl.mbn
  • osbl.mbn
  • amss.mbn
  • EMMCBOOT.MBN
  • adsp.mbn
  • boot.img
  • system.ext4
  • cache.ext4
  • recovery.img
  • persist.ext4
  • emmcparam.bin
Hinweis: Die Reihenfolge und die Bestandteile sind firmwarespezifisch! Bei der KP4 sieht das anders aus. Also nicht blind die Anleitung abtippen, sondern nachdenken!

Am Ende extrahiert man noch den Header:
Code:
./extract.sh  SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC.smd header 0  1536
Den braucht man zwar nicht zum Ändern, aber er erleichtert das Zusammenfügen der Images am Ende.


Man kann auf die gleiche Weise CSC oder Modem Dateien extrahieren. Die Vorgehensweise ist grundsätzlich immer die gleiche.

frank_m schrieb:
Wie immer gilt: Jeder ist für sein Telefon selber verantwortlich. Wer sein Gerät mit Hilfe dieser Anleitung schrottet, ist selber schuld. Ich hab euch gewarnt, die Sache ist gefährlich.

Kommen wir nun zum eigentlichen Root Vorgang.

Nach dem Extrahieren haben wir u.a. die Datei "system.ext4". Um die kümmern wir uns jetzt näher.

Man legt ein temporäres Verzeichnis an, z.B. "system":
Code:
mkdir system
Dann mountet man per Loopback die system.ext:
Code:
sudo mount -o loop system.ext4 system
Anschließend kann man im Ordner "system" in diesem Image nach belieben herumspielen. Allerdings sollte man sich überlegen, was man tut.

Um zu rooten, besorgt man sich eine passende su und eine Superuser.apk. Ich habe die aus dem Link von astuermer verwendet, und zwar die "su-3.0-beta4-efgh-signed.zip". Zukünftig kann man sicher auch aktualisierte Versionen verwenden. Aus diesem Zip kann man die Datei su und die Datei Superuser.apk extrahieren.

Die Datei su kopiert man nach "system/xbin". Dann ändert man die Zugriffsrechte:
Code:
sudo cp su system/xbin/
sudo chown 0.0 system/xbin/su
sudo chmod 4755 system/xbin/su
Als nächstes ist die Superuser.apk dran. Die kommt nach system/app:
Code:
sudo cp Superuser.apk system/app/
sudo chown 0.0 system/app/Superuser.apk
sudo chmod 644 system/app/Superuser.apk
Dann kann man das System Image wieder unmounten:
Code:
sudo umount system
Fertig. Jetzt hat man ein gerootetes system.ext4 verfügbar.

Nun müssen wir das ganze wieder aufs Handy bringen.

frank_m schrieb:
Wie immer gilt: Jeder ist für sein Telefon selber verantwortlich. Wer sein Gerät mit Hilfe dieser Anleitung schrottet, ist selber schuld. Ich hab euch gewarnt, die Sache ist gefährlich.

Der letzte Schritt ist das Packen des SMD Archivs.

//EDIT
Hier nun auch ein automatisiertes Script, dass die Dateien wieder zusammenfügt und die MD5 Checksums neu berechnet.
Achtung: Das Script verlässt sich darauf, dass vom letzten extract Vorgang eine gültige Header-Datei vorhanden ist!
Code:
#!/bin/bash

base=16
length=0
filename=dummy

# save the beginning
dd if=header of=newheader bs=1 count=16 2>/dev/null

while [ ! -z "${filename}" ]
do
    let "skip = base"
    dd if=header of=newheadertmp bs=1 skip=${skip} count=32 2>/dev/null
    cat newheadertmp >> newheader
    rm newheadertmp

    # extract filename
    let "skip = base + 16"
    filename=`dd if=header skip=${skip} count=16 bs=1 2>/dev/null`
    if [ ! -z "${filename}" ]
    then
        echo "Berechne MD5 Sum: ${filename}"
        checksum=`md5sum ${filename} | tr '[a-z]' '[A-Z]'`
        echo -n ${checksum:0:32} >> newheader
    fi

    # next header
    let "base += 64"
done

filesize=$(stat -c%s header)
let "base -= 32"
let "size = filesize - base"

dd if=header of=newheadertmp bs=1 skip=${base} count=${size} 2>/dev/null
cat newheadertmp >> newheader
rm newheadertmp

cat newheader > ${1}

filename=dummy
base=16
while [ ! -z "${filename}" ]
do
    # extract filename
    let "skip = base + 16"
    filename=`dd if=header skip=${skip} count=16 bs=1 2>/dev/null`
    if [ ! -z "${filename}" ]
    then
        echo "Füge zum Archiv hinzu: ${filename}"
        cat ${filename} >> ${1}
    fi
    # next header
    let "base += 64"
done

rm newheader
Hinweis: Wenn man das Script hier rauskopiert und in einen Texteditor in Linux einfügt, muss man anschließend die gespeicherte Datei ausführbar machen:
Code:
chmod +x compress.sh
//EDIT end

Alte manuelle Methode:

Wie schon erwähnt sind SMD Archive nichts anderes, als hintereinander gehängte Dateien mit einem Header. Genau das stellen wir jetzt wieder her. Dateien kann man sehr bequem mit cat aneinanderhängen. Wir haben ja beim Entpacken den Header gesichert, das erleichtert uns jetzt das Leben.

Code:
cat header > SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat partition.bin >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat dbl.mbn >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat osbl.mbn >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat amss.mbn >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat EMMCBOOT.MBN >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat adsp.mbn >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat boot.img >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat system.ext4 >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat cache.ext4 >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat recovery.img >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat persist.ext4 >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
cat emmcparam.bin >> SMD_I9001BOKF6_I9001BOKF6_CL319318_REV00_user_low_ship_EMMC_rootet.smd
Wichtig ist die Reihenfolge der Befehle! Die muss exakt zur Reihenfolge der Dateinamen im Header passen!!! Achtung: Bei Fehlern besteht erhöhte Brick Gefahr!
Hinweis: Die Reihenfolge und die Bestandteile sind firmwarespezifisch! Bei der KP4 sieht das anders aus. Also nicht blind die Anleitung abtippen, sondern nachdenken!

Nach dieser Befehlsfolge haben wir eine SMD Datei, die die gleiche Länge hat, wie die originale Datei. Die neue Datei hat nur eine Schwäche: die MD5 Checksumme der system.ext4 passt nicht, da wir daran herumgespielt haben. Aber kein Problem:
Code:
md5sum system.ext4
Die Ausgabe sieht in etwa wie folgt aus:

Blau markiert die MD5 Checksumme. Nun laden wir das neue SMD Archiv in ghex2 und tauschen die Checksum einfach aus:
Anhang anzeigen 48281
Man beachte, dass die Buchstaben GROß geschrieben werden müssen. Abspeichern und

Fertig.

Jetzt kommt folgende Flashanleitung zum Tragen:
https://www.android-hilfe.de/forum/...pdate-auf-android-2-3-4-anleitung.137222.html

Einfach die modifizierten Dateien entsprechend eintragen und flashen. Nach dem Reboot freuen wir uns über ein gerootetes Galaxy S Plus.


Variante 2 - Und hier jetzt noch die Flash per Odin Methode:

frank_m schrieb:
Hallo,

man verzeihe mit bitte den Doppelpost, aber das Ereignis ist meines Erachtens wichtig genug für einen neuen Beitrag. Es ist vollbracht. :)

Wie immer gilt: Jeder ist für sein Telefon selber verantwortlich. Wer sein Gerät mit Hilfe dieser Anleitung schrottet, ist selber schuld. Ich hab euch gewarnt, die Sache ist gefährlich.

Hier sind die Links zum FMROOT Kernel. ;) Dabei handelt es sich um den unveränderten Original Kernel, der lediglich aufgrund eines modifizierten init.rc Scriptes die für ROOT erforderlichen Dateien in die /system Partition kopiert.

FMROOT_XXKP4.zip
FMROOT_BOKF6.zip

Anleitung:
Sucht euch die passende Datei für eure Firmware heraus. Entpackt sie. Dabei sollten 2 Dateien entstehen:
AriesVE.ops
FMROOT_?????.smd

Seht euch diese Flashanleitung an. So wie dort beschrieben, muss die OPS-Datei bei OPS rein und die FMROOT Datei bei PDA. Start drücken und einige Sekunden warten. Danach rebootet das Phone und ist gerootet. Normalerweise ohne Verlust von Daten und Einstellungen.

Credits:
  • astuermer für den Hinweis auf die richtigen Binaries
  • Chainfire von den XDA Developers. Mein FMBOOT Script basiert größtenteils auf seinen Ideen
  • Paul von Madaco. Bei seinem "superboot" habe ich ebenfalls Anleihen gemacht.


Für die Entwickler unter euch: Das Script, das in der init.rc aufgerufen wird:
Code:
mount -o rw,remount -t ext4 /dev/block/mmcblk0p15 /system
rm /system/xbin/su
rm /system/bin/su
mkdir /system/xbin
cat /fmboot/su > /system/xbin/su
chmod 4755 /system/xbin/su
cat /fmboot/Superuser.apk > /system/app/Superuser.apk
mount -o ro,remount -t ext4 /dev/block/mmcblk0p15 /system
Die Ergänzung für die init.rc:
Code:
    start fmboot

    class_start default

## Daemon processes to be run by init.
##
service fmboot /system/bin/sh /fmboot/fmboot.sh
    user root
    group root
    oneshot
frank_m schrieb:



Ich denke ich spreche im Namen aller die ihr SGS+ auf diese Wiese gerootet haben:

:thumbup: frank_m - Das hast Du einfach super hinbekommen! :thumbsup:

:biggrin: :biggrin: :biggrin: DANKE DANKE DANKE :biggrin: :biggrin: :biggrin:

MrDJTB
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Huntsman, DerCastor, limuc und 15 andere
:smile:

Da wirst Du wohl noch ein wenig warten müssen.
Ist noch zu frisch.
 
Ok! Ich dachte das es schon etwas gibt, da es nur eine neue Version vom SGS ist. Aber dann werden wir einfach abwarten. Wird ja bestimmt hier im Forum was kommen!
 
Da ist leider mehr zu beachten.
Der Prozessor ist ein anderer und auch das Modem ist nicht gleich.
 
Funktioniert Gingerbreak? Und was kann passieren, wenn man das ausprobiert?

Gesendet von meinem GT-I9001 mit der Android-Hilfe.de-App
 
Und?
Schon ausprobiert?

Ich würde es sein lassen.
 
Ich wollte mal wissen, wie ihr die Wahrscheinlichkeit einschätzt, dass überhaupt noch großartig roms etc. für das sgs+ rauskommen?
 
Ich schätze die sehr hoch ein, da das gerät verdammt viel Leistung für sein Geld bringt.
 
Ja das stimmt.
Aber das wird noch einige Wochen dauern.
Mal sehen wie viel man aus dene 1,4Ghz noch rauskitzeln kann :D

Aber ich denke nicht das das Plus sehr bekannt wird.
Ich wurde schon tausend mal angelabert "Hey cool du hast das galaxy s1,das ist voll gut"...ich so nein das ich das SGS+ :D und die peilen das alle nicht.
Naja kommt noch mit der Zeit.
 
nope, leider nicht:

[q] galaxy s plus gt-i9001 - Page 4 - xda-developers

posts nr. 39 ff.

müssen uns wohl nochn bissel gedulden....es gib ja momentan noch nicht einmal ein eigenes unterforum für unser phone bei xda-dev und die sind schliesslich so DIE zugpferde schlechthin wenns ums rooten und custom roms geht ;)

generell jedoch auch ein sehr interessanter thread den man verfolgen sollte, mal so nebenbei ;)
 
Zuletzt bearbeitet:
na klasse :(
bin grad am überlegen mir ein sgs plus zu holen, aber ohne rooten? hmm.
 
Da kommt sicher noch irgendwann ein Root release !
 
dann wart ich noch... hab einen nervösen finger bei amazon ;-)
 
Würde ich machen. Also ausser das en noch kein Root gibt find ich das Handy klasse :) Die neue Firmware hat auch noch mal deutlich was gebracht !
 
FaxXer schrieb:
Würde ich machen. Also ausser das en noch kein Root gibt find ich das Handy klasse :) Die neue Firmware hat auch noch mal deutlich was gebracht !

kann ich ohne root denn meine titanium backups rückspielen?
hab derzeit das acer liquid mt (ebenfalls snapdragon cpu und adreno 205).
und bloatware löschen geht wohl ohne root auch nicht, oder? das sgs meiner freundin war zugemüllt mit mist den man nicht braucht (zumindest sie) - office, etc.
 
nope, leider nicht@bloatware löschen ohne root. das wäre auch eine der hauptfunktionen die mich interessieren würde. das nimmt ja schon fast ausmaße wie im desktop/laptop bereich an, wo neue vorinstallierte geräte voll mit crapware sind ^^ hm gute frage mit titanium backups....ausführen kann man die ja auf jeden fall nur mit root. aber ich weiss net ob man nur die app installen und alte backups entpacken kann ohne root. ich denk mal das kommt auf den inhalt deines backups an, oder? je nachdem ob du dort drin viele funktionen und apps hast die root benötigen, könnte es dann ohne gerootetes phone schwierig werden, diese wieder zu installieren ausm backup...
 
Zuletzt bearbeitet:
dann wirds wohl noch heißen "zähne zusammenbeissen und warten auf den root" ;)
is mir zu riskant... obwohl das sgs+ nach einem tollen handy klingt...
 
Hallo

Doofe Frage, was ist "bloatware"? Ist das der Müll den fast keiner braucht, und den mann nicht deistallieren kann?
 
Ja ;)
Hab den Begriff mal wo gelesen und mußte den mal anbringen.
Kann man nur mit Rootrechten und Titanium Backup entfernen...
 

Ähnliche Themen

K
Antworten
8
Aufrufe
2.025
Nufan
Nufan
S
Antworten
0
Aufrufe
776
se1111
S
S
Antworten
1
Aufrufe
1.191
juni
J
Zurück
Oben Unten