获取Android源码跟官方Linux内核源码
最近在探索安卓源码跟ROM,有幸买了本书跟在网上看到一些交教程,先做一些笔记,以备不时之需...
1、了解git和repo
2、环境配置
首先最先的肯定是JDK和SDK的安装,网上教程很多,也可以参考Google官方提供的: https://source.android.com/source/initializing.html
(a)安装git 和curl:
apt-get install git-core curl
(b)安装repo:
创建存放repo目录
# mkdir ~/bin
# export PATH=~/bin:$PATH
# curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo (也可以在网上下载现成的)
# chmod a+x ~/bin/repo
3、下载安卓源码
下载Android源码:
# mkdir ~/source
# cd source
# repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1 (同步指定分支,可git branch -a查看)
# repo sync
编译安卓源码:
# source build/envsetup.sh
# lunch full-eng (编译生成可在安卓模拟器上运行,也可以只输lunch 显示当前支持的所有设备,例如:full_x86-eng适合在X86架构的计算机运行)
# make -j4 (4个线程编译)
生成的文件在:~/source/out/target/product/generic 下包括镜像文件(ramdisk.img、system.img、userdata.img)
Google官方源码编译细节可在 https://source.android.com/source/building.html 了解
4、下载安卓官方Linux内核源码
git命令
# git clone http://android.googlesource.com/kernel/common.git
# git clone http://android.googlesource.com/kernel/exynos.git
# git clone http://android.googlesource.com/kernel/goldfish.git
# git clone http://android.googlesource.com/kernel/msm.git
# git clone http://android.googlesource.com/kernel/omap.git
# git clone http://android.googlesource.com/kernel/samsung.git
# git clone http://android.googlesource.com/kernel/tegra.git
其中
common:通用的Linux内核,后面6套都是以该源码为基础;
exynos :用于使用三星Exynos芯片的Android设备,典型代表是Nexus 10;
goldfish:用于Android模拟器的内核源码;
msm :用于使用高通MSM芯片的Android设备,典型代表是ADP1(G1)、ADP2(G2)、Nexus One和Nexus 4;
omap :用于使用德州仪器(TI)OMAP芯片Android设备,典型代表是PandaBoard和Galaxy Nexus;
samsung:用于使用三星Hummingbird芯片的Android设备,典型代表是Nexus S;
tefra :用于使用NVIDIA (Tefra)芯片Android设备,典型代表是Xoom和Nexus 7。
HTC手机的话,也可以在以下地址下载指定设备的Linux内核源码:
http://www.htcdev.com/devcenter/downloads
查看内核分支:
# cd common
# git branch -a
切换分支:
# git checkout remotes/origin/xxxxxxxxx
5、编译内核源码
要想编译适合在Android设备上运行的内核源码,必须要安装支持arm架构的交叉编译器,但是每个设备官方编译使用的版本不一样,必须考虑。
Nexus 7设备用的是交叉编译器4.4.3,可参考下面的命令:
# git clone https://android.googlesource.com/platform/prebuilt
# export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
# export ARCH=arm
# export CROSS_COMPILE=arm-eabi-
# make
最后在<Linux源码根目录>/arch/arm/boot 目录生成一个zImage文件,是可运行的Linux内核的二进制版本(Nexus 7)。
(也可以参考http://android.git.kernel.org/)