Ubuntu虚拟机网络图标消失与USB不识别?VMware Tools修复指南
2026/9/16 2:48:17 网站建设 项目流程

1. 问题现象与根因分析

1.1 两个问题同时出现,其实是同一类故障

先说结论:Ubuntu虚拟机里网络图标消失和USB设备不自动弹出,十次里有八次是同一类原因——虚拟机的“基础服务”没跑起来,或者跑起来之后没被正确加载到桌面环境。

我为什么敢这么说?因为我在这上面踩过好几次坑。第一次遇到是在一次演示前,客户现场打开VMware里的Ubuntu 22.04,任务栏右上角的网络图标突然不见了,网络还能上网,但图标没了,怎么看怎么别扭。接着往USB口上插U盘,宿主机有提示音,Ubuntu里却一点反应都没有。我当时第一反应是“坏了,USB控制器坏了”,后来排查了一圈发现根本不是硬件问题,而是虚拟机内部的服务状态出了问题。

网络图标消失,本质上是桌面环境的系统托盘(System Tray)里少了一个网络管理器的状态指示器。Ubuntu桌面上那个网络图标不是系统内核画的,而是NetworkManager这个服务在提供网络管理功能的同时,往GNOME桌面托盘里塞了一个图标组件。如果NetworkManager服务挂了,或者桌面环境没加载到对应的Applet插件,图标就会消失。

而USB设备不自动弹出,通常是两个层面的问题:一是在宿主机层,虚拟机软件没有把USB设备正确“传递”给客户机;二是在客户机层,Ubuntu里缺少USB设备挂载管理的组件,或者桌面环境的自动挂载开关没打开。

这两个问题撞在一起,往往意味着你的虚拟机软件集成组件没有正确安装,或者桌面环境依赖的几个后台服务没有全部跑起来。

1.2 为什么集成组件这么关键

虚拟机不是真实硬件,它是一堆软件模拟出来的设备。要让Ubuntu“感知”到USB设备插拔,需要虚拟机软件和客户机操作系统之间有一条“隧道”——这个隧道就是VMware Tools(如果是VirtualBox,则是对应的增强功能)。

VMware Tools里面包含了一堆驱动和服务,其中和网络图标、USB自动弹出强相关的有:

  • 虚拟网卡驱动,负责让Ubuntu里的网卡正常工作;
  • 鼠标、显示、剪贴板等增强驱动;
  • 一个叫vmtoolsd的后台守护进程,负责宿主机和客户机之间的通信;
  • 一个负责把宿主机USB设备“桥接”进客户机的内核模块。

如果你的虚拟机是装完Ubuntu后一直没装VMware Tools,或者装了之后因为内核升级导致模块失效,那么USB设备传不进去是必然的。而网络图标消失,很多时候是在这种“集成组件半坏不坏”的状态下,Systemd服务在启动时按顺序等待VMware Tools服务,结果等待超时或者服务崩溃,连带NetworkManager没起来。

所以,当我们处理这类问题时,绝对不能只盯着表面的图标和USB去折腾,而是要沿着“服务层-驱动层-桌面层”三层路径去排查。

2. 网络图标消失的排查与恢复

2.1 先确认网络到底通不通

在动手恢复图标之前,先做一次基础的连通性测试。这一步非常关键,因为“网络图标消失”和“网络断开”是完全不同的两道题。

打开终端,输入:

ping -c 4 223.5.5.5

这里用-c 4是限制只发4个数据包,不然会一直ping下去。223.5.5.5是国内的公共DNS,我用它做连通性测试,你也可以换成114.114.114.114。

如果ping通了,说明网络是通的,问题只是出在“图标”和“服务状态显示”这一层。如果ping不通,那问题就大了,得先解决网卡驱动和网络配置。

然后检查NetworkManager服务状态:

systemctl status NetworkManager

正常状态下,你会看到类似Active: active (running)的输出,并且进程那一行会显示主进程的PID。如果看到的是inactive (dead)或者failed,说明服务确实挂掉了。

2.2 恢复NetworkManager服务的经典套路

如果NetworkManager服务是死的,直接启动它:

sudo systemctl start NetworkManager sudo systemctl enable NetworkManager

第一条命令是立即启动,第二条是设置开机自启。enable这个动作不是可选项,我强烈建议每次都执行。因为很多情况下服务之所以挂掉,就是因为开机时没被启动,而某些桌面组件(比如GNOME的托盘)只会检测“开机后服务是否在运行”,半路启动的服务它能识别到图标,但偶尔会出现图标加载不出来的情况。

启动之后,再检查一次:

systemctl status NetworkManager

