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)
当然,我的假设是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
?
免责声明:所以这实际上是一个延续这个问题,但我稍微简化了问题。一些背景信息可能是相关的。