本页详细介绍了如何仅编译内核。以下说明假设您尚未下载整个 AOSP;如果您已完成下载,则可以跳过 git clone 对应的步骤,但下载内核源代码的步骤除外。

本部分中的所有示例均使用 hikey 内核。

选择内核

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

二进制文件所在的位置

源代码所在的位置

编译配置

marlin

device/google/marlin-kernel

kernel/msm

marlin_defconfig

sailfish

device/google/marlin-kernel

kernel/msm

marlin_defconfig

hikey

device/linaro/hikey-kernel

kernel/hikey-linaro

hikey_defconfig

angler

device/huawei/angler-kernel

kernel/msm

angler_defconfig

bullhead

device/lge/bullhead-kernel

kernel/msm

bullhead_defconfig

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/kernel/hikey-linaro

cd hikey-linaro

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'

对于 Nexus 5 (hammerhead),请运行以下命令:

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 命令为您要编译的内核下载源代码。例如,以下命令会克隆 common 内核(一种可自定义的通用内核):

git clone https://android.googlesource.com/kernel/common

内核项目的完整列表在 Kernel 目录下。以下是一些常用内核及其各自的 git clone 命令。

exynos 项目包含适用于 Nexus 10 的内核源代码,可用作在 Samsung Exynos 芯片组上开展相关工作的着手点。

git clone https://android.googlesource.com/kernel/exynos

goldfish 项目包含适用于所模拟的平台的内核源代码。

git clone https://android.googlesource.com/kernel/goldfish

hikey-linaro 项目用于 HiKey 参考板,可用作在 HiSilicon 620 芯片组上开展相关工作的着手点。

git clone https://android.googlesource.com/kernel/hikey-linaro

msm 项目包含适用于 ADP1、ADP2、Nexus One、Nexus 4、Nexus 5、Nexus 6、Nexus 5X、Nexus 6P、Nexus 7 (2013)、Pixel 和 Pixel XL 的源代码,可用作在 Qualcomm MSM 芯片组上开展相关工作的着手点。

git clone https://android.googlesource.com/kernel/msm

omap 项目用于 PandaBoard 和 Galaxy Nexus,可用作在 TI OMAP 芯片组上开展相关工作的着手点。

git clone https://android.googlesource.com/kernel/omap

samsung 项目用于 Nexus S,可用作在 Samsung Hummingbird 芯片组上开展相关工作的着手点。

git clone https://android.googlesource.com/kernel/samsung

tegra 项目用于 Xoom、Nexus 7 (2012)、Nexus 9,可用作在 NVIDIA Tegra 芯片组上开展相关工作的着手点。

git clone https://android.googlesource.com/kernel/tegra

x86_64 项目包含适用于 Nexus Player 的内核源代码,可用作在 Intel x86_64 芯片组上开展相关工作的着手点。

git clone https://android.googlesource.com/kernel/x86_64

编译内核

当您了解了内核的最后一条提交消息并已成功下载内核源代码和预编译的 gcc 后,就可以编译内核了。以下编译命令使用了 hikey 内核:

export ARCH=arm64

export CROSS_COMPILE=aarch64-linux-android-

cd hikey-linaro

git checkout -b android-hikey-linaro-4.1 origin/android-hikey-linaro-4.1

make hikey_defconfig

make

要编译不同的内核,只需将 hikey-linaro 替换为您要编译的内核的名称即可。

映像会输出到 arch/arm64/boot/Image 目录;内核二进制文件会输出到 arch/arm64/boot/dts/hisilicon/hi6220-hikey.dtb 文件。请将 Image 目录和 hi6220-hikey.dtb 文件复制到 hikey-kernel 目录。

或者,您可以在使用 make bootimage(或编译启动映像的任何其他 make 命令行)时添加 TARGET_PREBUILT_KERNEL 变量。所有设备均支持该变量,因为它是通过 device/common/populate-new-device.sh 进行设置的。例如:

export TARGET_PREBUILT_KERNEL=$your_kernel_path/arch/arm/boot/zImage-dtb

注意:内核名称因设备而异。要找到内核的正确文件名,请参阅内核源代码中的 device/VENDOR/NAME。

