1 、下载内核和文件系统
1.1 下载文件系统
1) Git的安装
在 Ubuntu 10.04上安装 git只要设定了正确的更新源,然后使用 apt-get就可以了,有什么依赖问题,就让它自己解决吧。其中 curl是一个利用 URL语法在命令行下工作的文件传输工具,会在后面安装 Repo的时候用到。 (貌似 Ubuntu10.04已经默认安装了 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 中
设置 ,可以采用附件中的地址 ,或者在网上寻找相关的网址 ,www.linuxidc.com注意需要保证操作系统的版本 一致。
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 的值。(可以参照http://www.linuxidc.com/Linux/2010-08/27630.htm )修改此处意在告诉 make 在编译的时候要使用该工具链。
4. 开始编译
在 kernel 目录下执行 make:
$ make
除个别警告外编译过程一切顺利,最终在 /kernel/arch/arm/boot 目录下面生成一个 zImage ,即为编译好的内核镜像了。