后面发现这个更新,多了exynos
http://blog.csdn.net/kevinshq/article/details/7830927
根据该资料写了个小脚本下载上面的所有内核代码(网络不好,所以下载多次):
#!/bin/sh -x
i=1
while [ $i -le 200 ]; do
echo "num is $i"
if [ ! -d common ]; then
git clone https://android.googlesource.com/kernel/common.git
fi
if [ ! -d exynos ]; then
git clone https://android.googlesource.com/kernel/exynos.git
fi
if [ ! -d goldfish ]; then
git clone https://android.googlesource.com/kernel/goldfish.git
fi
if [ ! -d msm ]; then
git clone https://android.googlesource.com/kernel/msm.git
fi
if [ ! -d omap ]; then
git clone https://android.googlesource.com/kernel/omap.git
fi
if [ ! -d samsung ]; then
git clone https://android.googlesource.com/kernel/samsung.git
fi
if [ ! -d tegra ]; then
git clone https://android.googlesource.com/kernel/tegra.git
fi
i=$((i+1))
sleep 1
done
http://maricoliu.iteye.com/blog/1396766
编译android源码时并不会自动编译android内核,因此需要手动编译这部分代码。编译内核所用的时间比编译android源码要少得多。
1、确定内核版本
建立一个存放android内核源码的kernel目录,进入该目录,并使用如下命令下载内核源码
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git clone https://android.googlesource.com/kernel/tegra.git
我只下载了common.git与goldfish.git,以goldfish为例,进入goldfish目录
common goldfish
root@ubuntu:/work_dir/kernel# cd goldfish/
* master
remotes/origin/HEAD -> origin/master
remotes/origin/android-goldfish-2.6.29
remotes/origin/master
输入以下命令选择当前的最新版本(goldfish为android的模拟器描述的CPU):
再次输入命令git branch -a,将会显示刚刚选择的最新分支,表示目前工作在这个被选择的分支上,输出如下:
* android-goldfish-2.6.29
master
remotes/origin/HEAD -> origin/master
remotes/origin/android-goldfish-2.6.29
remotes/origin/master
2、设定环境变量
在编译android内核时,需要使用交叉编译器。在所下载的android源码树中有一个prebuilt文件夹,包含了编译内核所需的交叉编译工具,因此要将其设置到环境变量中去,以方便使用。打开用户目录下的.bashrc文件,在后面添加如下代码
export ARCH=arm
保存并退出,通过以下命令在用户目录下进行更新。
由于有可能在添加之后没有及时更新,导致在编译时提示错误,如找不到交叉编译工具目录等,因此这里需要更新(如果加入了环境变量仍在编译时提示找不到交叉编译工具目录,可以尝试多更新几次)。
3、设定交叉编译参数
在编译之前还需要设定编译时所使用的交叉编译参数。
首先,打开android/kernel/goldfish/目录下的Makefile文件,找到CROSS_COMPILE变量,将其指向android源码提供的prebuilt中的arm-eabi编译器,代码如下所示:
之后找到如下代码:
$(call ld-option, -Wl$(comma)--build-id,))
# $(call ld-option, -Wl$(comma)--build-id,))
LDFLAGS_BUILD_ID =
4、编译内核源码
设置完之后,就是编译android内核源码了,进入goldfish目录,输入以下命令
$make
第一条命令为编译时的默认配置文件。如果不执行这条命令,编译时可能会提示“找不到配置文件”。第一条命令执行完后,会在goldfish目录下生成一个.config文件。
之后便是一段时间的等待了。。。时间不长,一会即可编译好,比编译android源码时间要少得多。
5、编译完成之后,会在“kernel/goldfish/arch/arm/boot/”目录下生成名为zImage的文件。
如果你已经编译了SDK,可以进入SDK所在目录,使用 "- kernel" 加载编译出来的zImage启动模拟器
android 源码域名变更 kernel download (下载)方法
http://blog.csdn.net/wenwei202/article/details/7032759对于开发android驱动或者进行android移植和定制的同仁们来说,获取android kernel源代码是必不可少的。
遗憾的是,google的android.git.kernel.org由于受到黑客攻击,已经停用,域名移至:
android.googlesource.com
而官方网站也未提供kernel的在线浏览,因此只能下载kernel再阅读了,显然,如下方法不可能再下载到你想要的代码了
git clone git://android.git.kernel.org/projects/kernel/common.git/
根据自己的需要,选择如下新指令之一,下载对应的kernel的:
goldfish为模拟器中模拟的arm cpu
msm为高通公司的处理器
omap为TI公司的处理器
$ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git clone https://android.googlesource.com/kernel/tegra.git
特此与csdn同仁共享。
其余指令请参考:http://source.android.com/source/downloading.html
我下载omap kernel的过程如下:
ossie@ossie-desktop:~/android$cd ./kernel_omap_ww/
ossie@ossie-desktop:~/android/kernel_omap_ww$ git clone https://android.googlesource.com/kernel/omap.git
Initialized empty Git repository in /home/ossie/android/kernel_omap_ww/omap/.git/
remote: Counting objects: 169, done
remote: Counting objects: 2092554, done
remote: Finding sources: 100% (8436/8436)
remote: Getting sizes: 100% (1034/1034)
remote: Compressing objects: 100% (506/506)
Receiving objects: 100% (2091981/2091981), 429.91 MiB | 30 KiB/s, done.
remote: Total 2091981 (delta 1750194), reused 2091697 (delta 1750078)
Resolving deltas: 100% (1750441/1750441), done.
ossie@ossie-desktop:~/android/kernel_omap_ww$ ls -a
. .. omap
ossie@ossie-desktop:~/android/kernel_omap_ww$ cd ./omap/
ossie@ossie-desktop:~/android/kernel_omap_ww/omap$ git branch -r
origin/HEAD -> origin/master
origin/android-omap-3.0
origin/android-omap-panda-3.0
origin/android-omap-tuna-3.0
origin/android-omap-tuna-3.0-mr0
origin/linux-omap-3.0
origin/master
ossie@ossie-desktop:~/android/kernel_omap_ww/omap$ git checkout origin/android-omap-3.0 -b android-omap-3.0
Checking out files: 100% (37532/37532), done.
Branch android-omap-3.0 set up to track remote branch android-omap-3.0 from origin.
Switched to a new branch 'android-omap-3.0'
ossie@ossie-desktop:~/android/kernel_omap_ww/omap$ ls
arch Documentation init lib README sound
block drivers ipc MAINTAINERS REPORTING-BUGS tools
COPYING firmware Kbuild Makefile samples usr
CREDITS fs Kconfig mm scripts virt
crypto include kernel net security
ossie@ossie-desktop:~/android/kernel_omap_ww/omap$