Windows 10 升级 Windows 11 蓝屏故障排查:双机调试实战

96 阅读6分钟

Windows 10 升级 Windows 11 蓝屏故障排查:双机调试实战

Windows 11 带来了全新的界面和功能,许多用户都希望升级体验。然而,升级过程并非总是一帆风顺,有时会遇到蓝屏等故障。本文将详细介绍如何在 VMware 虚拟机环境下,利用双机调试技术,排查 Windows 10 升级 Windows 11 失败并蓝屏的问题。

1. 故障现象与环境准备

故障现象:

在尝试将 VMware 虚拟机中的 Windows 10 升级到 Windows 11 的过程中,升级失败并出现蓝屏,错误码为 0xC1900101

调试环境:

  • 宿主机: Windows 11
  • 虚拟机: VMware Workstation,安装 Windows 10 (作为目标机)

2. 双机调试原理与设置

双机调试是指一台机器(宿主机)作为调试器,另一台机器(目标机)作为被调试对象,通过某种通信方式连接,从而实现对目标机内核或驱动程序的调试。在虚拟机环境下,设置双机调试相对简单。

2.1 目标机 (Windows 10 虚拟机) 配置

  1. 为虚拟机添加串行端口:

    • 关闭 Windows 10 虚拟机。
    • 在 VMware Workstation 中,右键点击虚拟机,选择 "设置 (Settings)"。
    • 点击 "添加 (Add)...",选择 "串行端口 (Serial Port)",然后点击 "完成 (Finish)"。
    • 在串行端口设置中,选择 "输出到命名管道 (Output to named pipe)"。
    • 管道名称 (Pipe Name): \\.\pipe\com_1 (这个名称可以自定义,但宿主机和目标机要一致)。
    • 此端 (This end): 选择 "服务器 (Server)"。
    • 另一端 (The other end): 选择 "应用程序 (Application)"。
    • 勾选 "连接时加电 (Connect at power on)"。
    • 点击 "确定 (OK)" 保存设置。
  2. 配置目标机引导选项:

    • 启动 Windows 10 虚拟机。
    • 打开管理员权限的命令提示符 (或者 PowerShell)。
    • 输入以下命令配置调试模式:
      bcdedit /debug on
      bcdedit /dbgsettings serial debugport:1 baudrate:115200
      
      • debugport:1 对应第一个串行端口(COM1)。
      • baudrate:115200 是通信波特率,通常使用这个值。
    • 重启虚拟机,确保设置生效。

2.2 宿主机 (Windows 11) 配置

  1. 安装调试工具:

    • 在宿主机上安装 Windows 软件开发工具包 (Windows SDK),其中包含了 WinDbg。
    • 安装时,确保选择 "Debugging Tools for Windows" 组件。
  2. 启动 WinDbg 连接:

    • 打开 WinDbg (通常在 "开始菜单" -> "Windows Kits" -> "Debugging Tools for Windows" 中)。
    • 点击 "文件 (File)" -> "内核调试 (Kernel Debug)"。
    • 在 "内核调试" 对话框中,选择 "COM" 选项卡。
    • 端口 (Port): \\.\pipe\com_1 (与虚拟机中设置的管道名称一致)。
    • 波特率 (Baud Rate): 115200 (与虚拟机中设置的波特率一致)。
    • 勾选 "重新同步时重置 (Resets on reconnect)"。
    • 点击 "确定 (OK)"。

此时,WinDbg 会尝试连接目标机。如果一切顺利,WinDbg 会显示 "等待连接..." (Waiting to connect...)。

3. 触发故障与调试分析

  1. 在 WinDbg 连接成功后,在虚拟机中启动 Windows 11 升级过程。
  2. 当虚拟机蓝屏时,WinDbg 会捕获到调试信息并中断执行。
  3. 分析 WinDbg 输出:
    • 首先,查看蓝屏信息,通常会提供错误码和停止代码。在本例中,我们已知错误码是 0xC1900101
    • 使用 !analyze -v 命令可以获取详细的蓝屏分析报告。

通过仔细分析 !analyze -v 的输出,结合 Windows 升级失败的错误码 0xC1900101,我们可以开始推断问题根源。

4. 问题根源与解决方案

经过调试和对错误码 0xC1900101 的深入研究(结合微软官方文档和其他社区经验),我们最终找到了导致 Windows 10 升级 Windows 11 失败并蓝屏的根本原因:

核心原因: 当我们在进行 Windows 升级的时候(尤其是较新版本的 Windows 10 升级),如果在升级安装的途中有删除(或者重命名)了一些用户个人路径下的文件,例如:

  • C:\Users\xxx\Documents (文档文件夹)
  • C:\Users\xxx\Pictures (图片文件夹)
  • C:\Users\xxx\Desktop (桌面文件夹)

等路径中的文件时,就会导致升级安装失败,并伴随错误码 0xC1900101

解释: Windows 升级程序在执行过程中,会对这些关键的用户配置文件和数据进行校验和迁移。如果发现这些目录中的文件被删除或重命名,升级程序可能会认为文件缺失或路径不一致,从而导致升级流程中断,最终表现为蓝屏。

解决方案:

  1. 备份重要数据: 在进行任何系统升级之前,务必备份 C:\Users\xxx\ 路径下的所有重要个人数据。
  2. 还原或避免修改用户目录: 在升级前,请确保 C:\Users\xxx\DocumentsC:\Users\xxx\PicturesC:\Users\xxx\Desktop 等标准用户文件夹中的文件没有被删除或重命名。如果之前有删除或重命名过,尝试将其恢复到原始状态。
  3. 使用全新的用户配置文件进行升级(可选但推荐):
    • 在 Windows 10 中创建一个全新的本地管理员用户账户。
    • 使用新账户登录系统,然后尝试进行 Windows 11 升级。这样可以避免现有用户配置文件可能存在的问题。
  4. 运行系统文件检查器 (SFC) 和 DISM 工具: 在升级前,运行以下命令检查和修复系统文件:
    sfc /scannow
    dism /online /cleanup-image /restorehealth
    

5. 踩坑点

  1. 双机调试的时候,windbg无法调试虚拟机:
  • 虚拟机里面的主机调试端口要改成配置的端口:com1,否则由于默认模式占用了com1端口,调试模式默认占用的端口是com2;
  1. 通过MSConfig命令,打开【系统配置】-【引导】修改即可:

image.png

6. 总结

通过本次双机调试实战,我们不仅掌握了在 VMware 虚拟机环境下设置和使用 WinDbg 进行内核调试的方法,还成功排查并解决了 Windows 10 升级 Windows 11 过程中遇到的蓝屏问题。

遇到系统升级故障时,双机调试是一个非常强大的工具。虽然本次问题的根本原因相对简单,但其排查过程充分体现了调试的价值。未来在遇到更复杂的驱动或内核问题时,掌握双机调试技能将大有裨益。

希望这篇博客文章能帮助到正在为 Windows 升级问题而困扰的读者!