Minimal-FS Build Guide

From OMAPpedia

(Difference between revisions)
Jump to: navigation, search
Line 4: Line 4:
{{Build Kernel}}
{{Build Kernel}}
{{OE Builder}}

Latest revision as of 16:00, 21 December 2010

Host Environment

Ubuntu is the recommended Linux distribution for this setup. Other distributions are available, however the configurations listed in this wiki currently only covers Ubuntu. Ubuntu is available for download at:

Note: Around 10GB of hard disk space is required to build one release of Android.


Below is a list of packages needed for building, testing, and/or debugging a OMAP development platform. These packages can be download from host's distribution package management system or through "apt-get install command".


[edit] Working around Ubuntu's Firewall

"Git" is a great tool and does work behind proxy's / firewalls with a little help. There are many ways to do this however this section will only cover "corkscrew".


Download "corkscrew" at Corkscrew and un-tar it.

cd corkscrew-2.0
cp corkscrew ~/bin/corkscrew

This can be placed anywhere as long as it is in PATH. Next create the following simple shell script called git-proxy in ~/bin directory (or some place listed in PATH).Replace items inbetween "<...> with the correct information.

exec <path_to_corkscrew>/corkscrew <proxy_name> <proxy port> $*

Save the file and give it execute permissions

chmod u+x git-proxy

Run it to test it. It should give the usage statement for corkscrew.

Now tell git you want to use a proxy. Replace the stuff between the "<...>" and don't leave out the single quotes.

git config --global core.gitproxy '<path_to_proxy>/git-proxy'

This will setup "git" to always use the proxy for all git commands, with all git trees. To set the proxy for just a specific git tree execute instead something similar to the following. The below command configures "git" to use the proxy for all URLs with a suffix.

git config --global core.gitproxy '"<path to proxy>/git-proxy"; for' 'for$'

Ubuntu's Firewall setting

Configure Ubuntu's "Network Proxy" appropriately to get access to source code

Configure the Proxy for the package manager:

Configure "http_proxy" and "ftp_proxy" environmental variable: If there is a need to use a proxy server to access the web set the environment variables "http_proxy" and "ftp_proxy". This will allow "apt-get" etc. to use this environment variable value. Below would be the ideal way of assigning values for "http_proxy":

export http_proxy=”<proxy-server>:<port>”  
export ftp_proxy="<proxy-server>:<port>"

Add this to ~/.bashrc so that everytime the machine is rebooted this variable does not have to be exported.

[edit] ARM Cross Compiler

CodeSourcery ARM Compiler version 2009q3-67 is used for building different distributions on OMAP platforms. Visit for more information.

The current cross compiler build release can be downloaded 2009q3-67. Different versions may be required depending on build requirements.

The previous cross compiler build release can be downloaded 2008q3-72.

Add Compiler directory to PATH:

export PATH=$PATH:/<toolchain_folder>/bin/

[edit] Bootloader

For more information regarding bootloader visit the Bootloader Project

The OMAP4 dedicated instructions are described below:

mkdir bootloader
cd bootloader
git clone git://
cd u-boot
git checkout <latest L24.x tag>
make ARCH=arm distclean
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap4430sdp_config
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

=> Generates: ./u-boot.bin

cd ..
git clone git:// 
cd x-loader
git checkout <latest L24.x tag>

(note that both u-boot and x-loader folders must be at the same directory level)

make ARCH=arm distclean 
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap4430sdp_config 
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- ift

=> Generates ./MLO

The generated MLO and u-boot.bin files will have to be copied on the SD card.

Note: To get the list of L24.x tags, once in the cloned u-boot or x-loader folder, type:

git tag | grep L24

[edit] Building Linux Kernel

Download and check out kernel using git
$ git clone git:// 
$ git clone git:// 

Visit Source Trees page for a list of all source tress available.

Git check-out
$ git branch -a (list all branches available)
$ git checkout -b <name of local branch> <select a branch to base local on>
$ cd <kernel-omap dir>

Visit the Development Toolbox for more links on "git".

Selecting a Board config file

Supported platform config files are listed in the configs directory

$ ls <kernel-omap dir>/arch/arm/configs/

Select a OMAP Platform

$ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm <omap platform based on config file>
Changing configuration options
$ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm menuconfig
Building kernel
$ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm uImage
uImage located at <kernel-omap dir>arch/arm/boot/

Note: CROSS_COMPILE can be added to your environment variables.

Personal tools