Linux Kernel裁剪--menuconfig的使用

在项目初期,NXP提供了i.MX7ul的BSP包,里面包含了大量第三方平台的配置以及本项目未使用的功能。因此,需要在此基础上进行kernel的裁剪。
本文主要讲在不影响主要功能的前提下进行Linux Kernel裁剪的步骤。


开发平台

SOC: i.MX7ul
Kernel: 4.9.51


porting

porting uboot和kernel,保证kernel能够正常启动和串口能够正常使用。


替换.config为defconfig

kernel_imx7/ 目录下的.config拷贝到 arch/arm64/configs/xxx_defconfig做这一步是为了后面使用 make menuconfig 图形化配置生成的.configxxx_defconfig直接对比,对比的内容可以保证是自己通过图形化配置修改过的。
上面的方式通常是不标准的,make CROSS_COMPILE=XXX ARCH=arm64 xxx_defconfig 会将arch/arm64/configs/xxx_defconfig文件根据依赖关系生成.config文件。make CROSS_COMPILE=XXX ARCH=arm64 savedefconfig就可以将当前的.config文件生成与之对应的defconfig文件。


图形化配置

操作命令

执行 make menuconfig ARCH=arm xxx_defconfig
这里会将xxx_defconfigkernel_imx7/下所有的Kconfig生成图形化配置。

操作方式如下:

1
2
3
Arrow keys navigate the menu.  <Enter> selects submenus ---> (or empty submenus ----).  Highlighted letters are hotkeys.
Pressing <Y> includes, <N> excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> for Search.
Legend: [*] built-in [ ] excluded <M> module < > module capable

比如说,这里面的Device Drivers下,有个USB support,我们的项目中不需要这个功能,可以将其设置为N,然后保存到.config中。
这样,我们就可以将更新后的.config文件再次替换xxx_defconfig,这次修改的,就是去掉USB support相关的配置。或者使用make savedefconfig命令将.config转换为对应的defconfig文件。

查找

比如说我们知道某个配置,想要将其使能,但是不知道它的依赖关系以及在图形化配置下的哪个位置,那么可以使用/来进行搜索。比如说我们要使能CONFIG_USB_LIBCOMPOSITE,使用\搜索,然后使用数字键跳转到对应的内容上。

建议每次按照机能修改,每改一次做一次提交,保证kernel能正常的启动,并进行详细的说明。不要一次性改太多,免得以后调查问题回退不好定位。多次执行第4步,直至初步将kernel大致裁剪完毕。

Title:Linux Kernel裁剪--menuconfig的使用

Author:Victor Huang

Time:2019-11-26 / 18:11

Link:http://wowothink.com/0e320fa6/

License: Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)