menuconfig配置内核
作者:互联网
menuconfig是linux里面的一个软件,可以配置uboot,kernel,rootf,这里以kernel为例来配置,其他的配置menuconfig的使用是一样的。
1.linux内核源码目录结构
内核有三种:第一种是kernel.org上的(官方版本的),第二种是三星移植过的(厂商的),第三种是九鼎X210的移植版本(做产品的)。
arch:意思是架构,arch目录下是好多个不同架构的CPU的子目录,譬如arm这种cpu的所有文件都在arch/arm目录下,X86的CPU的所有文件都在arch/x86目录下。
block:表示块设备,是一些linux存储体系中关于块设备管理的代码,譬如说SD卡、iNand、Nand、硬盘等都是块设备。
crypto:这个目录下放了一些各种常见的加密算法的C语言代码实现。
drivers:驱动目录,里面分门别类的列出了linux内核支持的所有硬件设备的驱动源代码。
firmware:固件,固件其实是软件,不过这个软件是固化到IC里面运行的代码叫固件。
include:头文件目录,公共的(各种CPU架构共用的)头文件都在这里,每种CPU架构特有的一些头文件在arch/arm/include目录及其子目录下。
init:init是初始化的意思,这个目录下的代码就是linux内核启动时初始化内核的代码。
ipc:进程间通信,里面都是linux支持的IPC的代码实现。
kernel:就是linux内核,所以这个文件夹下放的就是内核本身需要的一些代码文件。
mm:,内存管理,linux的内存管理代码都在这里。
net:该目录下是网络相关的代码,譬如TCP/IP协议栈等都在这里。
总结:这么多目录跟我们关系很紧密的就是arch和drivers目录,然后其他有点相关的还有include、block、mm、net、lib等目录,其他等需要的时候再详细研究。
2.内核配置和编译
(1)确认Makefile
检查交叉编译工具链路径, 确认ARCH = arm.
(2)make x210ii_qt_defconfig
最后只要出现:configuration written to .config这句话,就证明我们的操作是正确的。如果没有出现这句话,就有错误。
(3)make menuconfig
原因:ncurses库没装。解决方案: apt-get install libncurses5-dev。
安装完成后,执行make menuconfig会出现以下图形,然后右方向键选中exit退出即可
注意:如果还是出不来,需要把屏幕字体调小。
(4)make
可能出现的错误:莫名其妙的错误,可以试试先make distclean
编译完成后得到的内核镜像不在源码树的根目录下,在arch/arm/boot这个目录下。得到的镜像名是zImage
3.内核的配置
(1)配置的关键是得到.config文件,在编译过程中会读取.config中的配置项,并且用这些配置项去指导整个编译链接过程。
(2).config文件的格式类似于脚本文件,其中内容为类似于于:CONFIG_ARM=y的一个一个的配置项。这些配置项就类似于脚本文件中定义的一个一个变量,所以这一行可以被理解为定义了一个变量CONFIG_ARM,这个变量的值为y。
(3).config文件中每一行都是一个配置项,从.config文件的规模可以看出linux内核的可配置项有两三千个,超出了人的大脑能够记忆和处理的数量级,不能手工配置而发明了一个图形化的配置工具menuconfig。
make xx_defconfig和make menuconfig相配合。
第一步:make xxx_defconfig解决的问题是大部分的配置项(这一步结束后99%的配置项就已经正确了),这一步其实是参考别人已经做好的。
make x210ii_qt_defconfig其实相当于:cp arch/arm/configs/x210ii_qt_defconfig ./config就是把arch/arm/configs/目录下面的x210ii_qt_defconfig 复制到当前目录(也就是根目录下),命名为.config。
第二步:细节调整就通过make menuconfig来完成,其实就是读取第一步得到的.config,然后给我们一个图形化的界面,让我们可以更加容易的找到自己想要修改的配置项,然后更改配置他。
4.menuconfig的使用和演示
(1)menuconfig中操作相关的几个键盘按键,主要是;Enter、ESC、四个方向箭头按键。
> 向上和向下箭头,主要用来在选择项菜单中目录浏览时上下翻.
> 回车,主要作用是选中并且执行select/exit/help
>ESC,主要作用是返回上一层
>向左和向右箭头,主要作用是在菜单选项(select、exit、help)间切换
>按键Y、N、M三个按键的作用分别是将选中模块编入、去除、模块化
>[ ]不可以模块化,<>的才可以模块化。
>*表示编入,空白表示去除,M表示模块化
5.menuconfig的工作原理
(1)menuconfig本身由一套软件支持,用来实现文字式的图形界面.
(2)menuconfig本身的软件只负责提供menuconfig工作的这一套逻辑,并不负责提供内容.
(3)menuconfig读取Kconfig文件, 在menuconfig中都会成为一个菜单项目,菜单项目就是一个又一个的配置项,menuconfig的菜单内容来自于Kconfig文件。
(3)每一个菜单的选择结果(Y、N、M)却不是保存在Kconfig文件中,而是保存在.config文件中,make menuconfig打开时会读取.config文件,形成我们看到的菜单栏。
标签:make,配置,menuconfig,内核,config,目录 来源: https://blog.csdn.net/weixin_49303682/article/details/118282246