Linux-Kernel

後續參數是否會覆蓋 linux 核心命令行中的先前參數,反之亦然?

  • February 8, 2022

這是由其他地方的另一個問題提示的,在簡要地進行了一次快速的線上搜尋(“linux 核心命令行覆蓋優先級”和一些變體)之後,一無所獲。

問題是/proc/cmdline表明一個參數已被包含兩次,具有不同的值。 我的問題不是關於為什麼會這樣或如何發生,而是哪個優先。換句話說,將其作為命令行:

foo=12 console=tty1 foo=16

如果foo是一個不能有意義地具有兩個值的設置,是否有任何適用的約定?

我不確定它是否在核心中明確記錄,但特定於 x86 的引導命令行解析包含以下註釋:

找到一個非布爾選項,即“option=argument”。根據標準 Linux 實踐,如果重複此選項,則會返回命令行上的最後一個實例。

這允許使用者將設置添加到命令行的末尾,而無需關心命令行中的任何先前值。

查看通用解析程式碼證實了這一點:一個接一個地讀取參數,並且由重複參數設置的任何值都被最後一個實例覆蓋。

在您的範例中,foo=16獲勝。

請注意,解析的工具/proc/cmdline有自己的行為,可能不遵循核心約定。

引用自:https://unix.stackexchange.com/questions/689799