前言
有时候,我们想知道一个运行着的内核都打开了哪些编译选项,当然,查看编译环境的 .config 文件是一个不错的选择,除此之外,还有没有别的办法呢?当然有,那就是 /proc/config.gz。
一睹风采
nvidia@nvidia-desktop:~$ zcat /proc/config.gz
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 5.15.136 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2022.08) 11.3.0"
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=110300
CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y
CONFIG_AS_VERSION=23800
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=23800
正确性
目标机器
nvidia@nvidia-desktop:~$ zcat /proc/config.gz > config
nvidia@nvidia-desktop:~$ md5sum config
052ecbe3933bfbcafec0164b31b2c127 config
宿主机
liyongjun@box:~/nvme/36_3/Linux_for_Tegra/source/kernel/kernel-jammy-src$ md5sum .config
052ecbe3933bfbcafec0164b31b2c127 .config
md5 值相同,说明内容完全一致
如何开启
要想在系统中产生 /proc/config.gz,需要开启下面两个内核编译选项
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
如果只开启了 CONFIG_IKCONFIG,也不会产生 /proc/config.gz,但可以从 Image 中提取 .config,具体命令如下
liyongjun@box:~/nvme/36_3/Linux_for_Tegra/source/kernel/kernel-jammy-src$ ./scripts/extract-ikconfig arch/arm64/boot/Image > config_tmp