VirtualBox彻底卸载指南:清理驱动、Host-Only网卡与配置残留

发布时间:2026/9/19 10:55:55
VirtualBox彻底卸载指南:清理驱动、Host-Only网卡与配置残留 先讲一个我真实碰到的场景。有个同事的电脑之前装过 VirtualBox后来某个项目不用了他直接从控制面板点了个“卸载”就没再管。过了两周他要装新版跑 vagrant virtualbox 的开发环境结果安装时不是报“Host-Only 网络适配器不存在”就是启动虚拟机时报 kernel driver not installed (rc-1908)折腾到怀疑人生。我过去看了一眼原因其实特别统一不是新版 VirtualBox 有问题是旧版根本没卸干净系统里还留着它的虚拟网卡、驱动程序、服务项和一堆配置。“完全卸载 VirtualBox”这件事难点从来不在“卸载两个字怎么点”而是在于这个软件和普通办公软件不一样它不是一个孤立的程序。它会往你的系统里塞网络适配器、内核驱动、USB 驱动、后台服务、扩展包、注册表项还有个最容易忽略的——你的虚拟机硬盘文件。这些残留只要有一个还在轻则浪费磁盘、干扰新版本安装重则直接让其他依赖虚拟化软件的工具报错。这篇文章就把 Windows、Linux、macOS 三个平台的彻底卸载流程拆开讲清楚重点放在 Windows 上因为绝大多数残留问题都是 Windows 环境踩出来的。1. VirtualBox不是单文件软件先搞清要卸掉哪些东西很多人卸载不干净根本原因是把 VirtualBox 当成了一个普通的“安装目录 快捷方式”软件。实际上一个正常安装的 VirtualBox至少会往系统里塞进以下几类东西主程序目录、虚拟磁盘和配置文件目录、网络驱动与虚拟网卡、USB 驱动、内核级驱动、系统服务、扩展包、以及注册表或配置数据库里的残留项。每个平台还不一样。Windows 上它注册的是内核驱动服务和 COM 组件Linux 上它会编译并加载 vboxdrv、vboxnetadp、vboxnetflt 这一组内核模块还会创建一个 vboxusers 用户组macOS 上则是 pkg 安装包 内核扩展 kext LaunchDaemon 的组合。只靠系统自带的卸载入口往往只能删掉主程序那一层驱动、服务、网络适配器这些“深水区残留”很难被带走。这也是为什么很多人在卸载后重装时会碰到这类经典报错VirtualBox 启动虚拟机时报Kernel driver not installed (rc-1908) The VirtualBox Linux kernel driver is either not loaded or there is a permission problem这几乎都是旧的内核模块没卸载干净或者新模块没正确编译。创建 Host-Only 网络时提示Interface (VirtualBox Host-Only Ethernet Adapter) is not a host-only adapter说明系统里残留的虚拟网卡状态已经损坏但 VirtualBox 又把它当成自己的网卡去用。华为 ensp 这类依赖 VirtualBox 的模拟器软件出现不兼容、无法启动网络设备也和残留的旧版本 Host-Only 网卡驱动有关系。旧版 VirtualBox 卸载后Windows 设备管理器里依然能看到 VirtualBox Host-Only Network 设备或者服务列表里能查到 VBox 开头的驱动服务。所以在动手卸载之前你的脑子里得有个完整的地图你是在拔掉一棵树的根而不是剪掉地上的叶子。下面这张表是我整理的各平台组件位置建议先看一眼后面每一步操作你都能对应上。平台主程序位置驱动/服务/内核模块用户配置虚拟磁盘文件WindowsC:\Program Files\Oracle\VirtualBox32位在Program Files (x86)VBoxDrv.sys、VBoxNetAdp.sys、VBoxNetLwf/VBoxNetFlt.sys、VBoxUSBMon.sys服务 VBoxDRV、VBoxNetAdp、VBoxNetLwf、VBoxUSBMon%USERPROFILE%.VirtualBox 或 %USERPROFILE%.config\VirtualBox默认在 %USERPROFILE%\VirtualBox VMsLinux包管理器安装多在 /usr/lib/virtualbox官方 .run 装到 /opt/VirtualBoxvboxdrv.ko、vboxnetadp.ko、vboxnetflt.ko、vboxpci.koDKMS 模块vboxusers 用户组~/.config/VirtualBox 或 ~/.VirtualBox默认在 ~/VirtualBox VMsmacOS/Applications/VirtualBox.app/Library/Extensions/ 下的 VBox*.kext/Library/LaunchDaemons/ 下的 org.virtualbox.*.plistpkg 记录~/Library/Preferences/org.virtualbox.* 、~/Library/Saved Application State默认在 ~/VirtualBox VMs看到这个表你就明白了所谓“完全卸载”就是把这些东西一条一条对下来清干净。接着按平台分步处理。2. Windows上的彻底卸载按顺序做完这六步Windows 是残留问题最严重的平台因为虚拟网卡和内核驱动一旦装进系统卸载顺序错了就极难清理。我建议按下面的顺序走不要跳步。2.1 卸载前先做一次数据备份只有在确信所有虚拟机数据都不需要保留时才可以忽略这一步。否则请先把虚拟机目录整个拷走或者用导出功能打包成 ova 文件。我的做法是卸载前先用命令跑一遍把所有已注册的虚拟机名字列出来。VBoxManage list vms然后逐个导出VBoxManage export 你的虚拟机名称 -o D:\backup\vm_name.ova如果虚拟机里有重要的数据库、实验环境、快照导出 ova 是最稳妥的。如果只是临时环境直接拷贝VirtualBox VMs目录也行注意拷贝前一定要先“正常关机”虚拟机不要直接复制正在运行状态的 vdi/vmdk 文件否则数据可能损坏。扩展包Extension Pack建议也在卸载前手动移除VBoxManage extpack uninstall Oracle VM VirtualBox Extension Pack这样可以避免扩展包注册信息残留也让后面重装新版本时少一个“版本不匹配”的坑。2.2 走正常卸载流程卸载后务必重启一次去控制面板的“程序和功能”找到 Oracle VM VirtualBox点卸载。这个流程会带走主程序目录、大部分注册表项、常见服务但经常带不走已经安装的虚拟网卡驱动、设备管理器中隐藏的设备节点以及一些仍在被系统占用的驱动文件。所以卸载完成后重启系统这一步骤不能跳过。很多驱动文件在运行状态下被锁定不重启想立刻删除是删不掉的。我见过很多人用各种强力删除工具强行删文件反而把系统网络栈弄乱其实重启一次锁自然就解开了。重启后先看一眼是否还残留服务sc query | findstr /i vbox如果输出里还有 VBoxDRV、VBoxNetAdp、VBoxNetLwf 之类的服务名说明驱动的注册服务还在需要手动清理。这时候先别急着删先把设备管理器里的设备卸载掉顺序很重要先卸设备再删驱动服务否则系统会认为驱动仍在被某个活动设备使用。2.3 清理设备管理器中的虚拟网卡和隐藏设备这是整个 Windows 卸载流程里最容易被忽略也是最容易出问题的一步。打开设备管理器菜单栏“查看”-“显示隐藏的设备”。然后分别检查两个位置“网络适配器”下有没有VirtualBox Host-Only Ethernet Adapter。如果有右键卸载设备。“系统设备”下有没有VirtualBox Support Driver、VirtualBox USB Monitor、VirtualBox NDIS 6 Bridged Networking Driver之类的条目。也一样右键卸载。卸载设备时Windows 有时会弹出“删除此设备的驱动程序软件”的勾选项能勾就勾上这步会直接移除驱动包。如果没弹也没关系后面用 pnputil 清理驱动包。然后处理驱动包残留。管理员权限打开命令提示符pnputil /enum-drivers这个命令会列出所有第三方驱动包找到“Oracle Corporation”或名称里带 vbox 的 OEM 驱动。记下对应的oemXX.inf逐个删除pnputil /delete-driver oemXX.inf /uninstall /force注意/uninstall参数会触发驱动卸载/force用于强制删除。如果系统提示驱动正在使用先确认前面设备管理器的设备已经卸载干净再重启一次再来。这套操作对 ensp 用户尤为重要。ensp 依赖 VirtualBox 的 Host-Only 网卡如果之前装过 5.2.x 或 6.x 多个版本设备管理器里可能残留多个 VirtualBox Host-Only 适配器ensp 启动时就容易报“与 VirtualBox 不兼容”。把设备管理器和驱动包全部清干净再重装一个匹配版本问题基本能根治。2.4 清理服务、注册表和文件残留设备清理完接下来处理服务和注册表。服务方面再次管理员 cmdsc delete VBoxDRV sc delete VBoxNetAdp sc delete VBoxNetLwf sc delete VBoxUSBMon不用纠结这些服务当前是否启动直接删除注册表里的服务定义即可。删除后可以在注册表编辑器里确认一下HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services找有没有 VBox 开头的项有就一并删掉。注册表清理建议只看这几个位置不要全局搜索“VirtualBox”然后乱删HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox整个键删除。HKEY_CURRENT_USER\SOFTWARE\Oracle\VirtualBox整个键删除。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall里如果有残留的“Oracle VM VirtualBox”卸载项也删掉。HKEY_LOCAL_MACHINE\SOFTWARE\Classes下如果有VirtualBox.*的 COM 类型注册项删除。文件层面重点检查这几个路径C:\Program Files\Oracle\VirtualBox C:\Program Files (x86)\Oracle\VirtualBox C:\Windows\System32\drivers\VBox*.sys C:\Windows\System32\VBox*.dll C:\Users\你的用户名\.VirtualBox C:\Users\你的用户名\.config\VirtualBox C:\Users\你的用户名\VirtualBox VMs C:\Users\你的用户名\AppData\Local\Temp\VBox*前面几个是程序、驱动、配置看到就能删。但C:\Users\你的用户名\VirtualBox VMs是你的虚拟机硬盘文件所在地这一目录下的所有文件都是你的用户数据不是软件残留。只有当你要彻底抹掉所有虚拟机数据时才删除否则务必保留。还有一个多数人不知道的位置C:\ProgramData\Package Cache里偶尔会有 VirtualBox 安装包的缓存如果空间敏感可以顺手看下能删就删不删一般也不影响使用。2.5 不动 GUI 的远程/批量清理思路这个属于进阶场景。比如公司批量给 IT 机房装过 VirtualBox现在要统一移除一台台点设备管理器不现实。这时可以用 PowerShell 配合 pnputil 做脚本化清理。卸载主程序可以拿到 VirtualBox 安装包的 ProductCode 后静默执行Get-Package -Name *Oracle VM VirtualBox* | Uninstall-Package驱动清理则用 pnputil 循环pnputil /enum-drivers | Select-String -Pattern vbox -Context 0,2拿到 OEM 号后循环删除。这一步我不是特别建议日常用户操作但如果你正好是网管或者在维护训练机房的一批 Windows 设备它会比手动点快很多。核心思路还是和手动一致主程序 - 设备管理器 - 驱动包 - 服务注册表 - 文件残留。3. Linux上的彻底卸载先确认安装方式Linux 平台的卸载不像 Windows 那么多坑但因为安装方式太多包管理器、官方 .run、源码编译、DKMS经常有人用错卸载命令。比如用 apt 装的 VirtualBox用dpkg -l一看是virtualbox-6.1有人却去执行apt remove virtualbox结果根本匹配不上。3.1 通过包管理器安装的卸载先检查系统里到底装了哪些相关包dpkg -l | grep -i virtualbox rpm -qa | grep -i virtualboxDebian/Ubuntu 系列推荐用 purge 连配置文件一起清理sudo apt purge virtualbox virtualbox-dkms virtualbox-qt virtualbox-ext-pack如果装了多个版本比如有老的virtualbox-5.2这种带版本号的包把包名也带上dpkg -l | grep virtualbox | awk {print $2} | xargs sudo apt purge -y用 awk 提取包名再批量 purge 的方式对包数量多的时候很省事但执行前一定先把dpkg -l的结果看一遍确认没有误伤其他软件。RHEL/Fedora 系用 dnf 或 yum 同理sudo dnf remove VirtualBox-*Arch 系如果有官方源安装的 virtualboxsudo pacman -Rsn virtualbox-n会连配置文件一起删-s会删除不再需要的依赖。Arch 下如果还装过 virtualbox-host-dkms、virtualbox-guest-iso 这些配合包也一并删掉。3.2 官方 .run 与编译安装的卸载用 Oracle 官网下载的.run包安装的路径在/opt/VirtualBox。如果安装包文件还在可以直接执行sudo sh VirtualBox-5.2.44-Linux_amd64.run --uninstall如果安装包已经删了也没有现成的卸载脚本就手动删除/opt/VirtualBox然后清理/etc/vbox目录和内核模块。这种“半手动”清理很有效但需要你自己把官方的每一个落盘点找出来。源码编译安装的情况更少。如果你是从源码编译的进到源码目录执行sudo make uninstall同时清理 DKMS 注册过的模块sudo dkms uninstall -m virtualbox -v 5.2.44 sudo dkms remove -m virtualbox -v 5.2.44 --all3.3 内核模块、用户组和配置的清理Linux 下真正容易残留的是内核模块。即使主程序卸了模块文件还可能留在/lib/modules/$(uname -r)/misc/下。检查方式lsmod | grep vbox find /lib/modules -name vbox*.ko 2/dev/null如果还在手动卸载模块再删除文件sudo rmmod vboxdrv vboxnetadp vboxnetflt vboxpci sudo rm -f /lib/modules/$(uname -r)/misc/vbox*.ko sudo depmod -adepmod -a这步很重要模块文件删除后它负责重建模块依赖关系。之后如果系统里还有其他虚拟化软件比如 Docker 的部分内核模块也不会因为旧的模块索引出问题。还有 vboxusers 用户组。如果这个组里已经没有需要保留的成员可以直接删掉sudo groupdel vboxusers最后是用户配置。VirtualBox 的配置目录在不同版本里位置不一样新版本一般在~/.config/VirtualBox旧版本是~/.VirtualBoxrm -rf ~/.config/VirtualBox ~/.VirtualBox注意~/VirtualBox VMs目录同样是用户数据别跟着一起删。如果你确定这台机器以后再也不用 VirtualBox也不需要任何旧虚拟磁盘那才整个目录删掉。4. macOS上的彻底卸载别遗漏系统级文件macOS 下卸载 VirtualBox 最忌讳的做法就是只把/Applications/VirtualBox.app拖进废纸篓。因为它的驱动、受管理的 pkg 安装记录、LaunchDaemon 都在系统目录里拖进废纸篓后重启系统还可能报错或者新版本安装时提示“已安装”。4.1 先处理 pkg 安装记录和系统服务用下面的命令先看系统里有哪些 VirtualBox 相关的 pkg 记录pkgutil --pkgs | grep -i virtualbox常见的记录类似org.virtualbox.pkg.virtualbox用pkgutil --forget注销sudo pkgutil --forget org.virtualbox.pkg.virtualbox这一步相当于告诉系统“这个软件已经卸了”否则你重装新版时macOS 的安装器会认为旧版还在拒绝正常覆盖。LaunchDaemon 在/Library/LaunchDaemons/下通常有org.virtualbox.helper.plist、org.virtualbox.launchd.plist之类的文件。先卸载再删除sudo launchctl unload /Library/LaunchDaemons/org.virtualbox.*.plist sudo rm -f /Library/LaunchDaemons/org.virtualbox.*.plist注意 bash 的通配符展开在路径中间也有效但如果你手误/Library/LaunchDaemons/org.virtualbox.*.plist没有匹配到任何文件bash 会把原样字符串传出去rm 会报“No such file”。如果报错就先用 ls 确认文件名再逐个删除。4.2 内核扩展和用户目录清理macOS 的内核扩展放在/Library/Extensions/下名字都是 VBox 开头的 kextls /Library/Extensions/ | grep -i vbox sudo rm -rf /Library/Extensions/VBoxDrv.kext sudo rm -rf /Library/Extensions/VBoxNetAdp.kext sudo rm -rf /Library/Extensions/VBoxNetFlt.kext sudo rm -rf /Library/Extensions/VBoxUSB.kext系统级配置文件在/Library/Application Support/VirtualBox/整个目录删除sudo rm -rf /Library/Application Support/VirtualBox用户目录下的残留也别漏rm -rf ~/Library/Preferences/org.virtualbox.* rm -rf ~/Library/Application\ Support/VirtualBox rm -rf ~/Library/Saved\ Application\ State/org.virtualbox.app.VirtualBox.savedState如果系统上已经安装了新版 VirtualBox只把旧版残留清掉时第 4.1 和 4.2 节操作会误伤新版。所以执行前先想清楚你的需求到底是“彻底卸载所有 VirtualBox”还是“卸载旧版本然后装新版本”。如果是后一种装新版前只需要清理 pkg 记录冲突和旧配置不需要把新版本的 kext 也删了。macOS 上所有 kext 删除后都建议重启一次。如果不重启某些残存的 kext 仍可能被加载在内存里新版本安装时依然会提示驱动冲突。5. 验证清单怎样才算真正“完全卸载”清理完别急着装新版本按照下面的清单过一遍能省去之后很多不必要的排错。检查项Windows 上怎么看Linux 上怎么看macOS 上怎么看主程序是否残留C:\Program Files\Oracle 下是否还有 VirtualBox 目录which virtualbox或 find /opt -name VirtualBox/Applications 下是否还有 VirtualBox.app服务/守护进程services.msc 里搜 vboxsc querysystemctl status vboxdrv或 ls /etc/init.d/ls /Library/LaunchDaemons/ 搜 virtualbox内核模块/驱动设备管理器“显示隐藏的设备”lsmod | grep vboxls /Library/Extensions/ 搜 VBox*网络适配器网络连接里是否还有 VirtualBox Host-Onlyip addr 里是否还有 vboxnet0networksetup -listallhardwareports 检查是否有 VBox 接口用户配置%USERPROFILE%.VirtualBox~/.config/VirtualBox、~/.VirtualBox~/Library/Preferences 搜 virtualbox数据残留VirtualBox VMs 目录是否保留按需同上同上Linux 下还有一个通用做法直接用 find 全盘扫find / -iname *virtualbox* -o -iname *vbox* 2/dev/null | grep -v /proc/但输出里会包含大量~/VirtualBox VMs下的镜像文件这些是用户数据不是残留别看到双肩包文件就删。重点看目录结构比如/opt/VirtualBox、/usr/lib/virtualbox、/etc/vbox、/lib/modules/.../misc/vbox*.ko这些路径点。Windows 上如果没有 Everything也可以用系统自带的文件资源管理器搜索“VirtualBox”然后人工判断哪些是配置、哪些是驱动、哪些是虚拟机镜像。我个人的建议是装一个 Everything搜索速度比系统自带的资源管理器快得多尤其是在排查注册残留文件的时候。6. 卸载后重装VirtualBox常踩的三个坑完全清理后重装新版本大多数人会顺利很多但还有三个高频问题值得单独说。它们不是卸载导致的问题而是卸载不彻底和重装操作叠加后出现的。6.1 rc-1908 内核驱动问题的来龙去脉Kernel driver not installed (rc-1908)在 Linux 上最常见。VirtualBox 主程序装好了但它依赖的内核模块没有正确加载。常见原因就是旧模块残留 新版本模块又没有编译成功。卸载后重装时如果发现这个错误先不要直接卸载重来一遍。进入虚拟化模块管理目录重新配置sudo /sbin/vboxconfig或者老版本用sudo /etc/init.d/vboxdrv setup执行后看输出里模块编译是否成功。如果提示缺少 linux-headers先按当前内核版本装上sudo apt install linux-headers-$(uname -r)然后重新sudo /sbin/vboxconfig。这一步百分之八九十能解决 rc-1908。如果还是不行大概率是之前没有完全清理的 vboxdrv 模块还在干扰编译回到第 3.3 节把模块文件清干净再试。6.2 Host-Only 适配器残留与 ensp 不兼容ensp 依赖 VirtualBox 的 Host-Only 网络但它对 VirtualBox 的版本非常挑剔。很多人装 ensp 时跟着教程装了某个版本的 VirtualBox之后又因为其他需求升级或更换了 VirtualBox 版本再打开 ensp 就提示兼容错误。这种情况很多时候不是 ensp 和 VirtualBox 版本真的不兼容而是系统里残留了旧版本的 Host-Only 适配器。Windows 上最典型的结果就是你在 VirtualBox 全局设置里看到 Host-Only 适配器列表中有两个名字一样的 VirtualBox Host-Only Ethernet Adapter其中一个已经失效。解决方法就是按照第 2.3 节的流程把设备管理器里所有 VirtualBox 网卡设备全部卸载再用 pnputil 删干净驱动包然后只装 ensp 对应版本的 VirtualBox。装好后在 VirtualBox 的“全局设置 - 网络 - Host-Only Networks”里只保留一个新创建的适配器ensp 里的 AR 设备启动会稳定很多。6.3 重装后怎么找回原来的虚拟机如果你卸载前没有导出 ova只是把VirtualBox VMs目录保留了下来重装新版本后启动 VirtualBox 会发现虚拟机列表是空的但目录里的 vdi 文件还在。找回方法很简单打开 VirtualBox 主界面菜单“控制 - 添加虚拟机”或“注册虚拟机”定位到VirtualBox VMs目录下的.vbox文件选中并打开。如果 .vbox 文件也不在了但 vdi/vmdk 磁盘文件还在那就需要先创建一台新虚拟机然后在存储设置里挂载这个旧磁盘文件。这种方式能找回大部分配置但要注意原虚拟机的 UUID 如果被新版本识别出“已存在”会提示你是否接管或重新生成。如果你想要更干净、可迁移的方案以后建议养成习惯重要环境定期用VBoxManage export打 ova 包而不是只拷贝磁盘文件。ova 里包含了虚拟机的硬件配置、组网信息、快照记录重装后导入导出的体验比手动挂载磁盘舒服得多。按照上面的流程把三件事做对——卸载前备份、卸载中清理驱动和网络适配器、卸载后验证——VirtualBox 就没有卸不干净的。我自己的习惯是每次清理完强制重启一次再装新版本这个动作看起来“不技术”但恰恰能解决 90% 的驱动残留问题。如果你现在正被某个 VirtualBox 报错卡住不要急着重装三遍停下来先把旧版本的“根”拔干净问题往往就自己消失了。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询