资讯动态

Ubuntu 22.04 + VMware 17.6.0 使用 USB 摄像头后宿主机卡死、网络异常、无法关机的解决方案

发布时间:2026/10/14 3:18:25 来源:尧图企业网站定制
说明本文根据本人实际遇到的问题、排查过程和最终实测结果整理文章结构与内容由 ChatGPT 协助总结。本文不是对单一论坛帖子的简单转载而是结合实际环境、社区案例以及最终修复过程形成的一份完整排障记录。1. 问题背景我的宿主机环境如下Host OS : Ubuntu 22.04 LTS Kernel : 6.8.0-138-generic VMware : VMware Workstation 17.6.0 build-24238078 Guest OS : Windows 10 外接设备 : USB 摄像头平时需要将 USB 摄像头通过 VMware 的 USB Passthrough 功能连接到 Windows 10 虚拟机中使用。在使用一段时间后我发现只要将摄像头从 Windows 虚拟机重新切回 Ubuntu或者直接关闭 Windows 10 虚拟机宿主机就有概率出现严重卡死。主要表现包括应用关闭后无法重新打开 sudo 命令卡死 Ubuntu 有线网络异常 虚拟机网络同时异常 系统无法正常关机或重启 出现 rcu_preempt / hung task 相关信息经过排查后最终问题指向VMware Workstation 17.6.0 的 Linux Host Modules 与 Linux 6.8 内核之间存在兼容性问题。其中最主要涉及vmmon vmnet两个 VMware 内核模块。USB 摄像头的切换更像是这个问题的一个触发条件而不一定是摄像头本身存在故障。2. 故障现象问题通常发生在以下场景Ubuntu 启动 VMware ↓ 启动 Windows 10 ↓ 将 USB 摄像头连接给 Windows ↓ 正常使用一段时间 ↓ 将摄像头 Disconnect 回 Ubuntu 或者关闭 Windows 10 ↓ Ubuntu 宿主机开始异常2.1 应用程序无法重新启动部分已经启动的软件暂时还能继续运行。但是一旦关闭再重新启动时就可能没有任何反应。例如Chrome VS Code 终端 文件管理器2.2 sudo 命令卡死严重时执行sudo true或者任何sudo xxx都会让当前 Shell 直接阻塞。这是一个比较重要的判断依据。如果只是普通桌面程序故障一般不会导致sudo也一起卡住。2.3 网络异常VMware 出现问题后Ubuntu 宿主机的网络也可能逐渐失效。虚拟机内部网络同样可能受到影响。例如执行ip addr ip route可能发现网络接口或者路由状态异常。2.4 无法正常关机或重启点击关机 重启以后Ubuntu 可能长时间停留在关闭过程中。严重时甚至几个小时都无法完成只能强制断电。部分情况下还能看到rcu_preempt RCU stall hung task blocked task等内核日志。这也是为什么后来排查重点从普通应用逐渐转向 Linux Kernel 和 VMware 内核模块。3. 网上找到了高度相似的案例在排查过程中发现多个社区讨论与自己的情况高度一致。3.1 Ask Ubuntu 上的类似案例Ask Ubuntu 帖子的评论区有用户描述VMware 从 17.5 升级到 17.6Host 使用 Ubuntu启动虚拟机后宿主机网络丢失虚拟机网络也同时失效sudo命令直接卡住reboot 无法完成最后出现rcu_preempt这些症状和我的实际情况非常接近。参考Ask UbuntuVMware Workstation Running Ubuntu Freezes Frequently3.2 Broadcom VMware 官方社区的讨论Broadcom VMware Community 中也有针对VMware Workstation 17.6 Ubuntu 22.04 Linux Kernel 6.8的类似反馈。其中用户明确描述启动 VM 后系统逐渐不稳定 网络停止工作 sudo 卡死 Power Off / Reboot 无法完成 dmesg 出现 rcu_preempt VM 相关进程 blocked for more than 120 seconds社区回复中也明确提到这个问题开始出现在 Ubuntu 22.04 使用 Linux 6.8 内核以后。参考Broadcom CommunityProblem with 17.6 Update on Ubuntu 22.04这个帖子对最终判断问题非常有帮助因为它说明并不是只有 USB 摄像头场景才会触发VMware 17.6 Linux 6.8 本身就存在导致宿主机失去响应的案例。因此摄像头更可能只是提高了问题触发概率。4. 最终定位VMware 17.6.0 Linux 6.8执行uname -r vmware --version我的实际输出为6.8.0-138-generic VMware Workstation 17.6.0 build-24238078这正好命中了社区中大量讨论的组合Linux Kernel 6.8 VMware Workstation 17.6.0VMware 在 Linux 宿主机上需要加载两个非常重要的内核模块vmmon vmnet其中vmmon负责 VMware 的核心虚拟机监控和虚拟化相关功能。vmnet负责 VMware 的虚拟网络功能。如果这两个模块与当前 Linux Kernel 存在兼容问题那么最终受到影响的可能不仅仅是 VMware 本身还可能包括网络 内核任务调度 systemd sudo 系统关机与重启这可以解释为什么最终表现出来的是整个 Ubuntu 宿主机逐渐失去响应。5. 为什么 USB 摄像头可能会触发问题Linux 下 USB 摄像头一般使用uvcvideo驱动。设备连接给 Windows 虚拟机时大致经历Ubuntu / uvcvideo ↓ VMware USB Passthrough ↓ Windows 10断开后又需要经历Windows ↓ VMware 释放 USB ↓ Linux USB Core ↓ uvcvideo 重新绑定摄像头相比普通 U 盘会持续进行大量 USB 视频数据传输。其中涉及USB endpoint URB 设备解绑 设备重新绑定 USB reset等操作。因此我推测摄像头在宿主机和虚拟机之间频繁切换可能会更容易触发 VMware 17.6.0 在 Linux 6.8 下原本就存在的内核模块问题。这一点属于结合实际故障现象得出的判断并不是说所有 VMware 17.6.0 Linux 6.8 用户都必须使用摄像头才会遇到问题。Broadcom 社区中的案例实际上并没有依赖摄像头同样出现了网络失效、sudo 卡死以及rcu_preempt。6. 最终使用的解决方案最终使用的是社区维护的bytium/vm-host-modules项目。该仓库主要用于为较新的 Linux Kernel 提供修补后的 VMwarevmmon vmnet模块。仓库 README 明确说明其目标就是解决 VMware Workstation Host Modules 与新版 Linux Kernel 的兼容性问题并列出了 VMware Workstation 17.6.0 等版本。项目地址GitHubbytium/vm-host-modules项目作者另外也提供了一篇说明文档BytiumVMware Workstation Host Module Patch for Debian and Ubuntu该说明中给出的基本流程同样是sudo apt install build-essential linux-headers-$(uname -r) git git clone ... cd vm-host-modules make sudo make install安装脚本会将编译出的vmmon.ko和vmnet.ko放入当前 Kernel 对应的 modules 目录。7. 安装编译环境首先sudo apt update sudo apt install build-essential linux-headers-$(uname -r) git我的环境中build-essential git linux-headers-6.8.0-138-generic都已经正确安装。检查当前 Kerneluname -r输出6.8.0-138-generic所以必须确保linux-headers-6.8.0-138-generic也已经安装。8. 下载 Patch执行cd ~ git clone https://github.com/bytium/vm-host-modules.git cd vm-host-modules这里需要根据仓库当前实际提供的分支选择版本。我当时执行git checkout 17.6成功切换到Branch 17.6 set up to track remote branch 17.6 from origin. Switched to a new branch 17.6随后检查git branch git log -1 --oneline结果* 17.6 master d901654 Updated for vmware workstation 17.6.0因此确认该分支正好对应VMware Workstation 17.6.0注意GitHub README 当前显示的分支名称可能有所调整因此不要盲目照搬旧文章中的分支名建议先执行git branch -a查看自己克隆下来的仓库当前有哪些分支。9. 编译 vmmon 和 vmnet执行make编译过程中出现了一些 warning例如warning: the compiler differs from the one used to build the kernel MAX redefined objtool warning Skipping BTF generation但是没有出现导致构建中断的 Error。最终成功生成vmmon.ko vmnet.ko可以检查find . \( -name vmmon.ko -o -name vmnet.ko \) -print我的实际结果./vmnet-only/vmnet.ko ./vmmon-only/vmmon.ko说明编译成功。10. 安装修补后的 VMware Kernel Modules执行sudo make install然后刷新内核模块依赖sudo depmod -a11. 验证安装是否成功执行modinfo vmmon | grep -E filename|vermagic modinfo vmnet | grep -E filename|vermagic我的实际结果filename: /lib/modules/6.8.0-138-generic/misc/vmmon.ko vermagic: 6.8.0-138-generic SMP preempt mod_unload modversions以及filename: /lib/modules/6.8.0-138-generic/misc/vmnet.ko vermagic: 6.8.0-138-generic SMP preempt mod_unload modversions这里主要确认两个地方/lib/modules/6.8.0-138-generic/misc/以及vermagic: 6.8.0-138-generic说明新编译的 vmmon / vmnet 已经正确安装到当前 Linux 6.8.0-138 Kernel并且 vermagic 与当前内核匹配。然后重启sudo reboot12. 修复后的验证建议不要一开始就连接摄像头而是分两轮测试。第一轮VMware 基础测试Ubuntu ↓ 启动 VMware ↓ 启动 Windows 10 ↓ 正常使用 ↓ 关闭 Windows期间测试sudo true ip addr ip route确认sudo 正常 宿主机网络正常 虚拟机网络正常 应用可以继续打开 VM 可以正常关闭 Ubuntu 可以正常关机 / 重启如果这一步已经恢复正常说明 VMware Kernel Module 的问题基本解决。第二轮USB 摄像头测试继续启动 Windows 10 ↓ USB 摄像头连接到虚拟机 ↓ 正常使用一段时间 ↓ 关闭摄像头相关程序 ↓ Disconnect USB 摄像头回 Ubuntu在重新编译安装vmmon和vmnet后目前没有再次出现之前的宿主机严重冻结现象。因此至少在我的机器上这个方案有效。13. 为什么修补 vmmon / vmnet 可以解决问题这次比较容易产生误导的一点在于故障经常在 USB 摄像头切换之后出现。因此第一反应通常会认为是uvcvideo xhci USB controller USB Passthrough的问题。但是更值得关注的是网络同时失效 sudo 卡死 reboot 卡死 rcu_preempt这几个特征。它们明显已经超出了普通摄像头驱动故障的范围。结合 Broadcom Community 中完全不依赖摄像头也能复现的案例更合理的解释是VMware 17.6.0 ↓ Linux 6.8 Kernel ↓ vmmon / vmnet 兼容问题 ↓ Kernel task / RCU 出现阻塞 ↓ VMware 与网络开始异常 ↓ sudo / systemd 等操作受到影响 ↓ 最终 reboot / shutdown 无法正常完成USB 摄像头更像是其中一个触发点。14. 完整操作命令环境类似Ubuntu 22.04 Linux 6.8 VMware Workstation 17.6.0可以参考sudo apt update sudo apt install \ build-essential \ linux-headers-$(uname -r) \ git cd ~ git clone https://github.com/bytium/vm-host-modules.git cd vm-host-modules git branch -a git checkout 17.6 git branch git log -1 --oneline make find . \( -name vmmon.ko -o -name vmnet.ko \) -print sudo make install sudo depmod -a modinfo vmmon | grep -E filename|vermagic modinfo vmnet | grep -E filename|vermagic sudo reboot15. 注意事项15.1 VMware 版本必须对应不要把17.5.x 17.6.x 其他版本的模块混用。先确认vmware --version15.2 Kernel Headers 必须匹配检查uname -r如果输出6.8.0-138-generic那么必须安装linux-headers-6.8.0-138-generic15.3 不建议直接下载别人编译好的 .ko最好在自己的系统上编译。因为内核模块至少涉及Kernel Version Kernel Configuration VMware Version等环境差异。15.4 Kernel 升级后可能要重新编译以后如果 Ubuntu Kernel 从6.8.0-138-generic升级到了新的版本可以重新检查uname -r modinfo vmmon | grep vermagic modinfo vmnet | grep vermagic如果不一致就应该重新编译对应 Kernel 的模块。16. 参考资料本次排查主要参考了以下几个公开讨论和项目。Ask UbuntuVMware Workstation Running Ubuntu Freezes Frequently查看 Ask Ubuntu 原帖其中用户描述的网络丢失、sudo卡死、reboot hang、rcu_preempt等现象与本次问题高度相似。Broadcom VMware CommunityProblem with 17.6 Update on Ubuntu 22.04查看 Broadcom 社区讨论该讨论中明确存在 Ubuntu 22.04 Linux 6.8 VMware 17.6 出现宿主机网络、sudo、shutdown 和 RCU 异常的问题。GitHubbytium/vm-host-modules查看 GitHub 项目本文实际使用的vmmon/vmnetPatch 来源。BytiumVMware Workstation Host Module Patch for Debian and Ubuntu查看 Patch 安装说明包含编译安装 VMware Host Modules 的说明。总结这次问题最值得关注的几个关键词是Ubuntu 22.04 Linux 6.8 VMware Workstation 17.6.0 宿主机网络异常 sudo 卡死 shutdown / reboot 卡死 rcu_preempt虽然故障在我的机器上经常由 USB 摄像头 Passthrough 后触发但结合其他用户的复现情况来看核心问题更可能是 VMware Workstation 17.6.0 Host Modules 与 Linux 6.8 Kernel 的兼容性而 USB 摄像头只是特定场景下的触发条件。最终通过重新编译并安装修补后的vmmon vmnet解决问题。截至目前修复后系统运行正常。文章说明本文中的问题现象、系统环境、终端输出、修复过程和最终验证均来自本人实际排查过程公开资料部分参考 Ask Ubuntu、Broadcom VMware Community、GitHub 和 Bytium。文章由本人提供实际排查信息并由OpenAI ChatGPT协助整理、归纳与成文。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