MTK安全启动分析9:MTK LK 编译Makefile完整解析
MTK LK 编译Makefile完整解析整体概述MTK平台LittleKernelBL33二级引导器是由编译Makfile脚本build_lk.mk来编译核心特性多LK编译模式LK_MODE一套LK源码编译出不同功能固件普通/解锁/高级菜单/GPT升级/FES工厂模式分离「编译中间产物目录」「系统安装输出目录」支持拼接DTB设备树到LK镜像自动输出logo分区镜像配套清理规则、droidcore打包依赖可配置交叉编译、屏幕分辨率、平台安全开关等编译宏。一、核心变量逐段拆解1. 输出路径分层定义# 系统最终安装路径刷机包/Android系统打包使用 INSTALLED_LK$(LK$(MODE)_TARGET : $(PRODUCT_OUT)/lk$(call to-lower,$(LK_MODE)).img INSTALLED_LOGO$(LK_MODE)_TARGET : $(PRODUCT_OUT)/logo$(call to-lower,$(LK_MODE)).img # 编译中间缓存目录obj中间文件、elf、原始lk.img TARGET_LK$(LK_MODE)_OUT : $(TARGET_OUT_INTERMEDIATES)/LK$(LK_MODE)_OBJ # LK源码根目录区分相对/绝对路径 TARGET_LK$(LK_MODE)_ROOT_OUT : $(if $(filter /% ~%,$(TARGET_LK$(LK_MODE)_OUT)),,$(LK_ROOT_DIR)/)$(TARGET_LK$(LK_MODE)_OUT) # LK源码编译产出原生lk.img未拼接DTB BUILT_LK$(LK_MODE)_TARGET : $(TARGET_LK$(LK_MODE)_OUT)/build-$(LK_PROJECT)/lk.img # 收集所有LK模式全局汇总 ALL_BUILT_LK_TARGET : $(ALL_BUILT_LK_TARGET) $(BUILT_LK$(LK_MODE)_TARGET)分层逻辑BUILT_LKxxx_TARGETLK源码原生编译输出纯净无DTBINSTALLED_LKxxx_TARGET成品镜像 lk原生镜像 DTB拼接存product/out供整机打包logo镜像直接从编译目录复制输出ALL_BUILT_LK_TARGET 全局收集所有模式的编译产物给全局固件脚本遍历。2. 全局编译参数LK_MAKE_OPTION传递给LK顶层Make的编译参数分为通用参数 模式专属开关# 通用基础参数 LK_MAKE_OPTION : $(if $(SHOW_COMMANDS),NOECHO) LK_MAKE_OPTION $(if $(LK_CROSS_COMPILE),TOOLCHAIN_PREFIX$(LK_CROSS_COMPILE)) LK_MAKE_OPTION BOOTLOADER_OUT$(TARGET_LK$(LK_MODE)_ROOT_OUT) LK_MAKE_OPTION ROOTDIR$(LK_ROOT_DIR) LK_MAKE_OPTION LCM_WIDTH$(LCM_WIDTH) LCM_HEIGHT$(LCM_HEIGHT) LK_MAKE_OPTION COMPILER$(LK_ROOT_DIR)/$(SOONG_CLANG)通用参数说明NOECHOSHOW_COMMANDS开启时打印完整编译命令TOOLCHAIN_PREFIX交叉编译器前缀ARM64 clang/gccBOOTLOADER_OUT指定LK编译中间文件输出目录ROOTDIRLK源码根路径LCM_WIDTH/LCM_HEIGHT屏幕分辨率用于开机logo、UI界面COMPILER指定clang编译器路径MT现代平台统一使用LLVM。3. 分LK_MODE 专属编译宏核心业务区分LK_MODE是区分固件功能的核心开关每种模式开启/关闭不同安全、升级、调试功能1_DEF_UNLOCKifeq ($(LK_MODE),_DEF_UNLOCK) LK_MAKE_OPTION MTK_BUILD_DEFAULT_UNLOCKyes endif作用编译默认解锁版LK开机fastboot默认允许unlock解锁关闭部分安全校验多用于工程机、定制开发机量产user版本不会使用此模式。2_ENHANCE_MENUifeq ($(LK_MODE),_ENHANCE_MENU) LK_MAKE_OPTION MTK_BUILD_ENHANCE_MENUyes endif作用增强recovery/ fastboot菜单增加高级调试项、分区擦除、内存读写、产线校准入口工厂调试机型专用。3_DEEP_GPT_UPDATEifeq ($(LK_MODE),_DEEP_GPT_UPDATE) LK_MAKE_OPTION MTK_GPT_UPDATE_SUPPORTyes LK_MAKE_OPTION MTK_BUILD_DEFAULT_UNLOCKyes LK_MAKE_OPTION MTK_SECURITY_SW_SUPPORTno endifGPT分区深度升级专用固件开启完整GPT分区表重写支持默认解锁关闭安全启动SBC无镜像验签仅用于整机OTA大分区重构、产线重分区场景。4_FES工厂烧录模式关键ifeq ($(LK_MODE),_FES) LK_MAKE_OPTION MTK_SECURITY_SW_SUPPORTno LK_MAKE_OPTION CFG_DTB_EARLY_LOADER_SUPPORTno LK_MAKE_OPTION PLATFORM_FASTBOOT_EMPTY_STORAGEyes LK_MAKE_OPTION APPSBOOTHDR_FILES endif工厂产线专用极简LK关闭全部安全启动校验SBC关闭不验镜像关闭DTB早期加载fastboot空存储模式支持空闪存烧写固件移除安卓APP相关驱动镜像体积极小仅产线刷机台使用成品系统不加载该镜像。二、编译规则依赖链从上到下规则1编译原生LK镜像BUILT_LK$(LK_MODE)_TARGET.KATI_RESTAT: $(BUILT_LK$(LK_MODE)_TARGET) $(BUILT_LK$(LK_MODE)_TARGET): PRIVATE_MAKE_OPTION : $(LK_MAKE_OPTION) $(BUILT_LK$(LK_MODE)_TARGET): $(LK_MAKE_DEPENDENCIES) $(hide) mkdir -p $(dir $) $(PREBUILT_MAKE_PREFIX)$(MAKE) -C $(LK_DIR) $(PRIVATE_MAKE_OPTION) $(LK_PROJECT).KATI_RESTATAndroid构建工具标记依赖文件变更时强制重编译依赖LK_MAKE_DEPENDENCIESLK所有源码、头文件、板级配置执行逻辑创建输出目录 → 进入LK源码目录传入所有模式编译参数编译目标工程LK_PROJECT输出无DTB的纯净lk.img。规则2成品LK镜像拼接DTBINSTALLED_LK$(LK_MODE)_TARGET$(INSTALLED_LK$(LK_MODE)_TARGET): $(BUILT_LK$(LK_MODE)_TARGET) $(MTK_LK_DTB_TARGET) $(hide) mkdir -p $(dir $) $(hide) cat $ $(MTK_LK_DTB_TARGET) $关键逻辑依赖LK原生镜像 LK阶段设备树dtbcat二进制拼接lk主体镜像 追加dtb二进制输出到product/out是整机打包、OTA、刷机工具使用的最终lk分区镜像对应你Preloader、TEE链路ATF跳转后运行的BL33就是该镜像。规则3logo镜像输出$(INSTALLED_LOGO$(LK_MODE)_TARGET): $(BUILT_LK$(LK_MODE)_TARGET) $(hide) mkdir -p $(dir $) $(hide) cp -f $(dir $)logo.img $LK编译过程同步生成开机logo图片镜像直接复制到输出目录用于logo分区烧写。规则4清理伪目标 clean-lk.PHONY: lk clean-lk clean-lk$(LK_MODE) clean-lk: clean-lk$(LK_MODE) clean-lk$(LK_MODE): PRIVATE_MODE : $(LK_MODE) clean-lk$(LK_MODE): $(hide) rm -rf $(INSTALLED_LK$(PRIVATE_MODE)_TARGET) $(INSTALLED_LOGO$(PRIVATE_MODE)_TARGET) $(TARGET_LK$(PRIVATE_MODE)_OUT)伪目标执行make clean-lk会删除out目录成品lk/logo镜像全部编译中间obj目录完全清理该模式编译产物。规则5droidcore打包依赖ifneq ($(LK_MODE),_FES) droidcore lk: $(INSTALLED_LK$(LK_MODE)_TARGET) $(INSTALLED_LOGO$(LK_MODE)) endifdroidcore是Android整机打包总目标排除_FES工厂模式量产整机不会打包工厂极简LK正常模式下编译整机时自动同步编译lklogo镜像。三、和之前MT8766整套启动链路联动1.Preloader BL2 加载lk_a/lk_bA/B槽镜像来源就是这份Make输出的INSTALLED_LKxxx_TARGET2.LK_MODE区分量产user默认普通模式开启MTK_SECURITY_SW_SUPPORTLK镜像必须经过OEM签名Preloader/ATF双层验签工程eng_DEF_UNLOCK解锁LK支持fastboot任意擦写产线烧录单独编译_FES极简无安全LKOPT大分区升级_DEEP_GPT_UPDATE3.ATF BL31完成TEE初始化后ERET跳转的入口就是该拼接好LKDTB镜像4.LK内置logo驱动开机画面来自编译同步输出的logo.img。四、总结多模式隔离编译一套源码产出解锁/产线/升级/量产多种LK无需改源码仅切换LK_MODEDTB拼接自动化LK阶段设备树直接二进制拼接无需额外工具处理目录分离中间obj与最终刷机镜像分开清理/打包互不干扰安全开关可配置通过MTK_SECURITY_SW_SUPPORT一键开关LK镜像验签适配量产/工程整机构建联动并入droidcore全量编译自动生成lk分区文件配套完整清理规则开发编译环境易维护。五、易混点BUILT_LK 源码原生镜像无DTB仅编译中间文件INSTALLED_LK 对外成品镜像LKDTB拼接刷机包使用_FES仅工厂使用不会打包进零售整机固件MTK_SECURITY_SW_SUPPORTno 代表关闭安全启动镜像跳过RSA验签仅调试/产线场景使用。

