gpt4 book ai didi

linux - 在 Bootpimage 的情况下,initrd 真的会减少内核镜像的大小吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:44 36 4
gpt4 key购买 nike

根据维基百科关于 initrd 的文章"许多 Linux 发行版都发布了一个单一的通用内核镜像 - 发行版开发人员打算在尽可能广泛的硬件上启动该镜像。该通用内核镜像的设备驱动程序作为可加载模块包含在内,因为将许多驱动程序静态编译到一个内核中会导致内核镜像变得更大,可能太大而无法在内存有限的计算机上启动。这就引发了在启动时检测和加载挂载根文件系统所需的模块的问题,或者就此而言,推断根文件系统在哪里或什么。为了避免将这么多特殊情况的处理硬编码到内核中,使用了带有临时根文件系统的初始引导阶段——现在称为早期用户空间。该根文件系统可以包含用户空间助手,这些助手执行必要的硬件检测、模块加载和设备发现,以安装真正的根文件系统。

我的问题是,如果我们在 initrd 中添加加载实际文件系统所需的模块等,而不是在实际内核镜像中进行保存,那么我们将在 Bootpimage 的情况下实现什么,其中内核和 initrd 组合在一起形成一个 bootpimage。即使使用 initrd,内核的大小也会增加。

谁能澄清一下?

最佳答案

定义“内核的大小”。

是的,如果你有一个最小的内核镜像加上一个包含数百个模块的 initrd,它可能会占用比编译了所有内容的等效内核更多的总存储空间,所有模块头等。然而,一旦它被引导,确定它在什么硬件上,加载一些模块并丢弃所有其余的(initrd 中的init),它将占用相当少的<强>内存。另一方面,全内置内核镜像一旦启动,在内存中仍然和在磁盘上一样大,所有不需要的驱动程序代码都在浪费空间。

存储几乎总是比 RAM 更便宜、更丰富,因此在系统运行后以减少可用内存为代价来优化存储空间通常有点愚蠢。即使对于网络启动,为了稍微加快启动速度而牺牲运行时能力以获得总图像大小也没有什么意义。这种考虑可能有任何优点的少数几种系统几乎肯定不会首先使用通用多平台内核。

关于linux - 在 Bootpimage 的情况下,initrd 真的会减少内核镜像的大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26927431/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com