这个页面的细节如何构建只有内核。 下面的说明 假设您没有下载所有AOSP;如果你已经这么做了,你可以 跳过git clone除了步骤下载内核的步骤 来源。
在这一节中使用所有的例子panda内核。
找出哪个内核
此表列出了内核源代码和二进制文件的名称和位置:
设备 | 二进制位置 | 源位置 | 编译配置 |
---|---|---|---|
shamu | device/moto/shamu-kernel | kernel/msm | shamu_defconfig |
fugu | device/asus/fugu-kernel | kernel/x86_64 | fugu_defconfig |
volantis | device/htc/flounder-kernel | kernel/tegra | flounder_defconfig |
hammerhead | device/lge/hammerhead-kernel | kernel/msm | hammerhead_defconfig |
flo | device/asus/flo-kernel/kernel | kernel/msm | flo_defconfig |
deb | device/asus/flo-kernel/kernel | kernel/msm | flo_defconfig |
manta | device/samsung/manta/kernel | kernel/exynos | manta_defconfig |
mako | device/lge/mako-kernel/kernel | kernel/msm | mako_defconfig |
grouper | device/asus/grouper/kernel | kernel/tegra | tegra3_android_defconfig |
tilapia | device/asus/grouper/kernel | kernel/tegra | tegra3_android_defconfig |
maguro | device/samsung/tuna/kernel | kernel/omap | tuna_defconfig |
toro | device/samsung/tuna/kernel | kernel/omap | tuna_defconfig |
panda | device/ti/panda/kernel | kernel/omap | panda_defconfig |
stingray | device/moto/wingray/kernel | kernel/tegra | stingray_defconfig |
wingray | device/moto/wingray/kernel | kernel/tegra | stingray_defconfig |
crespo | device/samsung/crespo/kernel | kernel/samsung | herring_defconfig |
crespo4g | device/samsung/crespo/kernel | kernel/samsung | herring_defconfig |
在确定你想要的设备项目,查看git日志 内核二进制。 设备项目使用表单device/<vendor>/<name>
。
$ git clone https://android.googlesource.com/device/ti/panda
$ cd panda
$ git log --max-count=1 kernel
内核二进制的提交消息包含的部分git日志 用于构建二进制内核来源。 日志是最中的第一项 近期(一个用于构建内核)。 记下的提交消息 当你需要它在以后的步骤。
识别内核版本
确定所使用的内核版本系统映像,运行以下 命令对核的文件:
$ dd if=kernel bs=1 skip=$(LC_ALL=C grep -a -b -o $'\x1f\x8b\x08\x00\x00\x00\x00\x00' kernel | cut -d ':' -f 1) | zgrep -a 'Linux version'
Nesux5(锤头),该命令是:
$ dd if=zImage-dtb bs=1 skip=$(LC_ALL=C od -Ad -x -w2 zImage-dtb | grep 8b1f | cut -d ' ' -f1 | head -1) | zgrep -a 'Linux version'
下载来源
下载内核的源代码你想构建使用适当的git clone命令:
$ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/x86_64.git
$ git clone https://android.googlesource.com/kernel/exynos.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
goldfish项目包含仿真内核源代码 平台。
msm项目的来源ADP1 ADP2,Nexus One,Nexus 4,Nexus 5,Nexus 6, 并可以作为一个起点在MSM高通芯片的工作。
omap项目是用于PandaBoard和Galaxy Nexus, 并可以作为一个起点在TI OMAP芯片工作。
samsung项目是用于Nexus S, ,可以用来作为工作的起点三星蜂鸟芯片组。
tegra项目是Xoom,Nexus 7,Nexus 9日 并可以作为一个起点NVIDIA Tegra芯片组。
exynosNexus 10项目内核源代码, ,可以用来作为工作的起点三星Exynos芯片组。
x86_64项目有内核源代码Nexus的球员, ,可以用来作为工作的起点英特尔x86_64芯片组。
下载一个预先构建的gcc
确保预先构建的工具链在你的路径:
$ export PATH=$(pwd)/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH
或
$ export PATH=$(pwd)/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.6/bin:$PATH
在Linux主机上,如果你没有一个Android源代码树,您可以下载 的预先构建的工具链:
$ git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6
编译内核
当你知道过去的内核和已经成功提交消息 下载内核源和预先构建的gcc,您已经准备好构建 内核。 下面的构建命令使用熊猫内核:
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd omap
$ git checkout <commit_from_first_step>
$ make panda_defconfig
$ make
建立一个不同的内核,简单地取代panda用这个名字 您想要构建的内核。
内核二进制输出arch/arm/boot/并且可以复制到Android源代码树构建匹配的引导映像。 或者,您可以包括TARGET_PREBUILT_KERNEL变量在使用make bootimage(或任何其他命令行 构建一个引导映像)。 这个变量支持所有设备 因为它是通过设置的device/common/populate-new-device.sh。 为 例子:
$ export TARGET_PREBUILT_KERNEL=$your_kernel_path/arch/arm/boot/zImage-dtb
注意:内核名字因设备而异。 来定位 内核的正确的文件名,请参考
device/<vendor>/<name>
在内核源代码。