相关新闻

沁园春·智能潮

沁园春·智能潮

沁园春智能潮浦江七月,展台十万,机杼争朝。 望徐汇滩头,机器成阵; 张江云上,算力奔涛。 月之暗面,一朝破壁,开源权重撼寰霄。 消息出,惊华尔街夜,股海生潮。莫道东方难超…

2026/7/23 22:54:37 阅读更多 →
【Linux系统编程】--线程基础和线程控制

【Linux系统编程】--线程基础和线程控制

一、线程基本概念1、认识线程提到线程,那么我们不得不先回忆进程,我们知道进程是在内存中执行的程序,然后进程进程内核数据结构数据和代码。然后我们创建一个进程要给其创建对应的task_struct,虚拟地址空间,页表等。线…

2026/7/23 22:54:37 阅读更多 →
设计EDA 研发经理 HR + 技术高管双线面试打分、综合评估录用完整标准化流程

设计EDA 研发经理 HR + 技术高管双线面试打分、综合评估录用完整标准化流程

一、岗位基础定位 1. 岗位定义 EDA 研发经理(部门 / 产品线经理),管理规模 20–50 人研发团队,统筹多条 EDA 产品线、年度研发预算、项目全生命周期交付;兼具顶层技术决策、团队经营、预算管控、产业链商务协同、人才梯队搭建、IP & 合规风控六大核心权责,汇报对象…

