45

Is there a way to know if the kernel was compiled with a certain option activated (i.e. CONFIG_PROC_EVENTS=y) without having to pull out the kernel sources package and looking in the config file?

0

4 Answers 4

39

If you look through your /boot directory you'll notice these files:

$ 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

Notice what version of the Kernel you're using:

$ uname -r
2.6.35.14-106.fc14.x86_64

If you grep through the appropriate "config-uname -r" file you can see what options the Kernel was built with:

$ grep CONFIG_PROC_EVENTS= /boot/config-`uname -r`
CONFIG_PROC_EVENTS=y

References

10
  • 10
    That's true in Debian based distros, but may not be true in others, i.e. Arch Linux.
    – Alicia
    Jul 17, 2013 at 6:56
  • 1
    @ntrrgc - I can't confirm for ArchLinux, but it's that way for RedHat, Debian, & Ubuntu. These 3 distros cover most of the *nix world. If someone has a ArchLinux distro can you please confirm this approach?
    – slm
    Jul 17, 2013 at 11:24
  • 5
    I use Arch Linux and I can confirm this does not work in Arch Linux.
    – Alicia
    Jul 17, 2013 at 15:31
  • @slm this isn't even true for Ubuntu, at least Kubuntu. I just checked — the only thing I have in /boot/ is grub directory.
    – Hi-Angel
    Nov 24, 2015 at 15:52
  • @slm perhaps are these configs a part of some package? Then it would be enough to list files of that package.
    – Hi-Angel
    Nov 24, 2015 at 16:02
25

Kernel options can be found in /proc/config.gz.

zgrep CONFIG_PROC_EVENTS= /proc/config.gz

if the kernel was compiled with CONFIG_IKCONFIG_PROC=y. If the kernel was compiled with CONFIG_IKCONFIG_PROC=m, then it may be necessary to first modprobe configs.

2
  • 1
    This did not work for me on any of the distros that I had available: Debian, RedHat based, nor Ubuntu. These are all stock systems so I don't think this approach is that useful unless you built your kernel yourself or your particular distro provides it.
    – slm
    Jul 17, 2013 at 11:25
  • 8
    In distro kernels, the IKCONFIG option may be enabled only as a module. Try to modprobe configs and check if /proc/config.gz shows up.
    – XZS
    Sep 5, 2013 at 15:21
5

If your kernel was build with CONFIG_IKCONFIG_PROC, you can find the configuration listed in /proc/config.gz

zless /proc/config.gz

Debian and Redhat based kernel packages generally install a config-$version file in /boot,

less /boot/config-$(uname -r)

In Debian you can also find the default options in kernel-package's ./kernel/Config/config as well as architecture specific configuration options in ./kernel/Config/.

mkdir /tmp/k
cd /tmp/k
apt-get source kernel-package
find . -path '*/kernel/Config/*' -type f
1

sudo find / -xdev -name .config(-xdev keeps it on one filesystem)

Generally it will be under /usr/src/some-specific-kernel-header-version/.config

Just read it as any text, search with grep, or to see how two versions differ diff -y -suppress-common-lines /path/linux2.6-r3/.config /path/linux2.6-r4/.config

2
  • 2
    Well, dangit. Someone gave Max a -1, but out of all the methods here, it worked on my RHEL7 machine. So, I have no choice: +1. I found my file at /usr/src/kernels/3.10.0-1062.el7.x86_64/.config
    – Mike S
    Aug 5, 2021 at 16:30
  • 1
    @MikeS I think I was on Debian at that answer date, but I was using CentOS7 not long before.
    – Max Power
    Sep 30, 2021 at 20:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.