如果状态变成了active (running),但是图标还没出现,先别急,重启一下桌面环境的后台进程。在Ubuntu 22.04等使用GNOME桌面的版本上,可以按Alt + F2,在弹出的对话框中输入r,回车。这个操作是重启GNOME Shell,不会关闭你的应用程序。

如果这种“软重启”不行,那再考虑注销重新登录,或者重启虚拟机。

2.3 托盘图标组件的补装

有些发行版为了做精简,或者你在安装系统时选择了最小安装,可能桌面上根本没有“系统托盘”里网络图标的显示组件。

打开终端安装:

sudo apt update sudo apt install gnome-shell-extension-appindicator

这个包是GNOME桌面下用来显示托盘图标的扩展。装完后执行:

gnome-extensions enable ubuntu-appindicators@ubuntu.com

然后重启GNOME Shell(Alt + F2输入r回车),或者注销重登。

为什么这里专门提AppIndicator?因为Ubuntu的桌面右上角区域,是一个传统意义上的托盘,很多状态图标(输入法、网络、音量、蓝牙)都是通过AppIndicator协议显示在这个区域的。如果这个扩展没装,或者被禁用了,那么即使NetworkManager服务运行正常,你也见不到右上角的网络图标。

2.4 图标正常但网络连不上时的排查

如果图标回来了,但是点击图标发现“未连接”,或者一直在转圈,这种情况和“图标消失”其实是两码事,但很多人会混在一起处理,导致越修越乱。

这个时候优先检查网卡是否被识别:

ip addr show

看输出结果里有没有一个带IP地址的ens33或者ens160之类的网卡条目。如果有,说明网卡驱动正常。如果只有lo回环网卡,没有其他网卡,说明VMware虚拟网卡驱动可能没加载。

此时检查VMware Tools的内核模块:

lsmod | grep vmw

正常应该能看到vmw_vmcivmxnet3之类的模块。如果什么都没有,说明VMware Tools需要重新安装或修复。这个问题我会在第3节详细讲,因为USB设备不弹出,也依赖同样的模块。

3. USB设备没有自动弹出的解决全流程

3.1 确认VMware Tools是否就位

在VMware虚拟机里,USB设备要正常传递,最核心的依赖就是VMware Tools。先检查它到底装没装、装的状态对不对。

在Ubuntu终端里执行:

vmware-toolbox-cmd --version

如果返回了类似VMware Tools 11.x.x build-xxxxx的输出,说明装的是原版VMware Tools。如果提示command not found,则可能没装,或者装的是open-vm-tools。

现在很多虚拟机装Ubuntu时,会默认使用open-vm-tools这个开源版本,它是VMware Tools的开源替代品,在大多数情况下功能完全够用,甚至在部分内核版本上兼容性更好。

查看open-vm-tools是否安装:

dpkg -l | grep open-vm-tools

如果有输出,说明装了。如果连这个都没有,那就得老老实实安装。

3.2 正确安装VMware Tools的两种姿势

方式一:安装open-vm-tools(官方开源版)

这是我最推荐的方式,尤其是Ubuntu 20.04及以上版本,用命令行安装最省心:

sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop

注意这里一定要装open-vm-tools-desktop这个包。它提供的是桌面环境相关的增强功能,包括X11显示驱动、剪贴板共享、拖拽文件等。如果只装open-vm-tools,USB设备的自动弹出和共享剪贴板都会不正常。

安装完成后重启虚拟机(或者执行sudo systemctl restart open-vm-tools,但部分内核模块需要重启才能加载,所以直接重启更稳妥)。

方式二:安装VMware原版Tools

如果你用的是比较老的VMware Workstation版本,或者open-vm-tools在特定内核下出问题,可以在VMware菜单栏上点击“虚拟机”->“安装VMware Tools”,然后在Ubuntu的Files管理器里找到自动挂载的虚拟光驱,解压里面的VMwareTools-x.x.x-xxxxx.tar.gz,执行安装脚本:

sudo ./vmware-install.pl -d

-d参数表示使用默认配置一路安装。这种方式装出来的是VMware官方编译的版本,兼容性最好,但嵌合度不如open-vm-tools和发行版系统深度集成来的好。

我个人的经验是,Ubuntu 22.04及以上版本,优先用open-vm-tools-desktop,省事且稳定。

3.3 虚拟机设置里的USB控制器陷阱

解决了客户机里的驱动问题,接下来要看向宿主机那边的VMware虚拟机设置。

右键虚拟机标签页,点击“设置”(Settings),在“硬件”选项卡里找到“USB控制器”。

