这是由其他地方的另一个问题,在简单地进行了快速在线搜索(“linux 内核命令行覆盖优先级”和一些变体)后,绝对没有发现任何结果。
问题是/proc/cmdline
表明某个参数已包含两次且具有不同的值。 我的问题不是关于为什么会这样或者它是如何发生的,即哪个优先。换句话说,将其作为命令行:
foo=12 console=tty1 foo=16
如果foo
是一个不能有意义地具有两个值的设置,是否有适用其中一个值的约定?
答案1
我不确定内核中是否明确记录了它,但是x86特定的启动命令行解析包括这个评论:
找到一个非布尔选项,即“option=argument”。根据标准 Linux 实践,如果重复此选项,则会返回命令行上的最后一个实例。
这允许用户将设置添加到命令行末尾,而无需关心命令行中的任何前面的值。
看着通用解析代码证实了这一点:参数被一个接一个地读取,并且重复参数设置的任何值都会被最后一个实例覆盖。
在你的例子中,foo=16
获胜。
请注意,解析工具/proc/cmdline
有自己的行为,可能不遵循内核约定。