Linux 内核如何处理未知的内核参数?

Linux 内核如何处理未知的内核参数?

假设我向内核传递了一个它不理解的参数,例如blablaeat=cake,内核会如何处理这些未知参数,传统情况是将任何未知参数传递给init,以防 Linux 内核以早期用户启动space (initramfs) 会将其传递到/initinitramfs 中吗?

答案1

来自内核文档

内核从内核命令行解析参数到--;如果它无法识别参数并且不包含 a .,则该参数将传递给 init:参数=进入 init 的环境,其他参数将作为命令行参数传递给 init。之后的所有内容--都作为参数传递给 init。

这也适用于/initinitramfs。在源代码中,initramfs/init和最终根/sbin/init(或其他位置)都是通过以下方式调用的run_init_process它使用相同的参数(除了参数 0,它是可执行文件的路径)。我找不到文档中的说明,但内核接口是稳定的,因此不会改变。

请注意,这不适用于/linuxrcinitrd。调用此函数时不带任何参数,但环境与/init和相同/sbin/init。它可以挂载 proc 文件系统并读取/proc/cmdline以查看内核命令行参数。

相关内容