这里以 imx6q(imx6d 和 plus 的类似)的 qt 系统内核编译为例,Ubuntu16 的内核和
qt 通用,android6.0 的配置和 qt 的类似。
1 内核源码中默认缺省文件的位置
如下图所示,进入源码的“kernel_imx”目录,可以看到两个脚本
“build_android_kernel.sh”和“build_qt_kernel.sh”,分别用来编译 android 和 qt 的内
核和设备树,这部分在用户手册上有介绍,根据不同参数即可完成编译。
打开“build_qt_kernel.sh”文件,如下图所示,是脚本的一部分。
注意上图中的“make imx_v7_linux_defconfig”,这一句脚本是用来配置却文件的,这
是 linux 内核编译的一个默认用法,它表示内核的配置 config 文件,使用
“arch/arm/configs/”路径下一个叫“imx_v7_linux_defconfig”的缺省文件。如下图所
示,我们可以找到这个缺省文件。
另外还有 android 的缺省文件,使用命令“ls
arch/arm/configs/imx_v7_android_defconfig”,如下图所示。
2 配置缺省文件
知道了默认缺省文件之后,接下来我们来通过 menuconfig 修改缺省文件,检验到底对
不对。
启动开发板,如下图所示,可以看到有一个设备节点“/dev/leds_ctl”,这是 led 小灯的
设备节点。
我们现在要配置缺省文件,去掉这个驱动,让内核不能生成这个设备节点。首先,备份一
下默认的缺省文件,以免修改错误,使用命令“cp
arch/arm/configs/imx_v7_linux_defconfig imx_v7_linux_defconfig”
如下图所示,如果配置失败无法编译内核,可以用备份在 kernel_imx 路径下的
imx_v7_linux_defconfig 缺省文件覆盖掉 arch/arm/configs/路径下的
imx_v7_linux_defconfig 缺省文件。
接着配置配置需要使用.config 文件,如下图所示,使用命令“cp
arch/arm/configs/imx_v7_linux_defconfig .config”覆盖掉.config 文件。
启动 menuconfig,使用“export ARCH=arm”,然后使用“make menuconfig”命
令,进入 menuconfig 界面,如下图所示,一定要确保进入的是 arm 4.1.15 界面。
选择“Device Drivers->”->“Character devices->”,找到“Enable LEDS
onfig”,如下图所示。
敲回车,然后去掉 led 驱动的配置,如下图所示。
最后退出,保存修改,这样我们就得到新的.config 文件,选择 Yes。
使用新的.config 文件覆盖掉“arch/arm/configs”目录下的 imx_v7_linux_defconfig
文件,使用命令“cp -r .config arch/arm/configs/imx_v7_linux_defconfig”,如下图所
示。
最后编译执行“./build_qt_kernel.sh”脚本(其它版本核心板,需要传递参数,参考用
用户手册对应章节),编译 imx6q 的 qt 的内核,烧写到开发板。
会发现 led 的设备节点“/dev/leds_ctl”没有了,表明.config 和 menuconfig 以及缺省
文件使用方法正确。