android kernel build for samsung omnia


Complete steps for booting the android linux kernel (updates follow as we progress):

Install Dev Environment:

apt-get install linux-headers-$(uname -r) gcc make kernel-package libncurses5-dev fakeroot wget bzip2 git-svn curl


Download Cross Compiler

Select: GNU/Linux (and then Advanced Packages / IA32 GNU/Linux TAR)


Download and Unpack Cross Compiler

# wget
# cd /usr/local ; tar -xjvf /tmp/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2


Download Kernel (Thans to Oliver Ford!)
# git clone v4


Change in Makefile:

# vi /ANDROID/v4/Makefile

ARCH ?= arm
CROSS_COMPILE ?= /usr/local/xscale/arm-2008q3/bin/arm-none-linux-gnueabi-


Adjust resolution (Thanks to z720!)
open the /arch/arm/mach-pxa/hpipaq214-lcd.c and change the folowing parameters:

.xres = 240 
.yres = 400
.pixclock = 96153.


Compile kernel:
make Image
The compiled and with Haret runable image will be in "arch/arm/boot/Image"

Download Haret (I used the PXA312 version from Oliver Ford from

Change Haret Settings (default.txt)

set kernel "Image"
Set ramaddr 0xa0000000
Set RAMSIZE 0x04000000
Set cmdline "root=179:2 rootdelay=3 rw init=/sbin/init"
Set mtype 1653
Set kernelcrc 0
Set fbduringboot 1
Set forcefbduringboot 1


If you copy the compiled Image to the directory in which you placed Haret, you should be off, the kernel will boot.. Mind you, this is just the booting kernel, the hard work will start from here!


Cross Compile busybox with static linking:
cd busybox-1.13.2/
Change Makefile to have the cross compiler active again:

ARCH            ?= arm
CROSS_COMPILE   ?= /usr/local/arm-2008q3/bin/arm-none-linux-gnueabi-


Make the static busybox (make menuconfig first and disable all non wanted busybox commands, leave ash, init, rclinux and telnetd active for later use!):
# LDFLAGS="--static" CFLAGS="--static" make
# file busybox
busybox: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped
Copy the busybox to the new initrd directory:
# cp busybox /ANDROID/initrd
# cd /ANDROID/initrd
# ln -s busybox init
# ln -s busybox ash
# ln -s busybox rclinux
# mkdir dev; mkdir sys ; mkdir proc
# cp -dpr /dev/ttys1 /dev/ttys2 /dev/ttys3 /dev/ttys4 /ANDROID/initrd/dev
Make the initrd.gz ramdisk fromout the initrd directory
# find . | cpio --create --'format=newc' | gzip >../initrd.gz
Copy it to the directory in which the kernel is placed...
Change default.txt cmdline:

Set cmdline "root=/dev/ram0 ramdisk_size=8192 rootdelay=5 rootwait rw init=/ash lpj=loops_per_jiffy boot_delay=100"


Boot and see why we need a keyboard now Next step is maybe auto configure network and start telnetd in the ramdisk
Hi, I read the thread about running Android on the Kaiser and was very interested to get at least a linux kernel running on my phone.. However no luck..
Well.. Tried to compile the kernel for this specific architecture (PXA312) with the gnueabi toolchain. The android kernel compiled fine with some minor changes. After that, i tried to start the kernel with HaRET but could not get it to start. I cannot determine the RAMADDR and the mtype for the omnia.
HaRET does not seem to recognize the omnia's PXA312... Also i cannot determine the mtype for this.. Anyone have any ideas on how to get the kernel to boot???

Last edited by us1111; 10th February 2009 at 04:44 PM..

'Computing' 카테고리의 다른 글

android omnia kernel build  (0) 2010.02.04
android omnia porting current status  (0) 2010.02.04
android kernel build for samsung omnia  (0) 2010.02.04
Windows Mobile / DirectShow / SampleGrabber  (0) 2010.02.04
omnia에 android 설치  (0) 2010.01.15
pda rom dump  (0) 2010.01.15
트랙백 0 댓글 0
prev 1 ··· 17 18 19 20 21 22 23 24 25 ··· 57 next