例如,如果我oops=panic
在 grub 命令中设置,并且也在kernel.panic_on_oops=0
sysctl config 中设置?例如:在/etc/sysctl.d/中
会发生什么?
这两个参数是否映射到内核中的相同功能/特性?
为什么不使用相同的变量名?
答案1
sysctl
设置在启动后应用,因此在大多数情况下它们会覆盖内核命令行上给出的等效设置(例外是只能设置一次的值)。
内核oops
参数和kernel.panic_on_oops
sysctl 都映射到同一个变量,panic_on_oops
。这是由oops_setup
如果在命令行上指定了一个值,并且已导出通过kernel
表中的sysctl。
变量定义显示了一个第三设置方式:它的默认值由一个控制构建配置设置,CONFIG_PANIC_ON_OOPS
。
至于为什么不使用相同的名称,可能有历史原因,并且仍然存在一个显着差异:panic_on_oops
期望 0 或 1,而oops
寻找与“panic”匹配的值;因此,虽然这两个设置都映射到同一基础变量,但oops
增加了一定程度的间接性。