CAP2011012613141

Cross-Compiling Android Kernel – Samsung GALAXY SPICA I5700

This blog post has been published on 2011-01-26 and may be out of date.

Hier möchte ich kurz erklären wie du mit Ubuntu (oder wie in meinem Fall Lubuntu) den Kernel von deinem Spica neu kompilieren kannst.

 

CAP2011012613141
CAP2011012613141

 

1.) Pakete nachinstallieren
aptitude install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev gawk texi2html texinfo automake libtool cvs gcj git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev texinfo gcj

 

2.) crosstool-ng installieren
cd ~
wget http://ymorin.is-a-geek.org/download/crosstool-ng/crosstool-ng-1.9.2.tar.bz2
tar -xjf crosstool-ng-1.9.2.tar.bz2
cd crosstool-ng-1.9.2/
./configure --prefix=${HOME}/ctng
make
make install

 

3.) Cross-Compiling installieren
export PATH=${PATH}:${HOME}/ctng/bin
cd ~
mkdir toolchain-build
cd toolchain-build

wget http://suckup.de/uClibc-0.9.31.config
wget http://suckup.de/toolchain-build.config
mv toolchain-build.config .config

ct-ng menuconfig
"C-library"  ---> (${HOME}/toolchain-build/uClibc-0.9.31.config) Configuration file 
ct-ng build
Abwarten… und hoffen ;-)

 

———-
ggf. muss man vorher noch die Quellen ändern, falls der Server auf der Gegenseite mal gerade nicht antwortet, in diesem (meinen) Fall war dies “mpfr” …
cd ~/ctng
grep -Ri mpfr * | grep get
vim lib/ct-ng-1.9.2/scripts/build/companion_libs/mpfr.sh
… nun habe ich in der Funktion “do_mpfr_get” die URL zu der angegebenen Datei ersetzt, fertig! Alternativ kann man die Dateien auch per Hand herunterladen und in das Verzeichnis ~/toolchain-build/targets/tarballs/ kopieren… ;-)
———-

 

4.) Kernel-Quellen per git herunterladen und anpassen
cd ~
mkdir i5700.2
cd i5700.2
git clone git://github.com/ch33kybutt/i5700-initramfs-froyo-2.6.29.6
mkdir kernel
cd kernel
git clone git://github.com/ch33kybutt/i5700-kernel
cd i5700-kernel
Nun den Pfad zum initramfs anpassen …
vim config.0.1
z.B.: (lars durch deinen User-Namen ersetzen)
[...]
CONFIG_INITRAMFS_SOURCE="/home/lars/i5700.2/i5700-initramfs-froyo-2.6.29.6/"
[...]
cp config.0.1 .config
… und auch die nächste Datei müssen wir ein wenig anpassen … (wobei ich dies per vim erledigt habe! :wq zum speicher)
vim /home/lars/i5700.2/i5700-initramfs-froyo-2.6.29.6/initrd.arm.initramfs_list
:%s/\/home\/ch33kybutt\/kernel\/i5700-initramfs-froyo-2.6.29.6\//\/home\/lars\/i5700.2\/i5700-initramfs-froyo-2.6.29.6\//g
vim Makefile
[...]
CROSS_COMPILE  := /home/lars/ownapps/arm-spica-linux-uclibcgnueabi/bin/arm-spica-linux-uclibcgnueabi-
[...]

 

5.) Cross-Compiling konfigurieren

make menuconfig
"General setup" -> Initramfs source file ("/home/lars/i5700.2/i5700-initramfs-froyo-2.6.29.6/initrd.arm.initramfs_list")
ggf. Versionsnummer etc. anpassen:
vim ~/i5700.2/i5700-initramfs-froyo-2.6.29.6/init.rc

 

6.) Cross-Compiling durchführen
Habe meinen Kernel mit folgenden FLAGS kompiliert… wenn jemand eine bessere Lösung hat würde ich dieser gerne hören…
make
cd ~/i5700.2/kernel/i5700-kernel/arch/arm/boot/
tar -cvf new_kernel_PDA.tar zImage

 

7.) neuen Kernel auf dem Android installieren
oder man versucht dies per ADB, habe dies jedoch noch nicht getestet…
adb push zImage /sdcard
adb shell
/xbin/bml_flash boot /sdcard/zImage

 

weitere Infos:

Published by

voku

Lars Moelleken | Ich bin root, ich darf das!

%d bloggers like this: