从当前运行的Linux系统获取内核配置?


96

我不小心在Linux上删除了我的内核配置的.config,似乎记得有一种方法可以通过proc文件系统以某种方式检索内核配置。

这仍然是可能的,如果是这样,我该怎么做?


@Sonny Ordell:现在有两个有效答案。你能接受其中一个吗?
Hennes

3
@Hennes User从此没有上过线 Jun 27 '11 at 16:19。不要以为他会接受任何东西。
DanteTheEgregore

Answers:


98

根据您的系统,您可以在以下任何一个系统中找到它:

  1. /proc/config.gz
  2. /boot/config
  3. /boot/config-$(uname -r)

可能还有更多的地方。


4
在某些发行版(Fedora / Redhat)上,它是/boot/config-2.6.18-194.el5或类似的,附加了内核发行字符串。
Phil

1
@Phil我运行一个发行版(Zenwalk),其中这些文件名由最新的内核包进行符号链接 /boot/config。我会继续将这些添加到列表中 - 感谢提醒我。
new123456

在/ boot / config - $(uname -r)为amazon linux和可能的RHEL
aeb0

1
在Ubuntu Mate或Kali Linux for RaspBerry Pi上不存在此类文件。
Sopalajo de Arrierez

1
您应该提到您的第一个项目(/ proc)仅在加载模块“configs”时可用
Andy

51

对于实际运行的内核,获取配置文件的一种方法是

cat /proc/config.gz | gunzip > running.config

要么,

zcat /proc/config.gz > running.config

然后 running.config 将包含正在运行的Linux内核的配置。

但是,只有在运行的Linux内核配置为具有此功能时,才有可能 /proc/config.gz。可在以下位置找到此配置

  • General setup
    • [*] Kernel .config support
      • [*] Enable access to .config through /proc/config.gz

大多数发行版都没有此配置集。它们在内核包中提供内核配置文件,通常可以在 /boot/ 目录。


5
这些被称为 CONFIG_IKCONFIGCONFIG_IKCONFIG_PROC,如果你正在为他们打招呼。
chronospoon

1
zcat /proc/config.gz 工作良好。
Quanlong

33

有点迟,但也许它可以帮到某人。我没有 /proc/config.gz 也不 /boot/config 也不 /boot/config-$(uname -r) 在我的电脑上。我不得不跑 modprobe configs 作为根。然后, /proc/config.gz 在场


可以在Intel MIC嵌入式Linux(BusyBox)上确认,这是必要且有效的。
Mark Lakata

4
Raspberry Pi 2上的Raspbian也是如此
Drew McGowen

2
FATAL: Module configs not found. 在OMV 2.2(Debian Wheezy)很高兴他们在/ boot / config中提供了它 - $(uname -r)
tuk0z

先生,救了我的一天。有一个+1
Christian

'modprobe configs'非常有帮助我有一些测试可以自动探测在Raspberry Pi 3上失败的kconfig,但现在可以工作了。谢谢你的提示!!
Tim Bird

8

如果在/ boot /或/proc/config.gz中找不到内核配置,可以尝试从内核本身提取此信息。

在任何内核源代码中都有一个用于解压缩配置的脚本 scripts/extract-ikconfig,将您希望其配置作为参数的内核传递给此脚本。

此解决方案仅适用于 Kernel .config support 已在编译的内核中启用。


2
这非常有帮助,并帮助我获得了许多我从未想过会看到的配置。谢谢!
selurvedu

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.