How-To View Kernel Configuration

Alexey Eremenko "Technologov"

$Revision: 09 $

$Date: 2007-01-01 $

Revision History
Revision 917 Apr 2007A.E.
uname -r introduced
Revision 816 Apr 2007A.E.
extra USBFS example added
Revision 101 Jan 2007A.E.
First public release

Scenario

You got a binary kernel from some Linux system. You want to know it's configuration options and which extra modules were added to it.

For example: openSUSE does not use the standard Linus Torvald's "vanilla" kernel, but uses a slightly modified version of it, therefore I want to know which extra features were added. Unfortunately, finding such a documentation across distros is very difficult, so I had to learn a way to do exactly that.

The technique, that I am going to describe here, allowed me to see that SUSE Linux 10.0, while on paper had a kernel-version below the requirements for running FUSE, actually *had* FUSE included.

This How-To uses standard GNU/Linux commands, therefore it is not specific to openSUSE.

Procedure

  1. The command is very simple: (Note: it can be run as an unpriviledged user!)

    suser@localhost:~> cat /boot/config-"your kernel version"

    or retrieve the kernel version, by using the proper command-inside-command.

    suser@localhost:~> cat /boot/config-$(uname -r)

    This uses the internal “uname -r” command first, to retrieve the kernel version, then gives the outer command (cat) the control to continue execution.

  2. Example1: Of course, we can add some search filters to it, for example to search for FUSE, use:

    suser@localhost:~> cat /boot/config-$(uname -r) | grep -i fuse

    Example2: list all the iptables firewall modules that are included in your specific kernel.

    suser@localhost:~> cat /boot/config-$(uname -r) | grep -i netfilter; cat /boot/config-$(uname -r) | grep -i nf_
    

    Example3: Show the recently readded "usbfs" component:

    suser@localhost:~> grep CONFIG_USB_DEVICEFS /boot/config-$(uname -r)
    [Note]Note 1

    I have said a component, not a module, because it was compiled into the kernel itself.

    [Note]Note 2

    Notice that I used grep directly, without using "cat" first. This syntax uses the input pipeline of grep directly.