构建自动化依赖的linux配置系统的思考(基于menuconfig)

自动化依赖的linux配置系统(基于menuconfig)

目的:将繁琐的menuconfig最大化避免重复,对一个长期项目,最大化减轻人力成本。

 

需要:

(1) mini_defconfig

(2) project.setup 文件, 保存两列,第一列为功能名称,第二列为选中与否(Y/N)

(3) function_config 文件,保存enable 该function必要的config设置,用于追加到mini_defconfig中;
 

1. 建立一个mini_defconfig, 此mini_defconfig 中是最小配置,即能保证系统启动后进入shell, 及最小linux命令。

这个最小defconfig将作为日后增加功能的baseline.

2. 以功能为导向,即以app为导向,每个功能app对应一个function config文件,里面保存着enable这个功能需要配置的config。

这些配置追加到mini_defcocnfig后,再make mini_defconfig, 会得到顺序调整过的.config,此时的.config即为增加了这个功能的defconfig.

 

3. 对于每一个project, 都会对应一个project setup配置文件,选中这个项目的功能,执行脚本时,脚本会把选中的功能对应的配置追加到mini_defconfig中,最后运行make mini_defconfig, 生成的.config中即该project 对应的config.

利用这种方式生成的系统,不需要额外做system size裁剪,这是正向按需求添加功能。而从一个别的项目拷贝过来的配置,却需要做配置的增减。

 

系统搭建需要完成的工作:

(1) 制作mini_defconfig

(2) 单独添加每一个功能,制作function_config 文件,目录名有function名字

(3) 制作 project.setup的选项全为N的baseline.

(4) 编写脚本:

      (1) 解析project.setup中的功能,和project名;

    (2) 拷贝mini_defconfig 为project_defconfig;

    (3)从config_dir中搜索对应支持功能的function_config,并依次追加到project_defconfig。

    (4)source 编译环境后,make project_defconfig, 生成对应.config, 并将.config 拷贝为project_defconfig.

 

优点:

(1)基于一个最小defconfig 来做功能添加,每个功能的config 依赖仅需要制作一次;

(2)各个功能的添加彼此独立,理论上,如果项目配置正确,config 在顶层可能会有重复选中的,但make project_defconfig后会梳理一遍;

(3)以后各个项目的系统大小裁剪工作被根据需求选择function来代替;即人工的事情,只重复一次,以后即可自动化配置;

 

注: 功能指二进制可执行文件,可按如下分类:

    (1)系统功能app

    (2)unit test

    (3)debug 工具

     (4)其余支持的linux 命令

 

 

你可能感兴趣的:(linux)