是否有可能回收 initrd 使用的内存?

是否有可能回收 initrd 使用的内存?

我正在为嵌入式设备开发启动过程。目前,我正在使用 initrd(未压缩时为 4 MB)来设置我的真实根分区,然后才能继续启动(我必须根据一些信息选择一个分区,然后使用 unionfs 覆盖另一个分区)。

但是,我担心用于 initrd 文件系统的内存会被永久保留用于此用途,即使它只在启动时间的几秒钟内需要。该设备只有 256 MB 的 RAM,而其中的 4 MB 似乎相当大。

  • 有没有办法恢复这个记忆?
  • 如果我使用 initramfs 而不是 initrd,这会给我带来什么好处吗?
  • 还有其他选择吗?

答案1

initrd/initramfs 使用的内存在完成后被释放,即当挂载了真正的根文件系统时。所以通常你应该担心这一点。你的问题表明你没有使用 initrd/initramfs 作为运行时根文件系统,因此它使用的内存会自动释放。

有关详细信息,请参阅内核文档的 initrd 部分在“更改根设备”标题下。

相关内容