【发布时间】:2015-01-11 16:38:26
【问题描述】:
根据维基百科关于 initrd 的文章 "许多 Linux 发行版都提供一个单一的通用内核映像 - 发行版的开发人员打算在尽可能广泛的硬件上启动。这个通用内核映像的设备驱动程序作为可加载模块包含在内,因为将许多驱动程序静态编译到一个内核中会导致内核映像变得更大,可能太大而无法在内存有限的计算机上启动。这会引发在启动时检测和加载挂载根文件系统所需的模块的问题,或者就此而言,推断根文件系统的位置或内容。 为了避免将这么多特殊情况的处理硬编码到内核中,使用了带有临时根文件系统(现在称为早期用户空间)的初始引导阶段。这个根文件系统可以包含用户空间助手,这些助手执行硬件检测、模块加载和设备发现,以安装真正的根文件系统。 "
我的问题是,如果我们在 initrd 中而不是在实际的内核映像中添加加载实际文件系统所需的模块等来保存保存,那么在内核和 initrd 组合形成单个 bootpimage 的 Bootpimage 情况下我们将实现什么。即使使用 initrd,内核的大小也会增加。
有人可以澄清一下吗?
【问题讨论】:
-
您将问题标记为 arm,这使诸如“单个通用内核映像 - 发行版的开发人员打算在尽可能广泛的硬件上启动”之类的任何概括都无效。因为 arm 内核/系统映像是完全定制的。
-
@auselen 嘿,我们也有 CONFIG_MULTIPLATFORM !另外,对于 arch/arm64 单张图片是强制性的,所以它并不是 无关紧要的。
-
@Notlikethat arm64 单张图像是强制性的吗?
-
@auselen 好吧,这是“强制性的”,因为维护者将拒绝接受任何特定于平台的代码(即always the intention),并且仍然非常热衷于保留a single config。至少对于支持 FDT 的系统而言,即 EFI/ACPI 支持在其显着成熟之前可能仍然是可选的。
-
@Notlikethat 谢谢!
标签: linux linux-kernel arm initrd