定制内核生成不可启动的 initramfs - CentOS 7

定制内核生成不可启动的 initramfs - CentOS 7

make我一直在构建自己的内核 (4.19.37),并且在构建 ( ) 或安装 ( make install_modules+ make install)期间没有任何问题。一切似乎都很顺利,直到我执行grub2-mkconfig -o /boot/grub2/grub.cfg。执行此命令时,grub 会vmlinuz-*在其中找到我现有的和新的内核/boot/以及它们相应的initramfs-*.img.但是,此时系统会无限期挂起(> 几个小时)。 Ctrl+C似乎无法阻止它,我必须重新启动。我已经研究了这个问题,我发现可能存在的问题是探测可启动操作系统的删除磁盘,我通过删除它们和添加到GRUB_DISABLE_OS_PROBER=true每个/etc/default/grub磁盘来消除了这个问题这篇SE帖子。两者都没有帮助。

重新启动后,我最终进入grub>命令行,大概是因为grub2-mkconfig从未完成并损坏了 grub 配置文件。在这里,我可以毫无问题地加载新旧内核以及 initramfs,但是当我执行 boot 时,我遇到了内核恐慌:

end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

结束内核恐慌 - 不同步:VFS:无法在未知块(1,0)上安装根文件系统

当然,我的假设是initramfs-4.19.37.img我的构建过程中出现了一些问题。作为一个实验,我测试了是否可以加载新内核,但使用旧的 initramfs (4.19.10),事实上它确实启动到emergency mode.然而,我不能用新的 initramfs 做相反的旧内核。所以我的新 initramfs 映像有些可疑。

变得更聪明,我的最后一个实验是使用mount.它们都成功安装,没有错误,并且似乎具有相同的文件结构。我还比较了内核构建的新旧文件.config,差异很小。

其他一些注释/观察:

  • 在上图中,您可以看到List of all partions:没有产生任何结果,所以我想知道文件系统类型是否存在问题?我的硬盘是xfs什么文件系统的initramfs?首席信息官?
  • grub>命令行中,ls /生成我期望在/boot.它包含我的所有vmlinuz-*文件initramfs-*.img
  • 我的文件系统是xfs
  • 我尝试过各种其他内核版本,结果相同
  • 我已经成功构建和安装了两次,一次是现有内核(4.19.10),这是一个升级,第二次是使用具有low-latency抢占模型的相同内核。我一生都无法弄清楚当时我做了什么不同的事情。

所以最后的问题是 -initramfs这些构建的形式有什么问题?我还能做什么来验证它的完整性?.config在为文件系统构建内核时,我应该进行任何更改吗xfs


免责声明:所以这实际上是一个延续这个问题,但我稍微简化了问题。一些背景信息可能是相关的。

相关内容