linux内核裁剪的“秘密”

1、内核裁剪的思路

首先,输入命令 make menuconfig进入配置菜单;
然后,退出且保存配置;
保存成功后,在linux源码根目录下.config文件根据menueconfig的配置生成对应的宏定义;
最后,编译内核时候,编译器会根据.config文件里的宏定义进行内核裁剪。

2、对menuconfig菜单的探讨

(1)它的菜单是怎么形成的?
首先,利用make menuconfig命令进入菜单并不是什么神秘的东西,菜单的实现是在 scripts目录下,也就是说,这个菜单是通过脚本来实现的。

每个菜单项都是由Kconfig文件实现。

(2)Kconfig文件有什么作用?
在menuconfig首页,我们可以找到 Device Drivers选项。
在这里插入图片描述
紧接着,我们可以进入linux源码目录下的drivers文件夹,打开Kconfig文件。我们可以看到 menu "Device Drivers",这就对应了上面菜单所显示的名称。menu就是用来定义下一级的菜单。当我们进入"Device Drivers"菜单后,将进入下一级菜单。下一级的菜单,同样由Kconfig文件组成。Kconfig文件的位置也已经确定了,如下图所示。

在这里插入图片描述

(3)假如我们想在menuconfig里添加一个HelloWorld字符模块选项,那该怎么办?

首先,打开文件 linux-4.4.214/drivers/char。
然后,仿写一段配置代码。然后保存。定义为tristate,可以配置三种状态。
在这里插入图片描述
最后,开打配置菜单查看情况。Device Drivers->Character devices。默认是选上了。
在这里插入图片描述
在linux源码目录下的.config文件中,可以找到HELLO模块的宏定义。
在这里插入图片描述
当HELLO模块取消后的状态如下:
在这里插入图片描述

3、关于menuconfig的操作

  • 搜索
    界面输入 ”/“ ,输入查找关键词,输入”回车“即可搜索

  • 使用空格键选择具体驱动配置,有三种状态
    ”M“编译成模块(需要在编译文件里特殊定义)
    ”空“不编译状态
    ”*“编译进内核

  • 退出
    不保存退出
    保存退出

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值