Wie kompiliere ich einen Kernel für das Galaxy S Plus?

M

manveru0

Ambitioniertes Mitglied
45
[FONT=Arial, sans-serif]Moin zusammen.[/FONT]
[FONT=Arial, sans-serif]Für diejenigen welche interessiert daran sind wie von den Original Quellen von Samsung ein Kernel fürs Galaxy I9001 kompiliert werden kann, habe ich mal so eine erste Anleitung geschrieben. Wird sicher noch mehr dazukommen.[/FONT]


[FONT=Arial, sans-serif]Um einen Kernel aus den Quellen kompilieren zu können benötigen wir als erstes eine Linux Umgebung. Für diejenigen welche das jetzt nicht haben, ihr könnt auch eine Linux Distro (am einfachsten wohl Ubuntu/Kubuntu) in einer virtuellen Maschine laufen lassen. Hierfür empfehle ich unter Windows VMWare Player. Funktioniert ganz gut. [/FONT]


[FONT=Arial, sans-serif]Um Linux ready zu machen fürs kompilieren benötigen wir zuerst ein paar Packete. Ihr müsst folgende Befehle als Root ausführen (unter *buntu is es sudo apt-get update und sudo apt-get install usw.):[/FONT]


Code:
 [FONT=Arial, sans-serif]apt-get update[/FONT]
 [FONT=Arial, sans-serif]apt-get install [/FONT][FONT=Arial, sans-serif][SIZE=3]sun-java6-jdk git-core gnupg flex bison gperf libesd0-[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3]dev[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3] libwxgtk2.[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3]8-0[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3] build-essential zip curl libncurses5-[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3]dev[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3] zlib1g-[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3]dev[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3] valgrind[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3]libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3]1[/SIZE][/FONT][FONT=Arial, sans-serif][SIZE=3]-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos libxml2-utils[/SIZE][/FONT]


[FONT=Arial, sans-serif]Nun sollte eure Distro gewappnet sein um Kernel backen zu können. Hinweis: Ihr zieht eigentlich mehr Pakete mit als benötigt. Unter anderen ist das auch git-core um mit Github zu „kommunizieren“. Ebenfalls enthalten sind alle Pakete um aus den Google Quellen (AOSP: Initializing a Build Environment | Android Open Source) die Pakete runterzuladen. Bei Ubuntu verweise ich noch darauf dass allenfalls noch multiverse repositorys aktiviert werden müssen, siehe hierzu ebenfalls den AOSP link. Ich selber verwende Debian Squeeze. [/FONT]


[FONT=Arial, sans-serif]Als nächstes müssen wir die Quellen des Kernels von Samsung herunterladen:[/FONT]


[FONT=Arial, sans-serif]https://opensource.samsung.com/index.jsp;jsessionid=C6E3E0FC59A664675F12DF7050E04AF8[/FONT]


[FONT=Arial, sans-serif]hier nun mobile > mobile phone auswählen und danach die GT-I9001 Quellen anklicken. Ihr müsst anschliessend noch eine Bestätigung abgeben so von wegen legal agreement gelesen und so. Danach könnt ihr endlich die Zip Datei herunterladen. [/FONT]


[FONT=Arial, sans-serif]Im Anschluss könnt ihr das Zip entpacken. Ihr findet einen Unterordner mit Namen GT-I9001_Kernel.tar.gz, der ihr entpacken müsst. Nun liegen die Kernel Quellen vor euch. [/FONT]


[FONT=Arial, sans-serif]Als nächstes müsst ihr euch eine Toolchain herunterladen. In der Readme Datei findet ihr einen Link zu einer etwas älteren: http://www.codesourcery.com/sgpp/li...09-51-arm-none-eabi-i686-pc-linux-gnu.tar.bz2.[/FONT]


[FONT=Arial, sans-serif]Ihr könnt von hier auch die aktuellste nehmen:https://sourcery.mentor.com/sgpp/lite/arm/portal/release1802 [/FONT]
[FONT=Arial, sans-serif]Ihr müsst den link IA32 GNU/Linux TAR nehmen.[/FONT]
[FONT=Arial, sans-serif]Nach dem Download müsst ihr das Packet entpacken.[/FONT]


[FONT=Arial, sans-serif]Wechselt nun in euer Kernel Verzeichnis GT-I9001_OpenSource/GT-I9001_Kernel/kernel/ und öffnet die Datei Makefile mit einem Editor. [/FONT]


[FONT=Arial, sans-serif]Was sind Makefiles? Eine Einführung in Makefiles:[/FONT]
[FONT=Arial, sans-serif]Ein Makefile ist dazu da, dem Programm make mitzuteilen, was es tun soll (dies ist das "target"), und wie es es tun soll (dies ist die zum target gehörige "Regel"). Des weiteren kann man zu jedem target angeben, von welchen anderen targets oder Dateien dieses abhängt.[/FONT]


