我一直在构建我自己的内核(4.19.37),在构建过程中没有任何问题 (make
)或安装(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,但是当我执行启动时,我得到一个内核恐慌。
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镜像有问题。
更聪明的是,我的最后一个实验是将新旧initramfs镜像用 mount
. 它们都成功地挂载,没有错误,而且似乎有相同的文件结构。 我也比较了我的新旧 .config
内核构建的文件,它们的差异是微不足道的。
其他一些注意观察。
List of all partions:
不产生任何结果,所以我想知道是否文件系统类型有问题? 我的硬盘是 xfs
的文件系统是什么?initramfs
? CPIO?grub>
命令行。ls /
产生了我所期望看到的 /boot
. 它包含了我所有的 vmlinuz-*
和 initramfs-*.img
档案xfs
low-latency
先发制人的模式。 我实在想不出我当时做了什么不同的事情。所以最后的问题是 initramfs
形成这些构建? 我还能做什么来验证它的完整性? 是否有任何 .config
的内核时,我应该做的改变。xfs
文件系统?
声明:所以这其实是[这个问题][3]的延续,但我把问题简化了一些。 一些背景信息可能是相关的。
在使用yum update更新内核后,使用新内核重新启动虚拟机,你会得到一个内核恐慌错误。
yum remove kernel
yum update