“命令行”是如何从引导加载程序(grub)传递到内核(linux)的?

“命令行”是如何从引导加载程序(grub)传递到内核(linux)的?

Grub(或其他)将命令行参数发送到 Linux 内核,以修改某些参数。

如果我想在内核启动(并可能修改它)之前进入并查看此信息,应该在哪里查看?它是否存储在内核知道要查找的内存中的特定位置?

我知道一旦内核启动,它就会被放置在 /proc 条目下,但我正在寻找有关其工作原理的操作系统前信息(也许这是错误的地方?)

这是一个关于引导加载程序将信息传递到序列中的下一个精灵(通常但不限于内核)的方法的问题。这与grub设置无关

答案1

Grub工具多重引导规范。当它加载内核并将控制权移交给它时,它会传递一个指针信息结构在记忆中。该结构中的字段之一是命令行。

Linux内核有自己的启动协议, 但命令行以类似的方式处理:引导加载程序将其保留在内存中,并填充内核数据结构中的各个字段,以允许内核找到它。

答案2

引导加载程序完成引导加载管理后,它会启动一个最小的操作系统环境,通常基于 initrd.img 或 initramfs。您在 grub 文件中看到的内核参数将定向到在此最小环境之后启动的内核。通常,出于所有意图和目的,当您执行 mkiinitrd 时,将从 /etc 中选择的合理设置用于配置此 initrd 映像。

当通常的启动顺序发生时,初始环境已被转移并使用通常的内核。需要注意的一件事是,在 initrd 中启动的驱动程序可以驻留在正常执行中,这可能是一个令人头疼的问题。

相关内容