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“编译成模块(需要在编译文件里特殊定义)
”空“不编译状态
”*“编译进内核 -
退出
不保存退出
保存退出