Linux
如果一個 linux 核心參數以不同的值傳遞兩次會發生什麼?
正如問題所述,如果我通過了怎麼辦
kernel /vmlinuz audit=1 audit=0
審計是啟用還是禁用?或者核心會嚇壞嗎?或者它是未定義的並且將取決於所傳遞的核心/參數的建構?
好吧,看看linux/kernel/params.c中的 Vanilla 程式碼和
parse_one
函式(對於 v3.2.6),我認為這audit=0
將是核心使用的版本作為列表中的最後一個版本。static int parse_one(char *param, char *val, const struct kernel_param *params, unsigned num_params, int (*handle_unknown)(char *param, char *val)) { unsigned int i; int err; /* Find parameter */ for (i = 0; i < num_params; i++) { if (parameq(param, params[i].name)) { /* No one handled NULL, so do it here. */ if (!val && params[i].ops->set != param_set_bool) return -EINVAL; DEBUGP("They are equal! Calling %p\n", params[i].ops->set); mutex_lock(¶m_lock); err = params[i].ops->set(val, ¶ms[i]); mutex_unlock(¶m_lock); return err; } } if (handle_unknown) { DEBUGP("Unknown argument: calling %p\n", handle_unknown); return handle_unknown(param, val); } DEBUGP("Unknown argument `%s'\n", param); return -ENOENT; }
我現在還沒有靠近 GNU/Linux 機器來驗證這一點,它還取決於你的核心發行商完成的更新檔。