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

这仍然可行,如果可以的话我做到了吗?

评论

@Sonny Ordell:现在有两个有效答案。您可以接受其中之一吗?

@Hennes用户自2011年6月27日16:19开始不在线。不要以为他会接受任何东西。

superuser.com/questions/577307/…|| askubuntu.com/questions/163304/…|| stackoverflow.com/questions/14376540/…|| unix.stackexchange.com/questions/83319/…|| serverfault.com/questions/51032/…

#1 楼

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


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

甚至更多地方。

评论


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

–菲尔
2011年5月23日15:50

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

–new123456
2011年5月23日在20:15

在/ boot / config-$(uname -r)中用于Amazon Linux和RHEL

–aeb0
16-11-27在23:47

在用于RaspBerry Pi的Ubuntu Mate或Kali Linux上不存在此类文件。

– Sopalajo de Arrierez
17-10-5在23:23

您应该提到,只有在加载了模块“ configs”后,您的第一项(/ proc)才可用

–安迪
18-2-27在7:41

#2 楼

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

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/目录中找到。

评论


如果您要寻找它们,这些称为CON​​FIG_IKCONFIG和CONFIG_IKCONFIG_PROC。

– chronospoon
15年3月26日在18:34

zcat /proc/config.gz工作正常。

–全龙
16年8月22日在4:15

少/proc/config.gz也可以正常工作

– nocnokneo
20年8月6日在10:53



#3 楼

有点晚了,但也许对某人有帮助。我的计算机上没有/proc/config.gz/boot/config/boot/config-$(uname -r)。我必须以root用户身份运行modprobe configs。然后,出现/proc/config.gz

评论


可以在Intel MIC嵌入式Linux(BusyBox)上进行确认,这是必要且可行的。

–马克·拉卡塔(Mark Lakata)
16-2-23在18:59

与Raspbian Pi 2上的Raspbian相同

–德鲁·麦克高恩(Drew McGowen)
16-3-24的2:39

严重:找不到模块配置。在OMV 2.2(Debian Wheezy)上很高兴,他们在/ boot / config-$(uname -r)中提供了它

–tuk0z
16-4-12在11:42

先生,您救了我的一天。 +1

–基督徒
18年1月14日在10:26



“ modprobe configs”非常有用,我进行了测试,可以自动探测在Raspberry Pi 3上失败的kconfig,但现在可以正常工作。谢谢你的提示!!

–提姆·伯德(Tim Bird)
19年1月3日,0:40

#4 楼

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

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

仅当在已编译的内核中启用Kernel .config support时,此解决方案才有效。

评论


这非常有帮助,并帮助我获得了许多我从未见过的配置。谢谢!

–selurvedu
17-10-2在14:16

#5 楼

可以独立于发行版运行:cat /lib/modules/$(uname -r)/build/.config

源:https://linux.die.net/man/5/proc(搜索/proc/config)。

#6 楼

对于基于RedHat的发行版,可以使用命令cat /lib/modules/$(uname -r)/build/.config找到现成内核的.config文件,该命令在使用以下命令安装kernel-devel软件包后可用:

yum -y install kernel-devel


请注意,使用真实的Red Hat Enterprise Linux发行版,您将需要启用源代码库以获取此软件包。在RHEL8上,使用以下命令执行此操作:

subscription-manager repos --enable=rhel-8-for-x86_64-baseos-source-rpms


#7 楼

如果找不到任何建议的文件,并且您能够modprobe,则几乎应该总是可以通过这种方式获取当前配置的副本。

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


评论


有趣的想法,但是我不确定可用的configs模块是否附带了足够的内核。我在方便的Ubuntu 18.04或20.04系统上找不到它。

–格雷格·史密斯(Greg Smith)
20 Sep 8'0:40

我发现它在ChromeOS上特别有用,在ChromeOS上它们不包含压缩的配置,但确实包含用于导出正在运行的配置的模块(如果需要)。

–dragon788
20-09-8的3:02