我在具有NVME驱动器的系统上安装了CentOS 7.6。一切顺利,系统运行正常。默认情况下,它带有内核3.10,因此我将内核升级到了最新版本(5.1.5),并更改了grub中的内核引导顺序。但是,每当使用5.x内核版本重新启动系统时,系统都会进入紧急模式,并显示以下错误:
Could not boot
/dev/centos/root doesn't exist
/dev/centos/swap doesn't exist
/dev/mapper/centos-root doesn't exist
如果我切换回内核版本3.10,则系统重新启动就很好。我仅在5.x版本中收到此错误。 我比较了3.x和5.x的/ boot / initramfs,发现下面的内核驱动程序包含在3.x中,但不包含在5.x中
lsinitrd -k <5.x kernel version>
usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/nvdimm
usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/nvdimm/libnvdimm.ko.xz
usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/nvdimm/nd_btt.ko.xz
usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/nvdimm/nd_pmem.ko.xz
usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/nvme
usr/lib/modules/3.10.0-57.el7.x86_64/kernel/drivers/nvme/host
usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/nvme/host/nvme-core.ko.xz
usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/nvme/host/nvme.ko.xz
因此,我执行了以下命令以在5.x中包含nvme驱动程序并重建了initramfs。
echo 'add_drivers+=" nvme "' > /etc/dracut.conf.d/nvme.conf
一旦这样做,我就能看到nvme驱动程序被包含在5.x initramfs中(尽管文件名不同)。
usr/lib/modules/5.1.5-1.el7.elrepo.x86_64/kernel/drivers/nvdimm
usr/lib/modules/5.1.5-1.el7.elrepo.x86_64/kernel/drivers/nvdimm/nd_btt.ko
usr/lib/modules/5.1.5-1.el7.elrepo.x86_64/kernel/drivers/nvdimm/nd_pmem.ko
usr/lib/modules/5.1.5-1.el7.elrepo.x86_64/kernel/drivers/nvme
usr/lib/modules/5.1.5-1.el7.elrepo.x86_64/kernel/drivers/nvme/host
usr/lib/modules/5.1.5-1.el7.elrepo.x86_64/kernel/drivers/nvme/host/nvme-fabrics.ko
usr/lib/modules/5.1.5-1.el7.elrepo.x86_64/kernel/drivers/nvme/host/nvme-tcp.ko
我再次使用5.x内核版本重新启动了系统,并且再次出现相同的错误。我还阅读了一些rootdelay的信息,以防设备延迟被内核检测到,但是,由于系统从3.x内核开始运行,我没有尝试过。
有人知道这里会发生什么吗?