0

0

深入解析内核源码树:Kconfig 文件与 Makefile 的协同作用

PHPz

PHPz

发布时间:2024-06-28 09:49:32

|

1119人浏览过

|

来源于ITcool

转载

原理

内核源码树每位目录下都还包含一个Kconfig文件,用于描述所在目录源代码相关的内核配置菜单,各个目录的Kconfig文件构成了一个分布式的内核配置数据库。

通过makemenuconfig命令配置内核的时侯,从Kconfig文件读取菜单存储技术原理分析:基于linux 26内核源代码,配置完毕保存到文件名为.config的内核配置文件中,供Makefile文件在编译内核时使用。

源码目录树顶楼Makefile是整个内核源码管理的入口,对整个内核的源码编译起着决定性作用。编译内核时linux c,顶楼Makefile会按规则递归历遍内核源码的所有子目录下的Makefile文件,完成各子目录下内核模块的编译。

配置内核

步入Linux内核源码数顶楼目录,输入makemenuconfig命令百度网盘LINUX,可以步入基于Ncurses的Linux内核配置主界面,假如没有在Makefile手指定ARCH,则须在命令行手指定:

make ARCH=arm menuconfig

一级目录

一级菜单下的每一项几乎都有复杂的下级子菜单,各自的配置选项也很丰富,假如逐一进行描述,将会是一件十分繁杂的事。而实际产品开发中,并不须要完全了解内核的每一个配置项,一般只须要了解其中一些相关项即可。

内核编写_存储技术原理分析:基于linux 26内核源代码_内核存储原理源基于代码分析

在这里插入图片描述

二级目录Generalsetup是内核通用设置菜单界面

在这里插入图片描述

SystemVIPC表示系统的进程间通讯InterProcess

Communication,它用于处理器在程序之间同步和交换信息

Enableeventpollsupport:支持风波轮循的系统调用。

Enableloadablemodulesupport是内核模块配置

Moduleunloading容许卸载早已加载的模块

Moduleversioningsupport准许使用其他内核版本的模块(可能会出问题)

Sourcechecksumforallmodules为所有的模块校准源码,假如你不是自己编撰内核模块就不须要它这个功能。

内核编写_内核存储原理源基于代码分析_存储技术原理分析:基于linux 26内核源代码

Enabletheblocklayer块设备支持

使用硬碟/USB/SCSI设备者必选这选项促使块设备可以从内核移除:

Supportforlarge(2TB+)blockdevicesandfiles仅在使用小于2TB的块设备时须要

Blocklayerbiothrottlingsupport可用于限制设备的IO速率

IOSchedulersIO调度器I/O是输入输出带宽控制,主要针对硬碟,是核心的必须的东西。这儿提供了三个IO调度器。

SystemType是处理器类型及特征

Symmetricmulti-processingsupport对称多处理器支持,假如你有多个CPU或则使用的是多核CPU就选上

Processorfamily(Pentium-Pro)处理器系列,请依照实际使用的CPU选择,这儿是处理器的类型

Genericx86support这一选项针对x86系列的CPU使用更多的常规优化。假如你在里面一项选的是i386、i586之类的才选这个通用x86支持,

Multi-coreschedulersupport针对多核CPU进行调度策略优化多核调度机制支持,四核的CPU要选

Busoptions是PCI、ISA等总线的支持和配置KernelFeatures是内核特点配置菜单

内核存储原理源基于代码分析_存储技术原理分析:基于linux 26内核源代码_内核编写

在这里插入图片描述

Bootoption启动选项,可设置默认启动参数和内核参数类型

CPUPowerManagementCPU电源管理相关

包括处理器频度降频、休眠模式支持等

Powermanagementoptions电源管理相关Networkingsupport网路配置

包括了以太网、CAN、红外、蓝牙、无线等网路的支持配置选项

Wireless使用无线网卡支持

RFswitchsubsystemsupportRF切换设备

Networkingoptions网路合同和网路包参数配置(其中TCP/IP相关合同必须打开)

Networkingoptions,可步入网路选项配置界面

在这里插入图片描述

使用Linux的系统就会用到网路,而使用网路又常常离不开TCP/TP,故建议在配置中选中TCP/IP选项存储技术原理分析:基于linux 26内核源代码,并选中下级全部选项。三态选项也可以配置为,在须要的时侯再插入模块。

DriverDrivers设备驱动,配置界面也很复杂,有诸多配置项

在这里插入图片描述

Filesystems,是内核文件系统配置界面

内核存储原理源基于代码分析_内核编写_存储技术原理分析:基于linux 26内核源代码

在这里插入图片描述

Kernelhacking内核调试相关Securityoptions安全相关选项

CryptographicAPI—>//加密API,这部份选项会按照此前的优化手动调整

剪裁和配置内核的基本原则

参考资料:

linux内核剪裁的具体过程和选择

嵌入式Linux内核配置、裁剪与编译探讨

Linux内核编译配置(Menuconfig图形化形式)、制作文件系统的步骤

Linux内核移植和根文件系统制做

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

327

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

234

2023.10.07

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

356

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2077

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

348

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

325

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

411

2023.10.16

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

25

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.7万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号