Как говорится в вопросе, что, если я пройду
kernel /vmlinuz audit=1 audit=0
Будет ли аудит включаться или отключаться? Или ядро просто взбесится? Или он не определен и будет зависеть от сборки переданного ядра / аргумента?
Что ж, глядя на код Vanilla в Linux / ядро / params.c и 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, чтобы проверить это, и это также будет зависеть от патчей, сделанных распространителем вашего ядра.