After a month spending my time on the tyrolian mountains (snowboarding) I got a level head and decided to post how to build an android image for the neo freerunner (gta02) from the git repository!
My pre-built image can be found here.

Here we go:
Development machine:
- Asus eeePC 4G
- Processor: Intel Celeron M 900MHz @ 630Mhz
- RAM: 507732 kB
- Swap1: 224868 kB
- Swap2: 4393768 kB
- HDD: 250 GB external iomega (fs: ext3)
- OS: debian 4.0 rc6
- Kernel: 2.6.26-1-686
- Environment: /bin/bash
Target:
- Neo FreeRunner gta02
- Screen: 2.84″ (480×640 pixels)
- Processor: 400 MHz ARM
- RAM: 128 MB
- Flash memory: 256MB
- MicroSD Slot (2GB Nokia)
- Connectivity: GPS (u-blox ANTARIS 4 ATR0635) – bluetooth – WiFi (Atheros) – USB – GSM and GPRS
- 2 3D accelerometers
Preparing the development machine:
Installing the needed packages
git and gnupg:
apt-get install git-core gnupg
Java JDK 5 – update 12 or higher:
apt-get install sun-java6-jdk
and some more:
apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev mtd-tools
and the last package is the toolchain:
wget http://trac.koolu.org/attachment/wiki/Toolchain/android-toolchain_20081019-koolu1_i386.deb
dpkg -i android-toolchain_20081019-koolu1_i386.deb
Preparing the target machine:
It’s not a hard work, we just have to create two primary partitions on the memory-card and format them
You should use at least a 1GB memory-card (for me, in my case 2GB)
We have to create two partitions
One VFAT – FAT16/FAT32 partition which acts as the storage area
and one ext3 partition which is needed for android /data area (cache, sms, contacts, etc.)
That’s how it should look like:
sdb1 Primary FAT16 999,94
sdb2 Primary Linux 1031,94
Now we can start to sync the git repository:
Here’s a guide to make directories, downloading the tools and sync the repository step by step:
curl http://android.git.kernel.org/repo > /bin/repo
chmod a+x /bin/repo
mkdir /mydroid
cd /mydroid
repo init -u git://git.koolu.org/freerunner/platform/manifest.git
repo sync
this can take a while 
When the sync is finished, it’s time to configure and compile the source:
First we have to configure the make file by typing:
choosecombo
LEAVE EVERYTHING HOW IT IS – JUST ADJUST THE PRODUCT JOICE TO USE FREERUNNER LIKE THIS:
Product choices are:
0. emulator
1. generic
2. sim
3. freerunner
which would you like? [generic] 3
First step is done, now start compiling the source by typing:
make TARGET_PRODUCT=freerunner TARGET_TOOLS_PREFIX=/opt/android-toolchain/bin/armv4t-android-eabi-
This takes a long time – go and make yourself a cup of coffee 
When it’s finished, make an jffs2 image:
The easiest way is to use a script. (It’s by SeanMcNeil – I changed it a little bit, just to do the commands without sudo)
Just type the following command:
sh image_generate.sh release myandroidfs.jffs2
Now there is supposed to be a file called “myandroidfs.jffs2″.
The script can be found here
Now it’s time to flash the generated image into your phone:
First flash the kernel: (can be found here)
dfu-util -a kernel -R -D uImage-moredrivers-GTA02_android_458301db547e5375.bin
Now you flash the root-filesystem into your phone:
dfu-util -a rootfs -R -D myandroidfs.jffs2
YOU ARE DONE NOW – RESTART THE PHONE AND IT SHOULD START IN YOUR NEW ANDROID-OS
IF THE KERNEL DOESN’T BUT, OR YOU GET AN “BAD CRC” ERROR, PLEASE READ THE FIRST ENTRY IN THE FOLLOWING “KNOWN BUGS” LIST
KNOWN PROBLEMS:
##################################################
If the kernel doesn't start or you get an "BAD CRC" error follow this:
1. The easiest way:
Just flash the "qi-bootloader" into the NAND-memory of your phone (the u-boot-bootloader will still be on the phone(NOR-flash)):
dfu-util -a u-boot -R -D qi-s3c2442-master_a2d11c4dd18c9517.udfu
The qi-bootloader could be found here
ATTENTION: This version of qi is only for gta02 devices!
2. The hard way:
The harder way is to increase your uboot environment, because it only accepts a kernel with an size small than 2MB:
First plugin the phone and start it into the uboot-environment (AUX+power button)
On the development machine:
Change the owner on device:
chown uucp.uucp /dev/ttyACM0
Open console to device:
cu -l /dev/ttyACM0
Increase the memory:
setenv bootargs ${bootargs_base} ${mtdparts}; nand read.e 0x32000000 kernel; bootm 0x32000000
Save the parameters:
saveenv
Everything should work now!
##################################################
##################################################
If you get error messages like that:
build/core/api/1.xml:273231: error 1: required string: "method"
You have to follow these instructions:
apt-get install eclipse sun-java6-jdk
update-java-alternatives -s java-6-sun
Now try again!
##################################################
I heared that some people had problems compiling the source.
So, if you get errors like:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
target Dex: framework
make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.dex]
it's probably a memory problem. I read that you need at least 1024MB RAM.
If you don't have such an environment you can extend your swap partition (example: swapon /dev/sdb2)
REMEMBER: The filesystem must be linux-swap
##################################################
cheerio, chaos