上文已经对boot.img其中组成部分之一ramdisk.img做了分析,boot.img另外一个重要的组成部分就是kernel了,

这里所说的kernel,可以只理解为位于out/target/product/tcc8800/中的kernel文件,本文主要分析kernel的拷贝

过程以及如何被打包到boot.img中。经过分析得知位于out/target/product/tcc8800/中的kernel文件其实就是内核

编译后的Image文件,位于kernel/arch/arm/boot目录下,线索就是这个Image文件,经过搜索发现一处定义:

LOCAL_KERNEL :=  kernel/arch/arm/boot/Image

该定义位于devices/telechips/tcc88xx-common/BoardConfigCommon.mk中,紧接着,在同目录的Android.mk中

有以下一段定义:

PRODUCT_COPY_FILES += \

$(LOCAL_KERNEL):kernel

意在将Image文件拷贝且重命名为kernel,随后的拷贝设置是在build/core/Makefile中完成的,在此略掉。

那么,拷贝完成后,kernel文件如何被打包到boot.img中呢?同样在build/core/Makefile中有以下一段内容:

INTERNAL_BOOTIMAGE_ARGS := ... --kernel $(INSTALLED_KERNEL_TARGET)

现在的问题就是查看 INSTALLED_KERNEL_TARGET的定义,该宏位于build/target/board/Android.mk中:

INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel

内容很明显了,至此,内核Image算是到位了。

另外INSTALL_KERNEL_TARGET定义在build/target/board/Android.mk中有点怪怪的,

build/target/board/Android.mk在main.mk中通过subdir_makefiles抽取得到,并包含进main.mk中

Android构建boot.img(二):kernel的拷贝与打包相关推荐

  1. Android构建boot.img(一):root目录与ramdisk.img的生成

    以TCC88XX为例,当在Android顶层源码目录使用make编译完成后,会生成这样一个目录: out/target/product/tcc8800,该目录内部有我们需要的boot.img和syst ...

  2. Android构建boot.img:root目录与ramdisk.img的生成

    以TCC88XX为例,当在Android顶层源码目录使用make编译完成后,会生成这样一个目录: out/target/product/tcc8800,该目录内部有我们需要的boot.img和syst ...

  3. Android构建流程——篇二

    文章目录 预操作 任务列表 如何查看一个task类 Task1: checkDebugClasspath 1. input/output 2. 如何找到任务实现类 3. 核心类(AppClasspat ...

  4. Magisk root 原理分析之二 :Android Verified Boot (AVB)

    1. Android Verified Boot (AVB) 或称 Verified Boot 2.0 简介 官方解释:验证用户设备上运行的软件完整性.它通常从设备固件的只读部分开始,该部分加载代码并 ...

  5. AVB校验微观版本:android avb(Android Verified Boot)验证

    前辈原文:https://blog.csdn.net/weixin_43836778/article/details/90400147 其实可能有人会说,怎么整这么多重复的,其实不是的.这是为了不断地 ...

  6. Android OrangePi 4G IOT(二) - MTK更换调试串口

    一.Debug LOG串口更改 orangepi 4G iot的默认的log调试串口是在板子后面的,使用起来不方便,之前UART0焊接不好导致焊盘弄坏了,没办法,准备修改成插针的40pin引脚的的UA ...

  7. Android硬件加速(二)-RenderThread与OpenGL GPU渲染

    Android4.0之后,系统默认开启硬件加速来渲染视图,之前,理解Android硬件加速的小白文简单的讲述了硬件加速的简单模型,不过主要针对前半阶段,并没怎么说是如何使用OpenGL.GPU处理数据 ...

  8. 优酷 Android 构建速度优化实践

    作者:苏彦郊(木磊) Android 项目一般使用 gradle 作为构建打包工具,gradle 简洁.动态的功能特性为人津津乐道,同样,构建执行速度缓慢的缺陷也一直为人诟病. 近年来,随着优酷功能特 ...

  9. Java IO在Android中应用(二):APK加固

    Java I/O在Android中应用(二):APK加固套壳 前言(废话) 我,有两把键盘,第一把是Poker III(黑轴),第二把是Poker II(红轴).工作的时候我常用的是红轴的Poker ...

最新文章

  1. pring Boot与MyBatista的集成
  2. WinCE5.0中应用程序如何直接写屏
  3. 如何跟踪session
  4. Google开源项目风格指南-笔记
  5. mysql 列级权限授予用户_mysql 用户及权限管理 小结
  6. LoadRunner如何监控Linux下的系统资源
  7. c语言简单选择对字符串数组排序,简单了解C语言中直接插入排序与直接选择排序实现...
  8. NLP应该如何学、如何教?斯坦福大学大牛Dan Jurafsky教授专访
  9. 五分钟快速入门 Spring Data JPA
  10. textarea输入区域设置输入文字字数的最大个数
  11. 对于DEMATEL法的部分理解
  12. BA无标度网络的仿真实现
  13. 基于matlab的qpsk与bpsk信号性能比较仿真,基于matlab的QPSK与BPSK信号性能比较仿真...
  14. HOOK技术原理与实现技术初探
  15. 惠农网_破译反爬虫_使用代理IP爬取数据(源码)_一蓑烟雨任平生
  16. 【笔记本双屏外界显示屏分辨率调高】解决方法
  17. SA8155P QCOM 车载系统介绍
  18. 绕过 word 文档的密码,对加密文档
  19. 非线性转化为线性规划的方法
  20. 哪些公司有计算机财务管理,计算机财务管理汇总.doc

热门文章

  1. 欧姆龙plc解密实例_3000多套PLC实例程序大合集自动控制系统程序电气系统程序...
  2. 001_Spring Data JPA
  3. 032_SpringBoot多环境属性配置文件
  4. 机器学习视觉图像算法工程师--面试笔试--常考知识点乱找总结
  5. python实现api server_使用Python的http.server实现一个简易的Web Api对外提供HanLP拼音转换服务...
  6. 图书查找java_java第三季第一章:查找图书信息实现
  7. mysql -ss -e_课内资源 - 基于ssm框架和mysql的网上选课系统
  8. 软考高项之沟通与干系人管理-背诵记忆
  9. 到网站进过的服务器 命令,进入服务器的命令
  10. 王者服务器维护7月九号,腾讯手游王者荣耀7月9号9点半版本更新,备受期待的S20赛季它来了...