GRUB可识别NVME SSD但Linux无法识别的故障原因咨询
兄弟,你的这个故障场景挺典型的,结合你给出的细节——UEFI能检测到硬件、GRUB能读取NVME分区甚至加载内核,但不管是原系统的initramfs还是live Linux都在/dev和lsblk里看不到这个NVME设备,连Windows也启动不了——我来梳理几个最可能的原因:
NVME控制器的PCIe通信故障
你怀疑的PCI总线即插即用响应问题,确实是核心方向之一。GRUB和UEFI识别NVME的逻辑跟Linux内核完全不一样:GRUB只需要最基础的PCIe枚举和简单的NVME读命令就能获取启动文件,而Linux内核要完成完整的PCIe设备初始化、与NVME控制器协商全套通信协议。如果NVME设备的PCIe链路出现部分故障(比如链路训练失败、控制器芯片虚焊,或者设备本身的PCIe模块损坏),就会出现UEFI/GRUB能勉强访问,但内核没法完成完整设备枚举的情况。这种大概率是硬件层面的问题。NVME固件进入异常保护状态
你提到系统突然死机、强制断电,这种异常断电很可能导致NVME SSD的固件卡死或者进入保护模式。UEFI和GRUB因为只做最基础的设备探测和读操作,可能还能绕过这个状态,但Linux内核的NVME驱动会严格检查设备的固件状态,一旦发现异常就会放弃枚举。你可以试试冷重启:拔掉电源,等个三五分钟再通电开机,或者看看主板BIOS里有没有NVME设备的重置选项,说不定能让固件恢复正常。内核驱动兼容性(可能性较低,但值得排查)
虽然你用live系统也识别不到,但如果这个live系统的内核版本特别旧,刚好不支持你的NVME型号的新固件,也有可能出现这种情况?不过结合Windows也启动不了,这个可能性其实很小,还是更偏向硬件或固件问题。另外你说关闭Secure Boot后GRUB能执行命令,但没解决核心问题,说明Secure Boot不是根源,排除了驱动签名导致的识别问题。
最后给你个排查建议:先试试物理检查——把NVME SSD拔下来重新插紧,要是主板有多余的PCIe插槽,换个插槽试试;或者把这个SSD接到其他电脑上测试。如果在其他电脑上也识别不了,基本可以确定是SSD本身的硬件故障;如果能识别,那可能是原主板的PCIe插槽或控制器出问题了。
备注:内容来源于stack exchange,提问作者Sia

