如果 grub 和 sysctl 中的内核参数冲突怎么办?

如果 grub 和 sysctl 中的内核参数冲突怎么办?

例如,如果我oops=panic在 grub 命令中设置,并且也在kernel.panic_on_oops=0sysctl config 中设置?例如:在/etc/sysctl.d/中

会发生什么?

这两个参数是否映射到内核中的相同功能/特性?

为什么不使用相同的变量名?

答案1

sysctl设置在启动后应用,因此在大多数情况下它们会覆盖内核命令行上给出的等效设置(例外是只能设置一次的值)。

内核oops参数和kernel.panic_on_oopssysctl 都映射到同一个变量,panic_on_oops。这是由oops_setup如果在命令行上指定了一个值,并且已导出通过kernel表中的sysctl

变量定义显示了一个第三设置方式:它的默认值由一个控制构建配置设置,CONFIG_PANIC_ON_OOPS

至于为什么不使用相同的名称,可能有历史原因,并且仍然存在一个显着差异:panic_on_oops期望 0 或 1,而oops寻找与“panic”匹配的值;因此,虽然这两个设置都映射到同一基础变量,但oops增加了一定程度的间接性。

相关内容