当前的内核构建选项存储在哪里?

Ali*_*cia 34 compiling linux-kernel

有没有办法知道内核是否是在激活某个选项(即CONFIG_PROC_EVENTS=y)的情况下编译的,而不必拉出内核源代码包并查看配置文件?

slm*_*slm 31

如果您查看/boot目录,您会注意到这些文件:

$ ls -l /boot/|grep config
-rw-r--r--  1 root root   109919 Oct 21  2011 config-2.6.35.14-100.fc14.x86_64
-rw-r--r--  1 root root   109919 Oct 27  2011 config-2.6.35.14-103.fc14.x86_64
-rw-r--r--  1 root root   109919 Nov 23  2011 config-2.6.35.14-106.fc14.x86_64
Run Code Online (Sandbox Code Playgroud)

请注意您使用的内核版本:

$ uname -r
2.6.35.14-106.fc14.x86_64
Run Code Online (Sandbox Code Playgroud)

如果您grep通过适当的“config- uname -r”文件,您可以看到内核是用哪些选项构建的:

$ grep CONFIG_PROC_EVENTS= /boot/config-`uname -r`
CONFIG_PROC_EVENTS=y
Run Code Online (Sandbox Code Playgroud)

参考

  • 这在基于 Debian 的发行版中是正确的,但在其他发行版中可能并非如此,例如 Arch Linux。 (9认同)
  • 我使用 Arch Linux,我可以确认这在 Arch Linux 中不起作用。 (5认同)

Ali*_*cia 21

内核选项可以在/proc/config.gz.

zgrep CONFIG_PROC_EVENTS= /proc/config.gz
Run Code Online (Sandbox Code Playgroud)

如果内核是用CONFIG_IKCONFIG_PROC=y. 如果内核是用 编译的CONFIG_IKCONFIG_PROC=m,那么可能需要先modprobe configs.

  • 在发行版内核中,IKCONFIG 选项只能作为模块启用。尝试 `modprobe configs` 并检查 /proc/config.gz 是否出现。 (7认同)

Eva*_*oll 5

如果您的内核是使用 构建的CONFIG_IKCONFIG_PROC,您可以找到列出的配置/proc/config.gz

zless /proc/config.gz
Run Code Online (Sandbox Code Playgroud)

基于 Debian 和 Redhat 的内核包通常安装一个config-$version文件在/boot,

less /boot/config-$(uname -r)
Run Code Online (Sandbox Code Playgroud)

kernel-package在 Debian 中,您还可以在中找到默认选项./kernel/Config/config以及在 中找到特定于体系结构的配置选项./kernel/Config/

mkdir /tmp/k
cd /tmp/k
apt-get source kernel-package
find . -path '*/kernel/Config/*' -type f
Run Code Online (Sandbox Code Playgroud)