【嵌入式Linux】源码菜单配置 | 编译 | 菜单配置的实现 | 源码编译的实现

文章详细介绍了Linux内核源码的配置过程,包括通过makemenuconfig进行图形化配置,从零开始配置,保存配置的不同方法。此外,还阐述了编译步骤,如make编译,模块编译和安装,以及内核配置的实现机制,如Kconfig文件和Makefile的作用。最后提到了如何添加新的驱动及其编译方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码配置编译

源码配置编译,要把中间各个环节都理清楚

厂商把自己增加的东西专门放了个文件独立,方便开发者发现变化

1.菜单配置

移植的第一步,就是选配,通过make menuconfig图形化界面选配

//载入配置
$ make ARCH=arm64 tegra_defconfig  //导入官方配置
          //会从arch/arm64/configs下 查找tegra_defconfig,导入到当前目录,重命名为.config)
$ make menuconfig //在官方配置基础上进行配置
	
	
//从零配置
$ mv  .config .config.ago //如有,则改名 -> 清除当前配置(.config)
$ make  menuconfig ARCH=arm64 /*生成最初始配置界面(如不指定ARCH,默认的是x86的)
    当前目录有.config则导入,如无则用默认x86配置生成.config
   */

//保存配置
$ make savedefconfig //生成defconfig  (相比make  menuconfig 里的Save保存的配置,这是最简的)
$ cp defconfig arch/arm64/configs/my_defconfig //发布配置(原厂发布配置到内核就是该方式)
1.1载入配置
//载入配置
$ make ARCH=arm64 tegra_defconfig  //导入官方配置
          //会从arch/arm64/configs下 查找tegra_defconfig,导入到当前目录,重命名为.config)
$ make menuconfig //在官方配置基础上进行配置
1.2从零配置
//从零配置
$ mv  .config .config.ago //如有,则改名 -> 清除当前配置(.config)
$ make  menuconfig ARCH=arm64 /*生成最初始配置界面(如不指定ARCH,默认的是x86的)
    当前目录有.config则导入,如无则用默认x86配置生成.config
   */

ARM64的全新的配置

image-20220911224510091

General setup->Cross-compiler tool prefix 交叉编译工具(可以这里指定,也可以Makefile中改)

Enable loadable module support 模块的支持ko文件

Enable the block layer 块设备支持

Platform selection 平台选择,虽然架构一样,但是不同厂商的芯片也各不同

Bus support 总线支持,例如PCIe等

Kernel Features 内核特性

Boot options 启动选项,可以默认bootargs

Power management options 电源管理

Networking support 网络

Device Drivers 驱动

1.3保存配置
//第一种,make menuconfig生成的.config放到对应目录,比较多无关信息
cd ~/kernel-4.9
cp .config arch/arm64/configs/yhai_defconfig
//第二种保存配置
$ make savedefconfig //生成defconfig  (相比make  menuconfig 里的Save保存的配置,这是最简的)
$ cp defconfig arch/arm64/configs/yhai_defconfig //发布配置(原厂发布配置到内核就是该方式)

2.编译

$ make  /*编译所有
 常需指定 交叉编译工具链 CROSS_COMPILE(如无默认采用 gcc)
方式一: make  CROSS_COMPILE=aarch64-linux-gnu-   直接指定
方式二: export CROSS_COMPILE=aarch64-linux-gnu-  导出环境变量
 */
$ make  all
$ make Image //只编译内核
$ make modules //只编译模块
$ make dtbs //只编译设备树

$ make install /*安装内核  就是把编译出来的二进制文件,库,配置文件等等放到相应目录下
 常需指定 安装路径 INSTALL_PATH
方式一: make install INSTALL_PATH=/tftpboot   直接指定
方式二: export INSTALL_PATH=/tftpboot  导出环境变量
 */
$ make modules_install /*安装模块
  常需指定 安装路径 INSTALL_MOD_PATH
方式一:make modules_install INSTALL_MOD_PATH=~/Linux_for_Tegra/rootfs   直接指定
方式二:export INSTALL_MOD_PATH=~/Linux_for_Tegra/rootfs  导出环境变量
 */

3.菜单配置的实现

为什么make menuconfig后能生成图形界面

image-20220912134924752

3.1顶层配置

Kconfig 总菜单

source “arch/$SRCARCH/Kconfig” 子菜单

menu “Bus support” 显示的字

menuconfig 可以选的菜单

config 可以选的参数

default 默认选择 显示-*-

bool 只有YN 显示[*]

tristate 三态YNM 显示<>

{
   //Kconfig
//对应菜单信息 .config - Linux/arm64 4.9.253 Kernel Configuration
mainmenu "Linux/$ARCH $KERNELVERSION Kernel Configuration"

config SRCARCH
    string
    option env="SRCARCH"

source "arch/$SRCARCH/Kconfig" //导入子Kconfig
	
}

{
   //arch/arm64/Kconfig
source "init/Kconfig"  //gf  跳转到子配置【这个对应General setup --->】
    
source "kernel/Kconfig.freezer"                                       
      
source "arch/arm64/Kconfig.platforms"     //3.2平台选择                            
      
menu "Bus support"                                                    
      
config PCI                                                            
    bool "PCI support"
    help                                                              
      This feature enables support for 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值