linux内核在早期启动阶段使用一种ram磁盘来访问模块。出于好奇,我想了解一个问题:
在此阶段,内核必须可以访问包含initramfs / initrd的文件。这意味着内核必须支持适当的文件系统。那么为什么initramfs的内容不能仅仅与普通文件位于同一文件系统中?
最佳答案
在此阶段,内核必须可以访问包含initramfs / initrd的文件。
这似乎是您感到困惑的核心:读取initramfs / initrd的不是内核,而是引导程序!内核不需要知道如何访问initramfs / initrd。这就是练习的重点!
引导加载程序将initramfs / initrd加载到内存中,并且有一个定义明确的通信协议,该协议允许引导加载程序告诉内核它将initramfs / initrd加载到哪个内存地址。
在使用initramfs的情况下,也可以将initramfs映像附加到内核映像。