Linux kernel 启动Linux内核所需的所有必要参数是什么

Linux kernel 启动Linux内核所需的所有必要参数是什么,linux-kernel,x86,bootloader,u-boot,Linux Kernel,X86,Bootloader,U Boot,我是linux内核新手,尝试从加载到RAM的角度来理解linux内核的引导,我想知道在linux映像加载到RAM之后,控制是如何传递到这个映像的,需要传递给内核的所有必要参数是什么,我们可以在不传递任何参数的情况下将控制传递到linux映像吗 我正在研究带有“bootm.c”的UBOOT代码,但无法理解控制传递到Linux映像的位置,是哪个函数负责控制 是load_zimage()负责传递控件/ 有谁能给我指出正确的方向,或者就这一部分提出一些好的教程吗 从x86 Architectiure引导

我是linux内核新手,尝试从加载到RAM的角度来理解linux内核的引导,我想知道在linux映像加载到RAM之后,控制是如何传递到这个映像的,需要传递给内核的所有必要参数是什么,我们可以在不传递任何参数的情况下将控制传递到linux映像吗

我正在研究带有“bootm.c”的UBOOT代码,但无法理解控制传递到Linux映像的位置,是哪个函数负责控制

是load_zimage()负责传递控件/

有谁能给我指出正确的方向,或者就这一部分提出一些好的教程吗
从x86 Architectiure引导linux的方法

我想这要看情况了。不同的CPU体系结构,它们使用不同的方式将信息传递给Linux内核。当然,Linux内核可以在不向其传递引导加载程序信息的情况下成功引导,但它需要在Linux内核中静态地正确设置,例如根设备名称、控制台设备、mem大小,以及一些参数,以启用/禁用Linux内核中的某些功能

为什么引导加载程序需要向Linux内核传递各种信息(参数),我认为这是一个灵活的考虑。考虑一下这种情况,可以在两块板上使用相同的CPU但不同的外围模块共享一个Linux内核

让我展示一些UBoot将信息传递给Linux内核的示例:

(1) 对于PowerPCCPU,现在他们使用DTB(设备树Blob)文件将更多信息从UBoot传递到Linux内核。他们将UBoot和DTB视为固件,而在Linux内核中,他们采用一个开放的固件(OF)基础结构。您可能知道UBoot中的“bootm”命令,bootm可以有三个参数,第一个是uImage地址,第二个是initrd地址,第三个是dtb地址

(2) 早期,他们使用引导参数将信息传递给Linux内核。另外,您可能知道UBoot中有gd/bd结构,它们还可以将信息传递给Linux内核。但以这种方式传递的信息是有限的,不像DTB


希望以上信息能帮助您理解您的问题。

请指定您所谈论的体系结构。对于每种情况,要求都是不同的。请看,它依赖于体系结构。是的,我想知道x86体系结构,代码的哪一部分真正将控制权转移到内核映像,以及需要传递到内核的所有(最小)参数是什么。