红联Linux门户
Linux帮助

Ubuntu下Android的内核和文件系统编译

发布时间:2015-04-18 10:57:12来源:csdn作者:Siobhan

1 、下载内核和文件系统

1.1 下载文件系统

1)Git的安装
在 Ubuntu上安装 git只要设定了正确的更新源,然后使用 apt-get就可以了,有什么依赖问题,就让它自己解决吧。其中 curl是一个利用 URL语法在命令行下工作的文件传输工具,会在后面安装 Repo的时候用到。 (貌似 Ubuntu已经默认安装了 git1.7.04,所以这步就不需要了 )

sudo apt-get install git-core curl

2)安装 Repo
首先确保在当前用户的主目录下创建一个 /bin目录(如果没有的话),然后把它 (~/bin)加到 PATH环境变量中接下来通过 curl来下载 Repo脚本,保存到 ~/bin/repo文件中
curl http://Android.git.kernel.org/repo >~/bin/repo

别忘了给 repo可执行权限
chmod a+x ~/bin/repo

3)初始化版本库
如果是想把 Android当前主线上最新版本的所有的 sourcecode拿下来,我们需要 repo的帮助。先建立一个目录,比如 ~/myandroid,进去以后用

repo init命令即可。
repo init -u git://android.git.kernel.org/platform/manifest.git
最后会看到 repo initialized in /android这样的提示,就说明本地的版本库已经初始化完毕。

4)下载 Android代码
运行如下命令 $ repo sync

5.)du -sk 或 du -sm 可看文件夹容量大小

1.2Git 下载 android linux kernel 源码

1)mkdir ~/android_kernel
2) cd ~/android_kernel
3) git clone git://android.git.kernel.org/kernel/common.git (下载默认版本内核源码)

下面是 git常用的命令示例:
4) cd common
5) git branch(查看当前分支,结果为 android-2.6.27)
6) git branch -r(显示远程 branch列表)


2、编译内核和文件系统

2.1 编译文件系统

1 )根据 andoird 官方网站的说明,如果你想编译文件系统,需要安装一些 Packages

$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

系统提供了默认下载软件包的地址 ,但是速度较慢。服务器的地址在 /etc/apt/sources.list 中

设置 ,可以采用附件中的地址 ,或者在网上寻找相关的网址,注意需要保证操作系统的版本 一致。

2)安装 JDK1.5

在编译 Android 过程中 , 需要 JDK1.5, 即使系统里已经安装了 JDK1.6, 也需要重新安装 JDK1.5, 并设置 $ANDROID_JAVA_HOME 为 JDK1.5 的根目录。为了安装 JDK1.5, 需要添加如下内容到 /etc/apt/sources.list 文件末尾

deb http://tw.archive.Ubuntu.com/ubuntu/ jaunty main restricted universe multiverse

deb-src http://tw.archive.ubuntu.com/ubuntu/ jaunty main restricted universe multiverse

sudo apt-get update

sudo apt-get install sun-java5-jd

注释掉 /etc/apt/sources.list 中刚刚添加的两行

sudo apt-get update

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun( 根据具体的安装路径 )

export ANDROID_JAVA_HOME=$JAVA_HOME

3)编译

cd ~/myandroid/

make

编译时一个漫长的过程 , 需要耐心的等待。我在编译的过程中遇到一些问题 , 大部分是由于

软件包没有完全安装 , 编译完成后会在 ~/myandroid/out/target/product/generic 下产生一些

image 文件

大功告成 , 运行模拟器

export ANDROID_PRODUCT_OUT=/usr/open_src/android/out/target/product/generic

cd /usr/open_src/android/out/host/linux-x86/bin

./emulator

2.2 编译内核

1) 进入内核目录

cd ~/android_kernel/

2 )获取内核编译配置文件
编译前需要得到 android 的内核编译参数的配置文件,该文件需要从 android sdk 中的模拟器中得到。启动 android 模拟器,然后通过 adb 得到模拟器中提供的内核配置文件:
$emulator &
$adb pull /proc/config.gz
这时候 adb 工具会连接模拟器,并从它里面下载一个叫做 config.gz 的文件到你的当前目录下。将其移动至 kernel 目录,解压该文件得到 config ,将其重命名为 .config ,这样就可以跳过 make config 而直接得到 Makefile 所需要的内核配置文件。

$ gunzip config.gz
$ mv config .config


3、修改 Makefile
修改第 187 行,将 CROSS_COMPILE 值改为 ~/myandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi- ,我用了 andoird 提供的交叉编译工具,如果你只是想单独编译内核,那么需要单独下一个交叉编译工具,并将修改 CROSS_COMPILE 的值。修改此处意在告诉 make 在编译的时候要使用该工具链。


4、开始编译
在 kernel 目录下执行 make:
$ make
除个别警告外编译过程一切顺利,最终在 /kernel/arch/arm/boot 目录下面生成一个 zImage ,即为编译好的内核镜像了。