自定义内核在Centos 7上产生不可启动的initramfs。

问题描述 投票:0回答:1

我一直在构建我自己的内核(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)

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
  • 我试过其他各种版本的内核,结果都一样。
  • 我有两次成功的构建和安装,一次是现有的内核(4.19.10),它是一个升级,第二次是用相同的内核与一个 low-latency 先发制人的模式。 我实在想不出我当时做了什么不同的事情。

所以最后的问题是 initramfs 形成这些构建? 我还能做什么来验证它的完整性? 是否有任何 .config 的内核时,我应该做的改变。xfs 文件系统?


声明:所以这其实是[这个问题][3]的延续,但我把问题简化了一些。 一些背景信息可能是相关的。

linux-kernel centos kernel centos7 initramfs
1个回答
0
投票

在使用yum update更新内核后,使用新内核重新启动虚拟机,你会得到一个内核恐慌错误。

yum remove kernel

yum update

© www.soinside.com 2019 - 2024. All rights reserved.