2026/7/23 22:54:37 阅读更多 →

最新新闻

2026网上商城系统开发哪家好?三类商家选型指南

2026网上商城系统开发哪家好?三类商家选型指南

今天给大家带来2026网上商城系统开发哪家好?三类商家选型指南。国家统计局数据显示,2024年全国网上零售额达 155225亿元,比上年增长 7.2%;其中,实物商品网上零售额 130816亿元,占社会消费品零售总额的比重为…

2026/7/23 23:06:42 阅读更多 →
思维导图AI化最后一公里难题:如何让AI理解“隐性逻辑关系”?神经符号系统实战解析(独家专利方法论)

思维导图AI化最后一公里难题:如何让AI理解“隐性逻辑关系”?神经符号系统实战解析(独家专利方法论)

更多请点击: https://kaifayun.com 第一章:思维导图AI化最后一公里难题:如何让AI理解“隐性逻辑关系”?神经符号系统实战解析(独家专利方法论) 思维导图的AI化长期卡在“显性结构可解析,隐性逻…

2026/7/23 23:06:42 阅读更多 →
混合专家(Mixture of Experts,简称 MoE)架构

混合专家(Mixture of Experts,简称 MoE)架构

混合专家(Mixture of Experts,简称 MoE)架构的核心原理是“术业有专攻 动态分工”:它在模型内部划分出许多个专精的子网络(称为“专家”),并通过一个路由机制,只让其中少数几个相关…

2026/7/23 23:06:42 阅读更多 →
【心血管科普|合肥】心脏瓣膜病手术指征、术式选择与高危就诊人群|合肥高心医院临床案例分析

【心血管科普|合肥】心脏瓣膜病手术指征、术式选择与高危就诊人群|合肥高心医院临床案例分析

摘要:心脏瓣膜病是临床常见的器质性心血管疾病,病程隐匿且呈进行性发展,一旦造成心脏结构与心肌不可逆损伤,会大幅提升心力衰竭、猝死等不良心血管事件风险。本文以合肥高新心血管病医院收治的重度退行性二尖瓣反流真实临床病例为…

2026/7/23 23:05:42 阅读更多 →
AI Coding 提效有限?Harness 全链路研发智能体打造可验证交付闭环!

AI Coding 提效有限?Harness 全链路研发智能体打造可验证交付闭环!

【导读】AI Coding 改变了研发方式,然而单点代码生成仅占研发工时 10 - 32%,整体提效有限。本文从团队项目的真实交付复盘出发,提出 Harness 全链路研发智能体,将大模型融入可控研发流程,把需求分析、接口设计等环节串…

2026/7/23 23:05:42 阅读更多 →
Spring Security掌握内容速忆(适用于初学者)

Spring Security掌握内容速忆(适用于初学者)

目录 一、需要掌握的 二、详细指引 1. 配置文件 2. 查用户 3. 在 Controller 里获取当前用户 四、容易搞混的问题 五、Security 报错解决方案 Spring Security 是公司里“骨架化”程度最高的组件之一,架构组会提供一个 “认证授权中心” 的 Maven 骨架&#…

2026/7/23 23:05:42 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