这里有几个关键的选项设置:

  • USB兼容性:默认是USB 2.0,如果你插的是USB 3.0的U盘,建议选择“USB 3.1”。但注意,如果客户机Ubuntu内核较老(比如18.04及更早),USB 3.1控制器可能反而会导致设备反复断连,此时回退到USB 2.0反而更稳定。
  • “自动连接新的USB设备”:务必要勾选这个选项。不勾选的话,插上USB设备后,Ubuntu里永远不会有反应,因为设备压根没有被传递进虚拟机。
  • “显示所有USB输入设备”:如果USB外设是特殊的HID设备,勾选这个选项可以避免一些兼容性问题。

修改完这些设置后,点击确定。然后需要把虚拟机关机,再重新开机,不要用“重启客户机”,因为USB控制器属于硬件级虚拟化配置,重启操作系统不一定能重新加载。

3.4 验证USB设备能否被识别与挂载

完成上面的设置后,插上一个U盘,然后在Ubuntu终端里执行:

lsusb

lsusb会列出所有USB总线上的设备,注意看有没有出现类似KingstonSanDisk等U盘品牌名。如果能看到设备,说明USB设备已经被传递进虚拟机了。

但被识别不代表能弹出,还需要看系统有没有自动挂载。执行:

lsblk

如果出现一个sdb(或者sdc等)设备,并且带有分区如sdb1,说明挂载路径已经有了。再看看这个分区有没有被挂载到/media/用户名/xxx目录下:

ls /media/

如果/media/下能看到以U盘标签命名的文件夹,说明系统已经自动挂载并弹出了窗口。

如果lsusb能看到设备,但lsblk里没有对应盘符,那问题出在自动挂载服务上。

3.5 自动挂载服务的修复

桌面环境的自动挂载依赖一个叫udisks2的守护进程,负责处理USB存储设备的挂载和弹出。检查它的状态:

systemctl status udisks2

如果没在运行,启动它:

sudo systemctl start udisks2 sudo systemctl enable udisks2

如果服务正常运行但U盘还是不弹窗,可能是GNOME Files(Nautilus)的自动挂载开关被关掉了。打开“文件”管理器,点击右上角的菜单按钮(横线图标),选择“首选项”,在“可移动介质”标签页里,确认“插入可移动介质时,自动安装并打开”这个选项是勾选状态。

3.6 命令行手动挂载作为临时方案

如果以上步骤都执行了,U盘依然没有自动弹出,可以使用命令行手动挂载来应急,至少保证数据能用:

sudo mkdir -p /mnt/usb sudo mount /dev/sdb1 /mnt/usb cd /mnt/usb

用完后卸载:

cd / sudo umount /mnt/usb

这里/dev/sdb1是假设的设备名,实际请以lsblk输出为准。手动挂载不建议长期使用,但作为临时查看文件的手段,比干等着强。

4. 常见问题与排查技巧实录

4.1 网络图标消失但网络正常,怎么快速重显

这是所有问题里最好解决的,也是最常见的。可以先不重启系统,按优先级做:

  1. 检查NetworkManager服务运行状态;
  2. 检查AppIndicator扩展是否启用;
  3. 重启GNOME Shell。

我遇到过一次比较诡异的场景:NetworkManager服务运行正常,AppIndicator扩展也启用了,但图标就是不出来。后来发现是系统语言从中文切换到英文后,GNOME Shell出现了一个兼容性问题。解决办法是注销重新登录,问题消失。遇到类似情况,优先考虑注销重登,不用急着重启虚拟机。

4.2 USB设备在Windows宿主机上有反应,但Ubuntu里没反应

这种“单侧失灵”的现象,几乎可以肯定是USB设备没有传递进虚拟机。常见原因有三个:

  • VMware里没有勾选“自动连接新的USB设备”;
  • VMware Tools未安装或未正常运行;
  • USB控制器兼容性设置错误。

排查顺序也按这个来:先看VMware设置,再看Tools状态,最后调整USB控制器版本。有条件的,可以试着在VMware菜单栏的“虚拟机”->“可移动设备”里手动点击设备名,选择“连接”试试,看看是否会传递进虚拟机。

4.3 插了U盘后整个虚拟机卡死

这个问题比较邪门,但确实存在。尤其是使用USB 3.0高速度U盘,且在VMware里开启了USB 3.1控制器,老旧内核的Ubuntu客户机会出现内核级USB子系统死锁,表现为整个虚拟机画面卡住,鼠标键盘都无响应。

解决办法是:先强制重启虚拟机,然后在VMware设置里把USB控制器兼容性改为USB 2.0。这个做法看起来是“降级”,但实测下来在多数Linux环境下反而更稳定。

4.4 升级Ubuntu内核后USB设备和共享剪贴板都失效

这是open-vm-tools的经典问题。Ubuntu内核升级后,内核头文件和模块没有同步更新,导致vmw_vmci等模块无法编译或加载。

