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
- How to compile a kernel – http://forum.xda-developers.com/archive/index.php/t-1774035.html
- Initializing a Build Environment – http://source.android.com/source/initializing.html
- GALAXY NEXUS TOOLKIT – http://forum.xda-developers.com/showthread.php?t=1614827
- Howto reenable HDMI mirroring on GNexus portrait dock for Android 4.0.3 and up – http://rootzwiki.com/topic/29281-howto-reenable-hdmi-mirroring-on-gnexus-portrait-dock-for-android-403-and-up/
- Installing sun-java6-jdk with apt-get on Ubuntu 10.04 – http://superuser.com/questions/394770/installing-sun-java6-jdk-with-apt-get-on-ubuntu-10-04
Kommentare