![Linux 启动过程](https://linux22.com/image/930986/Linux%20%E5%90%AF%E5%8A%A8%E8%BF%87%E7%A8%8B.png)
我对 Linux 中的启动过程有一些疑问。到目前为止,我了解到 BIOS 将引导代码(第 1 阶段 GRUB 引导加载程序)从引导扇区 (MBR) 加载到 RAM 并执行它(程序计数器跳转到那里)。作为回报,第 1 阶段引导加载程序将执行具有更多功能的第 1.5 阶段引导加载程序 (core.img)。然后,第 1.5 阶段引导加载程序将执行在 /boot/grub 中找到的第 2 阶段 GRUB 引导加载程序。
到目前为止,内核尚未加载。但是,阶段 1.5 引导加载程序能够在 /boot 目录中找到 grub。这是否意味着 GRUB 1.5 应该包含模块来“理解”/boot 目录可能位于的所有可能的文件系统?
随后,GRUB 将加载 RAM 中的内核映像并将控制权传递给它(内核)。
但是,内核不应该编译包括所有可能的模块和功能,因为这样会大大增加其大小。但是,内核会在 RAM 中加载临时的初始文件系统 (initrd),因为它是一个 RAM 磁盘,其中包含可以根据需要加载的程序和模块。因此,内核应该具备处理 RAM 磁盘的能力。
完成后,内核将把 initrd 移动到另一个目录,并将实际文件系统挂载在 /。
我的观点正确吗?谢谢