Android Kernel erzeugen

Diese HowTo beschreibt wie man einen Kernel für ein Samsung Galaxy Nexus mit Android 4.1.1 (Jelly Bean) für HDMI-Mirroring mit Samsung HDMI-Dockingstation modifiziert und selbst kompiliert.

Ich übernehme keine Haftung für Schäden, die direkt oder indirekt durch die zur  Verfügung gestellten Informationen entstehen könnten!

Vorraussetzungen

Ein System mit installiertem 64-Bit Linux (z.B. Ubuntu 10.4 als virtuelle Maschine – laut Anleitungen beste Kompatibilität). Die benötigte Software habe ich wie auf http://source.android.com/source/initializing.html installiert – bis zum Punkt “Configuring USB Access”

Die Java-SDK (wird nicht mehr von archive.canonical.com zur Verfügung gestellt) habe ich auf folgende Weise installiert:

add-apt-repository ppa:sun-java-community-team/sun-java6
apt-get update
apt-get install sun-java6-jdk

Kernel herunterladen

Vorbereitung

Das Schwerste war herauszufinden welche Daten ich nun tatsächlich für   die Kompilierung des Kernels benötigen werde. Am Ende bin ich zum  Entschluss gekommen, dass ich folgendes von https://android.googlesource.com/ brauche:

  • /device/samsung/maguro (Branch: jb-release)
  • /kernel/omap (Branch: android-omap-tuna-3.0)
  • /platform/prebuilt (Branch: jb-release)

Herunterladen

Im Homedirectory einen Ordner “working_dir” erstellt und hineingewechselt und erstmal den maguro-Teil heruntergeladen:

git clone https://android.googlesource.com/device/samsung/maguro -b jb-release

das geht relativ rasch.

Anschließend mit “cd maguro” in den erstellten Ordner wechseln und jetzt die Kernel-Source herunterladen:

git clone https://android.googlesource.com/kernel/omap.git -b android-omap-tuna-3.0

Dieser Download wird schon etwas länger dauern. Ich glaube es waren so insgesamt ca. 600MB

Als letztes benötigt man noch die “prebuilt”-Daten. Dafür habe ich direkt in den “working_dir” Folder gewechselt und einen Ordner “toolchain” erstellt in den ich anschließend gewechselt habe:

git clone https://android.googlesource.com/platform/prebuilt -b jb-release

Dieser Download ist mit rund 3GB der größte Brocken.

Hinweis: Bei Ubuntu 10.4 wird eine relativ alte Version von git mitgeliefert. Diese hat anscheinend einen Bug und kann manchmal den Download nicht fertigstellen bzw. bricht mittendrin ab. Mir ist das nur ein Mal passiert. Ansonsten muss man die alte Version deinstallieren und eine neuere selbst installieren.

Nach dem Download muss man den richtigen “toolchain”-Ordner in die PATH-Variable aufnehmen (in meinem Fall):

export PATH=/root/working_dir/toolchain/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

Kernel für HDMI-Mirroring modifizieren

In den Ordner maguro wechseln und die Datei board-tuna-connector.c suchen (in diesem Fall omap/arch/arm/mach-omap2/board-tuna-connector.c). In der Datei folgende Zeile finden:

if (adopter_id == 0x3333 || adopter_id == 321) {

und ersetzen durch:

if (adopter_id == 0x3333) {

Kernel bauen

Folgende Parameter setzen und in den Ordner omap wechseln:

export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-

anschließend folgende Befehle ausführen:

make tuna_defconfig make

Im Ordner arch/arm/boot findet man anschließend den erstellten Kernel als “zImage”. Diese muss man anschließend in eine Flashbare zip-Datei speichern. Weitere Informationen für die Kernel-Installation findet man zum Beispiel unter http://forum.xda-developers.com/showthread.php?t=1614827

Links

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.