蓝屏反复出现,每次都以为解决了(笑。权作交流,也许你遇到的不是同样的问题。
更新说明:
- 250316 主要处理 SCSIAdapter
- 250214 主要处理注册表中的开机服务注册
- 241218 尝试了几种方案
241218
我的机器是 Dell Precision T5820,主板芯片组 Intel C422,实装 CPU Intel Xeon W2125。系统是 Windows 11 23H2,安装在 NVMe SSD 上,通过转接卡插在主板 PCIe 槽上。
首先,直接现象是某次重启后发现蓝屏报错 INACCESSIBLE_BOOT_DEVICE
。自动重启后能进系统,查看系统更新发现是最近的 SCSI driver 更新失败了。我依次尝试了:
- Windows Update > Advanced options > Recovery > Reinstall now 也就是自动下载当前版本修复系统。
- Windows Update 升级 24H2
- 制作安装盘升级 24H2
方法 1 曾经修复过我另一台机器的 Windows Hello 损坏,但这次失败了。重启后无法进入新的引导项,直接进入疑难解答了。通过命令提示符里 wpeutil reboot
二次重启后,应该是更新回滚了,经历较长时间的等待后能看到引导项选择,第一个是原版,第二个(甚至第三个等)都是更新版。选第一个能进入系统,但问题没有好转;选其他的会重启,再次进入疑难解答。
方法 2 几乎相同,两次重启后进入系统,但问题没有好转。我从 Windows Update 上看到一句 0xc1900101: safe os phase error during boot operation。有信息就有进展。但我想暴力一点,于是先尝试了方法 3,结果没区别。
既然看到过引导项选择,那就考虑从这入手。Win+R > msconfig
打开系统配置程序,Boot 选项卡里能看到好几项,跟刚刚进系统前的一一对应,只是这里显示的信息更多,能明确看到多出来的都是 C:\$Windows.~BT\NewOS
。
根据微软论坛里的问答和后来发现的官方文档,想从 C:\$Windows.~BT\Sources\Panther\
日志里找点踪迹,但没啥进展。
我曾经从戴尔 T5820 官方支持页面下载过 Intel-Virtual-RAID-on-CPU-Driver,一开始以为是某种芯片组更新,装了才发现它是一套软 RAID 方案,称为 Intel VROC/RST,不同叫法分别是服务器版、消费者版。这个 driver 也被称为 Intel Volume Management Device (VMD) driver。
在 BIOS 中有对应两处配置,分别允许 VMD 接管 NVMe 和 SATA 硬盘设备。启用后,因为先装了 VMD driver,所以无痛重启,进入系统,打开 VROC 管理界面可以看到相关信息,同时 CrystalDiskInfo 等软件就无法获取到硬盘信息了。没做更多配置,因为临时用不到。
很快就遇到了一处 VMD bug,机器长时间待机后,观察任务管理器发现 VMD 进程占用了巨量 handle 未释放。遂决定卸载禁用这一功能。那时遇到了蓝屏自动重启,但经过多次重启后 Windows 系统修复功能起了作用,成功进入系统。
但这时的处理应该不干净,所以现在的问题应该与此有关。翻遍论坛,猜测也许是系统更新时找不到 VMD driver 有关。我已经在 BIOS 关闭了 VROC,所以系统内 VMD 应该未启用,但查看设备管理器的存储控制器,却发现它还在,遂卸载之。
这时候留了个心思,根据论坛老哥的建议,在开始菜单电源菜单里按住 Shift 再点重启,这样进入的疑难解答是不同的,可以进入安全模式(去掉 F8 真是罪大恶极)。在安全模式里用 msconfig 删掉所有 NewOS 引导项,点 Make all boot settings permanent 使其成为常态配置而非临时配置(判断方法:msconfig General 选项卡里默认选中的是 Normal startup 而非 Selective startup),确认后二次重启。
它暂时好了,之后的我再次系统更新顺畅进行。
250214 更新
没过多久,随着又一次系统更新,蓝屏问题又出现了。这次以搜索注册表项为主,删除了如下几处:
HKLM\SYSTEM\Setup\FirstBoot\Services\iaVROC
我认为这个最关键HKLM\SYSTEM\CurrentControlSet\Services\iaStorAV
HKLM\SYSTEM\CurrentControlSet\Services\iaStorAVC
HKLM\SYSTEM\CurrentControlSet\Services\iaStorV
HKLM\SYSTEM\CurrentControlSet\Services\iaVROC
保险起见,考虑到上一次只卸载了虚拟设备,这次使用 dism++ 遍历、发现了如下几个驱动程序:
- 存储控制器 iavroc.inf
- 系统设备 ianullvmd.inf
备份后,使用 pnputil 删除它们:
& pnputil /enum-drivers
# 这里的编号每台机器都不一样,所以要用上述命令找到后再操作。
& pnputil /delete-driver oem19.inf
& pnputil /delete-driver oem21.inf
尝试系统更新,没问题。事情(再次)解决?
250316 更新
一觉醒来天又塌了,幸亏开了系统还原,然后在疑难诊断界面发现了新的系统还原点。还原后发现是系统更新触发的。
Intel Corporation - SCSIAdapter - 7.7.0.1260
安装错误 - 0x80240035
这个驱动看起来最可疑。
# 关闭服务 Windows Update
& Stop-Service wuauserv
# 清空更新服务缓存
& Remove-Item -Recursive C:\Windows\SoftwareDistribution\Download
# PowerShell 模块:系统更新管理,参见 https://cn.windows-office.net/?p=37220
Install-Module PSWindowsUpdate
# 缓存起来以便使用,默认展示的信息不够多
$wu = Get-WindowsUpdate -UpdateType Driver
# 简单看一眼,确认要查阅的下标,我这里是 [0]
$wu
# 展示更多信息
$wu[0] | Format-List
# 其实只需要 UpdateID,用如下命令
$wu[0].Identity
Hide-WindowsUpdate -UpdateID 40768155-6a86-4b60-aaf3-308970f1e9fe
显示更多信息的时候可以看到 DriverHardwareID,在我的机器上是 PCI\VEN_8086&DEV_F1A6
,使用 Get-PnpDevice -InstaceId
查询,即 C 盘对应的 NVMe SSD。
到这里似乎指示了另一个可能性,是我当年买的 Intel SSD 760P 驱动有问题。自从英特尔把闪存业务卖掉,估计就没有官方更新了,旧版又用不了。