谷歌安卓官方文档之编译内核

这篇博客详细介绍了如何构建Android系统的内核,从识别内核版本到下载源代码,再到使用预构建的gcc和最终编译内核。内容涵盖goldfish、msm、omap、samsung、tegra和exynos等多个项目,适用于不同设备的内核编译。
摘要由CSDN通过智能技术生成

这个页面的细节如何构建只有内核。 下面的说明 假设您没有下载所有AOSP;如果你已经这么做了,你可以 跳过git clone除了步骤下载内核的步骤 来源。

在这一节中使用所有的例子panda内核。

找出哪个内核

此表列出了内核源代码和二进制文件的名称和位置:

设备二进制位置源位置编译配置
shamudevice/moto/shamu-kernelkernel/msmshamu_defconfig
fugudevice/asus/fugu-kernelkernel/x86_64fugu_defconfig
volantisdevice/htc/flounder-kernelkernel/tegraflounder_defconfig
hammerheaddevice/lge/hammerhead-kernelkernel/msmhammerhead_defconfig
flodevice/asus/flo-kernel/kernelkernel/msmflo_defconfig
debdevice/asus/flo-kernel/kernelkernel/msmflo_defconfig
mantadevice/samsung/manta/kernelkernel/exynosmanta_defconfig
makodevice/lge/mako-kernel/kernelkernel/msmmako_defconfig
grouperdevice/asus/grouper/kernelkernel/tegrategra3_android_defconfig
tilapiadevice/asus/grouper/kernelkernel/tegrategra3_android_defconfig
magurodevice/samsung/tuna/kernelkernel/omaptuna_defconfig
torodevice/samsung/tuna/kernelkernel/omaptuna_defconfig
pandadevice/ti/panda/kernelkernel/omappanda_defconfig
stingraydevice/moto/wingray/kernelkernel/tegrastingray_defconfig
wingraydevice/moto/wingray/kernelkernel/tegrastingray_defconfig
crespodevice/samsung/crespo/kernelkernel/samsungherring_defconfig
crespo4gdevice/samsung/crespo/kernelkernel/samsungherring_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>在内核源代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值