我正在使用 Linux(基于 Yocto 的自定义操作系统)对设备进行映像处理Dell OptiPlex Micro 3000
。Grub 版本 2.04。我正在使用 A/B 分区方案并尝试让回退正常运行,但我认为我可能在某处遇到了与 BIOS(UEFI)设置的冲突。
预期结果:如果任一启动选项遇到内核崩溃,系统应该回退到另一个启动选项。
实际结果:如果出现内核恐慌,系统将重新启动,然后 nvme 驱动器就会消失。
启动选项类似,但根驱动器除外(一个指向 /dev/nvme0n1p2,一个指向 /dev/nvme0n1p3),例如
linux /bzImage root=PARTUUID=*snip* rootwait rw oprofile.timer=1 root/dev/nvme0n1p2 rootfstype=ext4 console=ttyS0,115200 console=tty0 crashkernel=auto panic=5
如果 bzImage 有问题,我使用此选项启动,随后出现内核崩溃,5 秒后重新启动 - 然后系统启动到我的 Clonezilla 映像拇指驱动器。我输入 Clonezilla 命令行,ls /dev
没有 nvme 驱动器或分区。事实上,也没有/dev/nvme0
控制器。
如果我重新启动并选择驱动器的启动选项,我会看到一个 UEFI 风格的窗口,上面显示“无硬盘”。
如果我浏览 UEFI 菜单并尝试添加驱动器的启动选项,则不会列出该设备。
不过,奇怪的是,如果我:
- 内核恐慌
- 重启
- 进入 UEFI 设置
- 退出(不做任何改变或修改,不保存)
- 重启
它从我的设备加载启动菜单。换句话说,再次“找到” nvme 控制器的唯一方法是打开 UEFI 设置,然后再次重新启动。
另请注意:如果我不指定panic=5
,则会发生内核崩溃,并且我按住电源按钮重新启动,则不会发生这种情况。 自动重启似乎panic=5
是导致这种情况的原因。
- 什么原因会导致内核恐慌并导致 NVMe 控制器“消失”?
- 刚进入 UEFI 设置菜单时会发生什么情况,导致 NVMe 控制器在下次重启时再次返回?