启动失败 - Initramfs 丢弃 shell,且 NVMe 磁盘不存在

启动失败 - Initramfs 丢弃 shell,且 NVMe 磁盘不存在

我最近换了笔记本电脑,并通过 将装有 Ubuntu 的 M2 SATA 升级为 M2 NVMe dd。首先,我启动到 livecd(ubuntu 22),创建了一个 chroot 环境,清除了所有linux-image-*linux-headers-*软件包并重新安装linux-image-genericlinux-headers-generic,在 Ubuntu 20 上安装了 5.4 版本的内核。然后我继续重建 Grub 和 Initramfs。

在启动时,系统挂起并最终删除 initramfs 的 busybox shell,我注意到我的/dev/nvme*磁盘没有出现,而我插入的 LiveCD 显示为/dev/sda

/proc/modules返回的内容是nvme,、nvme_corevmd模块已加载,并且 BIOS 中已启用 VMD。

需要注意的是,/dev/nvme*当我从 livecd 进行从头安装时,这些卷可用。如果能就此事提供帮助,我将不胜感激。

答案1

遇到了类似的问题。事实证明,NVME 启动需要 linux-modules-extra-* 包中的一个模块。因此,我必须从 Ubuntu-Live-Image 启动,打开 shell,然后执行以下操作:

sudo -i

mount /dev/nvme0n1p2 /mnt
mount /dev/nvme0n1p1 /mnt/boot/efi
for i in /dev /proc /sys /run
do
    mount -o bind $i /mnt/$i
done

chroot /mnt /bin/bash

dpkg -l | grep linux-image   # Find your kernel package, e.g. linux-image-5.15.0-84-generic

apt-get install linux-modules-extra-5.15.0-84-generic  # Install what is missing

exit  # chroot

for i in /mnt/dev /mnt/proc /mnt&sys /mnt/run /mnt/boot/efi /mnt
do
    umount $i
done

请注意,版本号或设备名称等详细信息可能需要根据您的情况进行调整。如果您不确定,可以使用以下命令来更好地了解您的设备名称或映射您可能在启动错误消息中看到的 UUID:

lsblk -f

相关内容