一、什么是Android?
Android作為Google公司推出的一款手機開發平臺,其本身是基于linux內核的。Google提供的內核源代碼中除了linux部分外,有很大一部分是與虛擬處理器Qemu和模擬硬件平臺Goldfish相關的。所以如果想將Android移植到實際的硬件平臺上需要將這部分代碼剝離出來。
二、搭建開發環境
2.1在Vmware中的安裝和設置Ubuntu Server 8.10
本文選擇在Win XP下的Vmware中安裝Ubuntu Server 8.10作為編譯開發服務器。
安裝: 略。
設置:
1. 為網卡配置靜態IP地址
虛擬機和XP連接用的虛擬網卡設置IP,gateway和DNS都為192.168.0.1。
在Vmware虛擬機中執行:
sudo vi /etc/network/interfaces 加入:
auto eth0
iface eth0 inet static
address 192.168.0.2
gateway 192.168.0.1
netmask 255.255.255.0
2. 配置DNS
sudo vi /etc/resolv.conf
nameserver 192.168.0.1
3. 安裝開發工具
sudo apt-get install build-essential vim libncurses-dev lrzsz
4. 清理系統
sudo apt-get clean
2.2 建立Android內核開發環境
1、工作環境及所需軟件包
1)系統環境:Ubuntu 8.10 server
2)交叉編譯器:GNU Toolchain for ARM Processors
(http://www.codesourcery.com/gnu_toolchains/arm/download.html)
本文用:arm-2008q3-66-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
3)Android內核源代碼:linux-2.6.23-android-m5-rc14.tar.gz
(http://code.google.com/p/android/downloads/list)本文用:linux-2.6.25-android-1.0_r1.tar.gz
4)Android SDK
(http://code.google.com/android/download_list.html)
SDK中帶有Android Emulator仿真器等工具,本文用:android-sdk-linux_x86-1.0_r2.zip
2、搭建交叉編譯環境
安裝好系統后,把下載的Android kernel,交叉編譯器和Android SDK都放在/home/xxx目錄,xxx是安裝系統時的普通用戶的用戶名。
1) 安裝交叉編譯器
$cd ~
$mkdir tools
$cp arm-2008q3-66-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 tools
$cd tools
$tar jxvf arm-2008q3-66-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
2) 解壓Android SDK
$cp ~/android-sdk-linux_x86-1.0_r2.zip ~/tools
$cd ~/tools/
$unzip android-sdk-linux_x86-1.0_r2.zip
3) 解壓縮內核源代碼
$mkdir sources
$cp linux-2.6.25-android-1.0_r1.tar.gz sources
$cd sources
$tar zxvf linux-2.6.25-android-1.0_r1.tar.gz
$mv kernel.git linux-2.6.25-android-1.0_r1
三、編譯和運行Android Kernel
1) 獲取Android官方的默認內核配置文件.config
這個.config文件可以從SDK中得到。啟動android模擬器,然后用adb從模擬器中提出內核配置文件:
$~/tools/android-sdk-linux_x86-1.0_r2/tools/emulator &
$adb pull /proc/config.gz ~/
$mv ~/ ~/sources/linux-2.6.25-android-1.0_r1
$cd ~/sources/linux-2.6.25-android-1.0_r1
$ gunzip config.gz
$ mv config .config
2)編譯
$~/mk-kernel.sh sources/linux-2.6.25-android-1.0_r1/
其中mk-kernel.sh腳本如下:
#!/bin/sh
#Simple script for Android Kernel compiling.
#By Neil Chiao, Mar.14,2009
export PATH=$PATH:/home/neil/tools/arm-2008q3/bin
export CROSS_COMPILE=arm-none-eabi-
cd $1||exit 1
make menuconfig
make
3)運行該鏡像
$cd ~/tools/android-sdk-linux_x86-1.0_r2/tools/
$./emulator -kernel ~/sources/linux-2.6.25-android-1.0_r1/arch/arm/boot/zImage
/*
*By Neil Chiao (neilchiao at gmail.com)
*轉載請注明出處:neilengineer.cublog.cn
*/