编译 android 内核,编译内核  |  Android 开源项目  |  Android Open Source Project相关推荐

  1. android壁纸软件代码,Flutter开源项目——Android免费壁纸应用

    简介 free_wallpaper是一款基于flutter的免费Android壁纸应用 项目明细 开发环境: android studio 3.5 Flutter 1.12.13+hotfix.7 • ...

  2. android选择图片或拍照开源项目,Android 开源照相和图片选择框架PictureSelector

    拍照或者相册选择图片并渲染到UI上,发现了一个更简单的三方框架来实现 -- PictureSelector.Github地址:https://github.com/LuckSiege/PictureS ...

  3. 【开源项目----Android OPenGLES渲染YUV视频文件】

    [开源项目----Android OPenGLES渲染YUV视频文件] OpenGLES对YUV渲染相关文章参考

  4. android 4.4 linux 内核版本,稳定内核版本和更新  |  Android 开源项目  |  Android Open Source Project...

    由于之前的内核开发模型(每 2-3 个月发布一次新版本)被认为无法满足大多数用户的需求,Linux 内核稳定版模型于 2005 年随之诞生.用户希望实际用到在 2-3 个月内提交的错误修复程序,但 L ...

  5. android10分区镜像,分区和映像  |  Android 开源项目  |  Android Open Source Project

    分区 Android 设备包含若干个分区,这些分区在启动过程中发挥不同的作用.为了支持 A/B 更新,设备需要为 boot.system.vendor 和 radio 分区分别单独配置一个槽位. bo ...

  6. Android平台值得关注的开源项目

    [51CTO综合]移动开发技术越来越被开发者重视,前段时间,Windows Phone 7.MeeGo和BlackBerry都发布新工具以及平台,由于Android是开源平台,目前在开发者眼中分量也越 ...

  7. android afw测试,测试设备配置  |  Android 开源项目  |  Android Open Source Project

    Android Enterprise (AE) 自动化测试框架是一个用于验证 Android 设备的企业级兼容性的测试套件.该套件包括配套应用.测试用例.配置文件和一个基于 cts-tradefed ...

  8. android系统的测试方法,运行测试  |  Android 开源项目  |  Android Open Source Project...

    本页将介绍如何在 Linux 和 Windows 环境中运行 deqp 测试.如何使用命令行参数,以及如何使用 Android 应用包. Linux 与 Windows 环境 首先,请将以下文件及目录 ...

  9. Android系统(97)---开源项目分类整理

    200多个开源项目分类整理,Android开发者珍藏必备 原文地址 http://www.apkbus.com/blog-955606-77825.html 日历 星期视图日历 https://git ...

最新文章

  1. vty 虚拟终端连接 line vty 0 4 和line vty 5 15 区别
  2. 上线清单 —— 20 个 Laravel 应用性能优化项
  3. java泛型类指定多个泛型_Java泛型中的多态
  4. moveit环境引入代码
  5. gog 中 git提交push到远程时出现error: RPC failed; HTTP 413 curl 22
  6. eclipse下搭建SSH整合环境(Struts2+Spring+Hibernate+maven)
  7. 震撼!七大议题全数入选!九州云与您相约温哥华
  8. 多层json字符串转map_java json字符串转map集合递归嵌套
  9. 关于艾宾浩斯曲线的一点思考
  10. 2022智源大会议程公开 | 探索智能的原理,构建脑科学与AI的桥梁
  11. mysql delete锁_MySQL 的加锁处理,你都了解的一清二楚了吗?
  12. 【学习笔记】揭秘阿里CDN核心技术
  13. 以汨罗命名的鸿蒙网,汨罗千年古镇“新市”考
  14. 小升初数学知识体系梳理
  15. unity3d热更新插件uLua
  16. Python挑战游戏( PythonChallenge)闯关之路Level 0
  17. 分享一些网页设计的素材
  18. **没有规则可以创建“XXX”需要的目标“XXX”问题的解决方案
  19. LayUi做登录注册
  20. 生育 生殖 長壽의 三情은 萬物의 本能 (韓長庚 易學原理總論)

热门文章

  1. 参观云栖小镇体会_我院留学生赴云栖小镇参观学习
  2. 恒安嘉新面试题java_【恒安嘉新面试|面试题】-看准网
  3. pyzbar Unable to find zbar shared library
  4. nginx.pid failed (2: The system cannot find the file specified
  5. libreadline.so.6: undefined symbol
  6. No module named 'urlparse'
  7. 青龙羊毛——悦读(搬运)
  8. Cissp-【第4章 通信与网络安全】-2021-3-14(476页-542页)
  9. Linux日常之允许或禁止指定用户或IP进行SSH登录
  10. 后台管理系统怎么实现操作日志原理_springboot角色权限后台管理系统脚手架实战开发教程包含完整源码...