🧠 VMware + CentOS 7 虚拟机卡死(看门狗watchdog cpu死锁)&宿主机崩溃排查全记录(含脚本+解决方案)hyperV 与 vmware冲突

系统环境:Windows 10(21H2)
VMware Workstation 版本:16.0.0 → 升级到 17.6.3
虚拟机系统:CentOS 7 Minimal + GUI
问题表现:虚拟机卡死、CPU 占用高、宿主机直接蓝屏
最终解决:关闭 Hyper-V 全家桶 + 更新 VMware + 升级虚拟硬件版本


🌟 问题现象

在 VMware Workstation 16.0.0 中运行 CentOS 7 虚拟机,出现以下问题:

  • 启动后数分钟内卡死,虚拟机界面冻结
  • 虚拟机内 CPU 占用率拉高(top 无法正常响应)
  • 虚拟机日志中提示 soft lockup(软死锁)
  • 主机 CPU 占用 20~70%,但主系统未立即死机
  • 关闭 vhv.enable = "TRUE" 后,主机直接蓝屏

🔍 初步排查过程

尝试的方向包括:

方案效果
重装 CentOS 虚拟机❌ 无效,死锁依旧
删除内核插件 / 禁用 systemd 服务❌ 无效
禁用 3D 图形加速 + 高性能电源模式⚠️ GUI 有改善,但死锁仍发生
修改 .bashrc 动态加载路径✅ GUI 界面卡顿改善,但无根本变化
重装 VMware Tools❌ 无改善

🐞 死锁关键日志

虚拟机 dmesg 或 /var/log/messages 日志中反复出现:

kernel: BUG: soft lockup - CPU#0 stuck for 38s! [kworker/0:1:25758]

这表示 CentOS 虚拟机内核线程被死锁卡死,未能在软中断时间窗口内释放 CPU,最常见于 虚拟化冲突 / 中断不可达 / VT-x 模拟失败。


🧪 虚拟化冲突初步怀疑

开始怀疑是 VMware 和 Windows 的 Hyper-V 存在冲突,因为:

  • 两者均使用 VT-x / AMD-V,底层虚拟化资源冲突
  • 主机未启用 Hyper-V,但后台残留相关驱动或设置
  • vhv.enable = "FALSE" 后导致主机崩溃 → 暴露系统未真正禁用 Hyper-V 相关模块

🛠 检测当前系统虚拟化状态(只读脚本)

在这里插入图片描述

保存为 check_vmware_conf.bat,右键以管理员运行:

@echo off
echo ========= VMware 虚拟化兼容性检测 =========

echo.
echo [1] 检查 Hyper-V 状态(bcdedit):
bcdedit | findstr "hypervisorlaunchtype"

echo.
echo [2] 检查 Hyper-V 功能是否启用(DISM):
DISM /Online /Get-Features | findstr /i "Microsoft-Hyper-V"

echo.
echo [3] 检查 Device Guard 注册表项:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" 2>nul

echo.
echo [4] 检查 Credential Guard 设置:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LsaCfgFlags 2>nul

echo.
echo [5] 检查内存完整性状态:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v Enabled 2>nul

echo.
echo ========== 检测完毕,请根据状态决定是否需要修改 ==========
pause

🧹 一键关闭影响 VMware 的设置(可选执行)

保存为 fix_vmware_conf.bat,右键以管理员运行:

@echo off
echo ========= 开始关闭 Hyper-V / Device Guard / Credential Guard / 内存完整性 =========

echo [1] 设置 hypervisorlaunchtype = off
bcdedit /set hypervisorlaunchtype off

echo [2] 禁用 Hyper-V 功能
DISM /Online /Disable-Feature:Microsoft-Hyper-V-All /NoRestart

echo [3] 删除 Device Guard 设置
reg delete "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /f

echo [4] 删除 Credential Guard 设置
reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LsaCfgFlags /f

echo [5] 禁用内存完整性配置
reg delete "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /f

echo.
echo ✅ 所有设置已处理,建议立即重启以生效。
pause

📦 完全卸载 Hyper-V(推荐执行)

DISM /Online /Disable-Feature:Microsoft-Hyper-V-All /NoRestart

或逐个禁用子模块:

DISM /Online /Disable-Feature:Microsoft-Hyper-V-Hypervisor /NoRestart
DISM /Online /Disable-Feature:Microsoft-Hyper-V-Services /NoRestart

🧾 宿主机崩溃日志查看方法

而完全卸载hyper后,启动windwos下虚拟机16.0.0的centos镜像直接崩溃,想起来之前解决崩溃办法竟然是用hyperV的兼容模式 让hyperV提供虚拟环境然后再用虚拟机vmware,开机是能开机但是不管centos7还是ubuntu都用一会就死锁 虚拟机卡死了(即使新安装的ubuntu),勉强能跑的错误的道路 比 完全不能跑的错误道路更要命,然后失去了 对hyperV的怀疑(之前好像是搜 虚拟机vmware开机崩溃怎么解决 有人教我再开hyperV 短时间可以解决问题 但是引起了更大的问题 错误的临时方案真的要命。。。),后面一段时间后才发现这个问题,意识到这个两个虚拟机 同时启动 会同时占用 硬件cpu资源后就难理解为啥 虚拟机的cpu会死锁 watch dog xxx了, 兜兜转转总是找到正确的路子

✅ 事件查看器查看方法:

Windows 内核级崩溃排查
查看蓝屏 minidump 文件:C:\Windows\Minidump\

使用 BlueScreenView 或 WinDbg 读取 .dmp 文件

事件查看器排查:

Win+R → 输入 eventvwr

路径:事件查看器 → Windows 日志 → 系统

筛选以下 ID:

1001:BugCheck(蓝屏错误)

41:Kernel-Power(系统强制重启)

6008:上次启动未正常关闭

windwos core dump


✅ 最终解决方案总结

✅ 关键做法:

在这里插入图片描述

步骤行动
1️⃣禁用 Hyper-V 所有服务与驱动
2️⃣删除 Device Guard / Credential Guard 注册表项
3️⃣升级 VMware 至 17.6.3 build-24583834
4️⃣升级虚拟机硬件版本至 17
5️⃣修改 .vmx 配置文件,彻底关闭 Hyper-V 支持

📌 最终配置 & 效果

.vmx 关键配置:

.encoding = "UTF-8"
displayName = "CentOS 7 64 位 - 压缩空间"
config.version = "8"
virtualHW.version = "17"
hypervisor.cpuid.v0 = "FALSE"
mce.enable = "TRUE"
vhv.enable = "FALSE"

效果:

  • 启动后可持续运行数小时无死锁
  • GUI + 多个 CLion 实例同时运行,CPU 占用稳定在 0.6% 以下
  • 再无宿主机蓝屏、虚拟机软死锁问题

🎉 到此为止,这次关于虚拟机软死锁 + 宿主机内核崩溃问题彻底解决!
💬 欢迎点赞、收藏、转发,也欢迎在评论区交流更多系统底层优化经验!

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