后续参数是否会覆盖 Linux 内核命令行中的前一个参数,反之亦然?

后续参数是否会覆盖 Linux 内核命令行中的前一个参数,反之亦然?

这是由其他地方的另一个问题,在简单地进行了快速在线搜索(“linux 内核命令行覆盖优先级”和一些变体)后,绝对没有发现任何结果。

问题是/proc/cmdline表明某个参数已包含两次且具有不同的值。 我的问题不是关于为什么会这样或者它是如何发生的,即哪个优先。换句话说,将其作为命令行:

foo=12 console=tty1 foo=16

如果foo是一个不能有意义地具有两个值的设置,是否有适用其中一个值的约定?

答案1

我不确定内核中是否明确记录了它,但是x86特定的启动命令行解析包括这个评论:

找到一个非布尔选项,即“option=argument”。根据标准 Linux 实践,如果重复此选项,则会返回命令行上的最后一个实例。

这允许用户将设置添加到命令行末尾,而无需关心命令行中的任何前面的值。

看着通用解析代码证实了这一点:参数被一个接一个地读取,并且重复参数设置的任何值都会被最后一个实例覆盖。

在你的例子中,foo=16获胜。

请注意,解析工具/proc/cmdline有自己的行为,可能不遵循内核约定。

相关内容