[FONT=Arial, sans-serif]In dem Makefile müsst ihr folgende Zeile an eure Umgebung anpassen (#192 bedeutet die Zeile Nr. 192):[/FONT]


[FONT=Arial, sans-serif]#192 CROSS_COMPILE ?= /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi-[/FONT]


[FONT=Arial, sans-serif]z.B. in[/FONT]


[FONT=Arial, sans-serif]CROSS_COMPILE ?= /home/mischu/gt-9001/Cooking_Kernel/arm-2011.03/bin/arm-none-eabi-[/FONT]


[FONT=Arial, sans-serif]wichtig ist dass ihr den richtigen Pfad zu den Binarys im Ordner /arm-2011.03/bin/arm-none-eabi- setzt.[/FONT]


[FONT=Arial, sans-serif]Nun sind die Vorbereitungen abgeschlossen und ihr könnt mit dem Kompilieren beginnen.[/FONT]
[FONT=Arial, sans-serif]Es empfiehlt sich übrigens die entpackten Quellen zu kopieren und ihm kopierten Verzeichnis zu arbeiten. So könnt ihr jederzeit wieder ursprüngliche Dateien in eure Kernel Version rüber kopieren. [/FONT]


[FONT=Arial, sans-serif]Öffnet eine Konsole und wechselt ins Kernel Verzeichnis. [/FONT]


Code:
 [FONT=Arial, sans-serif]cd /euerPfadzumkopiertenKernel [/FONT] 
 [FONT=Arial, sans-serif]z.B. /home/mischu/github/FeaCore_Phoenix[/FONT]


[FONT=Arial, sans-serif]Ihr benötigt eine default config Datei wo die Einstellungen für den Kernel gespeichert werden. Diese könnt ihr mit [/FONT]
Code:
 [FONT=Arial, sans-serif]make ariesve_rev00_defconfig[/FONT]
[FONT=Arial, sans-serif]erzeugen.[/FONT]


[FONT=Arial, sans-serif]Alternativ könnt ihr auch von einem Stock ROM die Datei /proc/config.gz (mittels ADB Shell ziehen) rüberkopieren und als .config verwenden. Die mittels Befehl erzeugte .config tut's aber auch :D[/FONT]


[FONT=Arial, sans-serif]Nun wirds spannend. Mit [/FONT]
Code:
 [FONT=Arial, sans-serif]make menuconfig[/FONT]
[FONT=Arial, sans-serif]öffnet ihr in der Konsole ein Menu in welchem die Einstellungen zum Kernel (was ist fest kompiliert, was als Modul usw. ) gemacht werden können. Mehr dazu später. [/FONT]


[FONT=Arial, sans-serif]Nach Abschluss der Menüeinstellungen könnt ihr mit folgendem Befehl den Kernel mit den gemachten Einstellungen kompilieren.[/FONT]


Code:
 [FONT=Arial, sans-serif]make -j2 [/FONT]
[FONT=Arial, sans-serif]Wenn ihr mehr als zwei CPUs auf eurem Rechner habt könnt ihr auch eine höhere Zahl verwenden, also z.B. Make -j4 für 3 resp. vier CPUs. Im allgemeinen gilt die Regel Anzahl CPUs + 1 für die j Option (spezifiziert die Anzahl gleichzeitig zu laufende Jobs). Ich mit meinen 2 CPUs verwende aber immer -j2. Ihr könnt da aber auch nicht wirklich was kaputt machen mit dieser Option.[/FONT]


[FONT=Arial, sans-serif]Nach dem Kompilieren findet ihr ein zImage unter /arch/arm/boot/. Das ist euer fertig gebackener Kernel welcher nun in die boot.img resp. recovery.img Datei gepackt werden muss. [/FONT]


[FONT=Arial, sans-serif]Fürs erste soll dies reichen. Ich verstehe diesen Post aber als jederzeit offen und bearbeitbar. D.h. es wird sicher noch mehr kommen.[/FONT]
 
  • Danke
Reaktionen: Cynob, reneph, LotosHans und 2 andere
Du scheinst ein wahrer kenner zu sein,smile.Glaube für die meisten ist das
hohe schule hier.Gut gemacht,Danke!
Bei mir läuft Ubuntu auf ner zweiten part,nebst win7.Das schau ich mir mal an.
 
Ach manveru - du bist doof.
Jetzt kribbelts doch wieder in den Fingern mit Kerneln rum zu spielen :)

Gesendet mit der Android-Hilfe.de-App
 
Zuletzt bearbeitet:
TheNephilim schrieb:
Ach manveru - du bist doof.
Jetzt kribbelts doch wieder in den Fingern mit Kerneln rum zu spielen :)

Gesendet mit der Android-Hilfe.de-App

:flapper: tja, mein Ziel ist alle mit dem Developer Virus zu infizieren :D
 

Ähnliche Themen

K
Antworten
8
Aufrufe
2.282
Nufan
Nufan
S
Antworten
0
Aufrufe
895
se1111
S
S
Antworten
1
Aufrufe
1.336
juni
J
Zurück
Oben Unten