内核是否需要从引导加载程序获取内容。通常内核能够从头开始构建系统,那么为什么它需要来自boot-loader的任何内容? 我从内核看过这样的启动消息。

"Fetching vars from bootloader... OK"

那么 完全 是传递的变量吗? 如何从引导加载程序传递变量?它是通过堆栈吗?

有帮助吗?

解决方案

内核接受所谓的命令行选项,它们是基于文本的。这非常有用,因为您可以做很多事情而无需重新编译内核。至于参数传递,它依赖于架构。在ARM上,它通过指向内存中的位置或内存中的固定位置来完成。

以下是 ARM 的说明。 通常,内核无法从头开始启动计算机。可能来自bios,但那不是从头开始。它需要一些初始化,这是引导程序的工作。

其他提示

Linux内核从引导加载程序接受了一些参数,我现在记得的是 vga 参数。例如:

kernel /vmlinuz-2.6.30 root=/dev/disk/by-uuid/3999cb7d-8e1e-4daf-9cce-3f49a02b00f2 ro vga=0x318

看看你应该了解的关于Linux内核的10个启动时参数,它解释了一些常见的参数。

对于Linux内核,引导程序必须告诉内核。它包括像内核命令行(正如其他几个人已经提到的),内存中的 initrd 已经加载了它的大小,如果正在使用initrd(内核不能自己加载它;通常在使用initrd时,访问存储设备所需的模块都在initrd中,它也可能需要做在能够访问存储之前的一些相当复杂的设置,以及几个零碎的几率。

请参阅 Documentation / x86 / boot.txt (链接到2.6.30的版本)了解传统x86架构(32位和64位)的更多细节,包括如何将这些变量传递给内核设置代码。

引导加载程序不使用堆栈将参数传递给内核。至少在Linux的情况下,有一个相当复杂的内存结构,引导程序填充内核知道如何解析。这是引导加载程序将内核指向其命令行的方式。请参阅 Documentaion / x86 / boot.txt 了解更多信息。

Linux接受来自引导加载程序的变量以允许使用某些选项。我知道您可以做的一件事就是让它不必登录(恢复模式),还有其他几个选项。它主要是允许修复,如果有问题或密码更改。如果您选择使用其他选项,这就是Ubuntu Live-CD引导Linux的方式。

通常这些参数称为命令行参数,它从引导加载程序传递给内核模块。 Bootloader使用许多BIOS中断来检测,

memory
HDD
Processor
Keyboard
Screen
Mouse
ETC...

并且所有harwares详细信息都将在启动时检测到,即处于实模式,然后将此参数传递给内核。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top