Kernel

Linux核心對未知核心參數做了什麼?

  • August 27, 2017

假設我向核心傳遞了一個它不理解的參數,例如blablaor eat=cake,核心將如何處理這些未知參數,傳統情況是將任何未知參數傳遞給init,以防Linux核心以早期使用者啟動空間(initramfs)會傳遞給/initinitramfs 嗎?

核心文件

核心從核心命令行解析參數到--; 如果它不辨識參數並且不包含 a .,則將參數傳遞給 init: 參數與=進入 init 的環境,其他參數作為命令行參數傳遞給 init。之後的所有內容都--作為參數傳遞給 init。

這也適用/init於 initramfs。在原始碼中,initramfs/init和最終根/sbin/init(或其他位置)都被呼叫,run_init_process它們使用相同的參數(除了參數 0 是執行檔的路徑)。我在文件中找不到它,但核心介面是穩定的,所以這不會改變。

請注意,這不適用於/linuxrcinitrd。/init這個呼叫不帶參數,但與and具有相同的環境/sbin/init。它可以掛載 proc 文件系統並讀取/proc/cmdline以查看核心命令行參數。

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