I accidentally deleted my .config for my kernel configuration on Linux, and seem to remember there was a way to retrieve the kernel configuration via the proc filesystem somehow.
Is this still possible, and if so how would I do it?
I accidentally deleted my .config for my kernel configuration on Linux, and seem to remember there was a way to retrieve the kernel configuration via the proc filesystem somehow.
Is this still possible, and if so how would I do it?
Depending on your system, you'll find it in any one of these:
/proc/config.gz
/boot/config
/boot/config-$(uname -r)
and possibly more places.
/boot/config
. I'll go ahead and add these to the list - thanks for reminding me.
Commented
May 23, 2011 at 20:15
zgrep CONFIG_OPTION /proc/config.gz
if you want to search for a specific option without unzipping a copy of the config file.
Commented
Sep 25, 2020 at 6:34
For an actual running kernel, one way to get the config file this is to
cat /proc/config.gz | gunzip > running.config
or,
zcat /proc/config.gz > running.config
Then running.config
will contain the configuration of the running linux kernel.
However this is only possible if your running linux kernel was configured to have /proc/config.gz
. The configuration for this is found in
General setup
[*] Kernel .config support
[*] Enable access to .config through /proc/config.gz
Most distributions do not have this configuration set. They provide kernel config files in their kernel packages and is usually found in /boot/
directory.
CONFIG_IKCONFIG
and CONFIG_IKCONFIG_PROC
, if you're grepping for them.
Commented
Mar 26, 2015 at 18:34
zless
worked
Commented
Jan 22, 2021 at 21:24
A Little bit late but maybe it helps someone. I didn't have /proc/config.gz
nor /boot/config
nor /boot/config-$(uname -r)
on my Computer. I had to run modprobe configs
as root. Then, /proc/config.gz
was present
FATAL: Module configs not found.
on OMV 2.2 (Debian Wheezy) so glad they provided it in /boot/config-$(uname -r)
Regardless of the distribution, you can run: cat /lib/modules/$(uname -r)/build/.config
Source: proc(5) man page (search for /proc/config.gz
).
If you couldn't find kernel configuration in /boot/ nor in /proc/config.gz, you can try extracting this information from the kernel itself.
Inside any kernel source code there is a script for extracting config located in scripts/extract-ikconfig
, pass the kernel you want its configuration as parameter to this script.
This solution will only work if Kernel .config support
was enabled in the compiled kernel.
If you can't find any of the suggested files and you are able to modprobe
you should almost always be able to get a copy of the current config this way.
modprobe configs # might need `sudo modprobe configs`
# This will create /proc/config.gz
zcat /proc/config.gz
# Or if you are looking for whether a specific option was set
zgrep USBIP /proc/config.gz
Run modprobe configs
as root to create /proc/config.gz
After that zcat /proc/config.gz > /boot/config-$(uname -r)
to list config of the kernel.
For RedHat-based distributions, the .config file of the off-the-shelf kernel can be found with the command cat /lib/modules/$(uname -r)/build/.config
that's available after the package kernel-devel is installed using the command:
yum -y install kernel-devel
Note that with the real Red Hat Enterprise Linux distribution, you will need to enable the source-repository to get this package. On RHEL8, use the following command to do that:
subscription-manager repos --enable=rhel-8-for-x86_64-baseos-source-rpms