这是由其他地方的另一个问题提示的,在简要地进行了快速在线搜索(“linux 内核命令行覆盖优先级”和一些变体)之后,完全没有发现任何问题。
问题是/proc/cmdline
表明一个参数已被包含两次,具有不同的值。 我的问题不是关于为什么会这样或如何发生,而是哪个优先。换句话说,将其作为命令行:
foo=12 console=tty1 foo=16
如果foo
是一个不能有意义地具有两个值的设置,是否有任何适用的约定?
这是由其他地方的另一个问题提示的,在简要地进行了快速在线搜索(“linux 内核命令行覆盖优先级”和一些变体)之后,完全没有发现任何问题。
问题是/proc/cmdline
表明一个参数已被包含两次,具有不同的值。 我的问题不是关于为什么会这样或如何发生,而是哪个优先。换句话说,将其作为命令行:
foo=12 console=tty1 foo=16
如果foo
是一个不能有意义地具有两个值的设置,是否有任何适用的约定?
我不确定它是否在内核中明确记录,但特定于 x86 的引导命令行解析包含以下注释:
这允许用户将设置添加到命令行的末尾,而无需关心命令行中的任何先前值。
查看通用解析代码证实了这一点:一个接一个地读取参数,并且由重复参数设置的任何值都被最后一个实例覆盖。
在您的示例中,
foo=16
获胜。请注意,解析的工具
/proc/cmdline
有自己的行为,可能不遵循内核约定。