| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 系统运维 -> 【linux kernel】linux内核裁剪随想 -> 正文阅读 |
|
|
[系统运维]【linux kernel】linux内核裁剪随想 |
|
为什么需要裁剪? 首先,裁剪并不一定是缩小内核镜像的大小,而是移植和适配。内核支持的特性很多,站在项目的角度,不一定全部需要这些特性和功能。这时候就需要将不需要的特性和功能剔除,随着这个过程的进行,内核的镜像会逐渐缩小。 在实际裁剪过程中,可以按照如下思路进行: (1)第一步:使用 (2)第二步:从源码构建目录正向分析linux内核行为。 (3)第三步:从输出日志反推linux内核行为。 整个流程如下图所示: 对于第一步,是编译构建linux内核的常规操作,首先会编译构建出图形化的配置界面,如下图所示:
这是内核构建系统的行为。我们需要根据项目和环境特征,逐项展开选择对应的配置项,如果不清楚对应选项的含义,可以按下键盘上的H键去阅读使用帮助。当配置完成或者想去验证配置项的选择是否达到目标需求,这时候选择 接下来就编译构建linux内核源码,进而转到裁剪的第二步。对于linux内核源码下的各个目录中的文件,几乎都是由
上述是一种方法来查看编译构建后哪些源码文件会被编译构建进内核,还有一种最简单的方法:就是查看是否生成了对应的xxx.o文件,例如在/init目录下的main.c文件,如果被编译构建了,就一定会生成一个main.o文件:
好了,通过上述步骤,linux内核镜像就编译完成了,这时候可以实际运行linux内核,并进行相关的功能测试。在linux内核启动过程中,会打印出很多日志信息,可以根据打印出的日志信息,确定哪些模块功能是否真正的构建进内核镜像。例如:如果内核的USB模块被编译构建进内核,则在内核启动过程中打开内核的调试日志功能,则一定会打印出如下三条信息(不同linux版本可能信息不一样):
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/1 18:15:17- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |