/proc/config.gz 是什么

简述

Linux 可以在内核本身存储用于内核构建的 gzip 内核配置文件副本,并通过 /proc/config.gz 提供给用户。也就是说,/proc/config.gz 就是当前的 Linux 内核配置文件,并且是用 gzip 格式压缩过的。

但不是所有的 Linux 发行版都有 /proc/config.gz 文件,大部分常见的 Linux 发行版就没有提供,比如 Ubuntu。只有当内核配置 CONFIG_IKCONFIGCONFIG_IKCONFIG_PROCy,才会在 /proc 中出现 config.gz 文件。当然,即使大多数发行版没有提供 /proc/config.gz,当仍然可以通过 /boot 查看内核配置信息。

操作

执行 file /proc/config.gz 查看文件信息:

/proc/config.gz: gzip compressed data, max compression, from Unix, original size 149025

可以看到确实是 gzip 压缩文件,我们可以使用 zcat 或 zgrep 工具查看,比如:

zcat /proc/config.gz | grep IKCONFIG    # 显示文件所有内容并查找IKCONFIG配置信息
zgrep "IKCONFIG" /proc/config.gz        # 显示IKCONFIG配置信息

zcatzgrep 命令用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。

我们可以看到,当前系统的确配置 IKCONFIG

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y

作为对比,我也检查下 Ubuntu 中的配置。

cat /boot/config-$(uname -r) | grep IKCONFIG

如你所想,并没有配置。

# CONFIG_IKCONFIG is not set

为了调试方便,我们可以将当前内核配置解压并保存起来。

zcat /proc/config.gz > runninig.config

与 /boot 中的内核配置文件对比发现,两者完全一致。

diff runninig.config /boot/config-$(uname -r)

最后,如果配置了 CONFIG_IKCONFIG 但是没有配置 CONFIG_IKCONFIG_PROC 的话,我们可以使用 Linux 为我们提供的 extract-ikconfig 脚本从内核映像文件中提取出配置文件。例如:

./scripts/extract-ikconfig arch/arm/boot/zImage | tee config_file

猜你喜欢

转载自blog.csdn.net/luckydarcy/article/details/108908577