解决方法很简单:

sudo apt install --reinstall open-vm-tools open-vm-tools-desktop sudo reboot

重装过程中,系统会根据新内核重新编译内核模块。如果重装不行,考虑安装dkms包,它可以让VMware Tools模块在内核更新时自动重建:

sudo apt install dkms

4.5 常见问题速查表

现象优先排查项常用修复命令/操作
网络图标消失,网络正常NetworkManager服务、GNOME Shellsystemctl start NetworkManagerAlt+F2输入r
网络图标消失,网络不通虚拟网卡驱动、网络配置lsmod | grep vmw;重新安装open-vm-tools
插U盘无任何反应VMware USB控制器设置、验证lsusb勾选“自动连接新的USB设备”;切换USB版本
lsusb有设备,但无弹窗udisks2服务、Nautilus自动挂载systemctl start udisks2;检查“文件”首选项
U盘能识别但读取极慢USB控制器版本过高在VMware中把USB控制器降为2.0
更新内核后设备全部失效模块未重新编译apt install --reinstall open-vm-tools*

4.6 一个值得注意的细节:不要同时插太多USB设备

在虚拟机里同时连接多个USB设备,尤其是同时连接多个U盘或者外接硬盘,容易导致VMware后端的USB仲裁出现问题。轻则设备识别混乱,重则整个虚拟机的USB子系统崩溃。我自己就遇到过连了三个U盘后,所有USB设备全部断开的情况。

所以建议是:需要哪个设备,就先把其他U盘拔掉,再连接目标设备。用完弹出后,再插下一个。这种“单设备”模式虽然麻烦一点,但稳定得很,特别是在做USB抓包或者调试嵌入式开发板的时候。

5. 一些隐藏细节与后续建议

5.1 网络图标消失和NetworkManager无关的特殊情况

有一种情况容易漏掉:如果Ubuntu里装了某个桌面美化工具(比如dock类插件、tweaks工具),它们有时会把GNOME Shell的扩展状态搞乱。特别是通过gnome-tweaks手动关闭了“Ubuntu AppIndicators”扩展后,图标自然就消失了。

这时用gnome-extensions list查看已安装的扩展列表,再用gnome-extensions enable ubuntu-appindicators@ubuntu.com重新启用即可。很多人不知道这个命令,导致图标消失后只能重启系统,其实几秒钟就能解决。

5.2 虚拟机里建议使用静态IP

既然聊到了网络配置,这里顺手提一个和“网络图标”相关但不完全相同的建议:如果你经常用虚拟机做开发、跑服务,建议给Ubuntu配置静态IP,而不是依赖DHCP动态分配。

理由是:虚拟机系统的IP一旦固定,SSH工具、数据库连接配置、Docker端口映射等都能稳定使用。DHCP模式下,IP地址一旦变化,你会发现宿主机访问虚拟机的SSH连接全部断开,这种“连不上”的感觉和网络图标消失完全不同,但容易被误诊为系统网络故障。

在Netplan配置中修改,Ubuntu 22.04的配置文件为/etc/netplan/01-network-manager-all.yaml

network: version: 2 renderer: NetworkManager ethernets: ens33: dhcp4: no addresses: - 192.168.100.10/24 routes: - to: default via: 192.168.100.1 nameservers: addresses: [223.5.5.5, 114.114.114.114]

执行sudo netplan apply生效。注意ens33要替换成你虚拟机实际网卡名(用ip addr查看)。

5.3 针对USB串口调试的特殊提醒

如果你像热词里搜的那样,用USB转串口模块(CP2102、FT232、CH340等)连开发板调试,除了上面的USB设备传递问题,还要留意设备权限。在Ubuntu中,普通用户默认没有权限访问/dev/ttyUSB0这类设备,需要把用户加入dialout组:

sudo usermod -aG dialout $USER

执行后注销重登,再使用minicom或者screen /dev/ttyUSB0 115200时就不会报权限错误了。这个坑做嵌入式开发的人几乎都踩过,顺便写在这里,给有需要的人参考。

5.4 关于VMware Tools更新的建议

最后给一个长期维护的建议:如果你经常更新Ubuntu内核,或者VMware Workstation频繁升级版本,VMware Tools的状态很容易“悄悄变差”。我个人的经验是,每隔一段时间执行一次:

sudo apt update && sudo apt upgrade

让系统保持最新状态。新版本的内核和open-vm-tools通常已经做好了适配,自动更新能避免很多“莫名其妙”的兼容性问题。

如果遇到升级后VMware Tools失效,就按第4.4节的方法重装。这套“更新-重装-重启”三部曲,解决了我使用虚拟机的绝大部分麻烦。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询