什么时候需要 initrd?

mat*_*ots 3 linux kernel initrd initramfs

我已经读到我可以在没有 initrd 的情况下启动内核,并且我还读到在 initrd 阶段加载了额外的模块——据我所知,对于内核中未包含的必要驱动程序。

如果我使用 构建内核make defconfig && make,我可以期望内核在哪种硬件上启动?一个相当现代的桌面?虚拟机?

我什么时候真的需要 initrd/initramfs?

我正在尝试组合一个最小的系统来在 Virtualbox 上进行测试,如果可能的话,我想保持简单而不使用 initrd。

roz*_*acz 6

您可以在没有initrd任何硬件的情况下启动。我自己从不在台式机/笔记本电脑和家庭服务器上使用它,因为它只会增加启动时间。到目前为止,我发现它确实有必要的唯一情况是当您的根文件系统位于 LVM 上时(但我可能有错误 - 也可能有一些方法可以解决这个问题)。

如果您希望您的设置快速而简单,您应该首先尝试从内核配置中删除所有不必要的内容。在配置内核时,您可以通过两种通用方法来做到这一点:

  • 剥离- 尝试摆脱所有不必要的模块和选项

或者

  • 建立- 采用最少的配置并添加您需要的东西

我个人推荐第二个选项 - 只是因为它需要更少的时间,并且您可以避免被所有选项的不确定性所淹没。作为一个很好的起点,您可以选择一个足够的Pappy's kernel seed。你可以在他的网页上找到更多关于这些的信息。使用这种方法,我的一般提示是首先运行lspci -knn,它会告诉您,您的大多数硬件当前使用哪些模块。