
在 Ubuntu 上通过 VirtualBox 装一个 Windows 10 虚拟机是我这几年被身边同事和朋友问得最多的一件事。标题里那三个关键词——ubuntu、virtualbox、win10——组合在一起要解决的痛点非常具体不想为了偶尔用一次的 Windows 软件去重启切换双系统又需要一个干净、可随时回滚的 Windows 环境。这篇东西我把自己反复踩过的坑和验证过的步骤整理成一条线从方案选型、创建虚拟机、安装系统到增强功能配置和常见报错处理一步步走完希望能帮你少走几个小时弯路。适合谁来参考需要在公司或自用 Linux 上跑 Windows 专属应用的人比如网银 U 盾、老版 IE 兼容性测试、工程软件、财务客户端以及想在 Ubuntu 上搭一个隔离测试环境又不愿意来回重启的开发者。只要你的 Ubuntu 版本不算太老VirtualBox 能正常装上下面这套流程基本可复现。我个人的建议是优先用虚拟机而不是双系统原因很直白双系统切换一次要重启虚拟机可以随时挂起、快照回滚出了问题也不影响宿主机。尤其当你只是偶尔用一下 Windows 的某个工具虚拟机这个“随时开关、坏了不心疼”的优势双系统完全给不了。VirtualBox 又是所有方案里最“平民”的选择——免费、开源、跨平台Ubuntu 下不用折腾破解命令行管理也成熟后面我会解释为什么我更推荐从 Oracle 官方源而不是 Ubuntu 默认源来安装。1. 准备工作与方案选型为什么是 Ubuntu VirtualBox Win101.1 为什么选 VirtualBox 而不是 VMware先说选型。很多同事问我VMware Workstation 性能不是更好吗为什么不用它这个问题我分两头讲。VMware 对硬件虚拟化的优化确实更激进磁盘 IO 和 3D 图形表现更好适合有大量编译任务、数据库压力测试这类重负载场景。但 VirtualBox 在 Ubuntu 下的优势同样明显开源免费软件源里直接能装VBoxManage 命令行工具很成熟而且对于一个跑网银、Office、浏览器、微信这类轻负载需求的场景来说两者性能差距在实际使用中几乎感知不到。我自己实跑过给 Win10 分配 4 核 8G 内存同时开 Office 和浏览器VirtualBox 完全稳得住。再加上它支持共享文件夹、双向剪贴板、USB 直通日常协作体验并不比商业方案差。所以除非你有明确的高负载需求否则对我来说VirtualBox 就是 Ubuntu 上的那个“够用且省心”的答案。1.2 Ubuntu 宿主机的前置检查三件套一个都不能少动手装 VirtualBox 之前先确认三件事每件都能避免一次深夜崩溃。第一CPU 虚拟化有没有开启。我见过太多人装好后启动虚拟机就黑屏排查半天发现是 BIOS 里 VT-x/AMD-V 没开。检查命令很简单egrep -c (vmx|svm) /proc/cpuinfo输出大于 0 说明硬件虚拟化可用。如果输出是 0你得进 BIOS 把 Intel Virtualization Technology 或 SVM Mode 打开VirtualBox 原则上可以跑软件虚拟化但性能惨不忍睹不推荐。第二安装编译内核模块的依赖sudo apt install build-essential linux-headers-$(uname -r) dkmsVirtualBox 在安装和升级时都要重新编译 vboxdrv 内核模块这一步提前做好能省掉后续大量排错时间。很多人遇到“VirtualBox 无法打开虚拟机”最后定位到就是内核头文件不匹配。这个坑我在排错章节会单独讲。第三准备 VirtualBox Extension Pack。它提供 USB 2.0/3.0 直通、RDP 远程桌面等能力官网下载双击 .vbox-extpack 即可导入。版本必须和 VirtualBox 主版本严格对应版本不一致会导致导不进去。这个细节我踩过一次扩展包装不上USB 一直识别不了查了半天才发现是主程序和扩展包差了半个版本。1.3 Win10 镜像获取与校验别拿了个坏文件还不知道镜像来源我首选微软官方的 Media Creation Tool生成 ISO 后留存。如果你在企业内网或局域网部署环境也可以从 MSDN 类站点下载但强烈建议比对 SHA256 校验值防止拿到被篡改的文件sha256sum ~/Downloads/Win10_22H2_Chinese_x64.iso再把输出和官网页面给的值比对。版本选择上如果只是拿来跑日常办公软件Windows 10 专业版 22H2 最省心LTSC 版本没有商店和一些 UWP 组件适合做瘦身环境但有些依赖新运行库的软件装不上容易踩坑。我用专业版做基础环境稳妥。2. 创建虚拟机与系统安装一步步把 Win10 装上去2.1 新建虚拟机参数这么定才不会扯皮打开 VirtualBox 后点“新建”操作系统类型选 Microsoft Windows版本选 Windows 10 (64-bit)。这里不要选 32 位除非你有特别老的应用依赖否则内存上限和指令集都会被限制。内存推荐至少 4096MB我实测 4GB 属于“能跑但不顺畅”8GB 是舒适区间。如果宿主机只有 8GB 内存建议虚拟机给 4GB给 Ubuntu 自身留口喘气。CPU 核心数给 2 到 4 个但记住不要超过物理机的物理核心总数超出之后反而会因为调度开销让虚拟机变慢。磁盘建议 VDI 格式动态分配大小给 50GB 到 60GB。动态分配的意思是虚拟磁盘文件按实际使用量增长刚开始只占很小空间数据多了再慢慢扩。固定大小性能略好但创建时一次性占满真实磁盘对磁盘紧张的人不友好。视频内存给满 128MB勾选“启用 3D 加速”这对后面的显示缩放和滚动流畅度影响很大。2.2 挂载 ISO 与启动安装几个关键选项别乱动在“设置 → 存储”里选中光驱点光盘图标右边的属性选择“选择磁盘映像文件”把刚才下载的 ISO 挂进去。启动虚拟机后正常情况下会直接进入 Windows 安装界面。这里有几个细节值得注意。安装到选择磁盘时如果只看到一块未分配空间别手动去建立什么系统保留分区直接选中整块空间点“下一步”即可。Windows 安装器会自动创建 ESP/MSR/系统分区。如果安装中途蓝屏或报“Windows 无法安装到此磁盘”八成是硬盘控制器类型不对。回到“设置 → 存储”确认 SATA 控制器用的是 AHCI 模式不要用 NVMe。VirtualBox 默认就是 AHCI但如果创建虚拟机时选了 NVMe 控制器部分精简版镜像可能缺驱动统一用 SATA 最保险。2.3 安装过程中的三个常见卡点卡点一安装界面鼠标键盘失灵。多数情况是 USB 控制器的问题把“设置 → USB”改成 USB 2.0 甚至 1.1一般能解装完增强功能再改回 3.0。卡点二安装完成第一次重启后黑屏。这多半和 EFI 有关。如果你创建虚拟机时在系统设置里勾选了“启用 EFI”而镜像本身对应的是传统 MBR 引导重启就会找不到启动项。解决方式是关掉 EFI 用传统 BIOS或者在虚拟光驱里重新挂载 ISO 做引导修复。我的习惯是默认不勾 EFIWin10 用 MBR 引导完全够。卡点三安装界面分辨率始终只有 800x600 或 1024x768。这太正常了没装显卡驱动之前 Windows 只能靠通用显示驱动撑着。先忍一忍装完增强功能分辨率自动就上去了。2.4 装完系统的第一件“小事”时间和激活状态Win10 装完进桌面第一件事不是装软件而是装增强功能这个我马上会说。第二件事是确认时间同步。虚拟机的 Windows 时间经常因为硬件时钟设置问题跑偏我的处理是把系统时区改成北京开启自动同步时间然后别去动 VirtualBox 的 UTC 时钟设置。Ubuntu 把硬件时钟当 UTCWindows 当本地时间如果两边都默认不改通常不会有问题。如果你真的遇到时间错乱我后面排错部分给了一个注册表解法。激活方面正版密钥该输就输不展开。3. 装增强功能与主机协作没它你等于没装好3.1 为什么必须装 Guest Additions三件套了解一下很多刚接触虚拟机的人装完 Win10发现鼠标移动卡顿、窗口没法缩放、剪贴板不能互通就以为是系统没装好。其实这些都是因为缺少 Guest Additions即增强功能。它是一组跑在虚拟机里的驱动和工具包负责动态分辨率适配、3D 加速、共享剪贴板、拖放文件、共享文件夹这几件核心事。没有它虚拟机就只是个能开机的基本空壳。安装方法很简单VirtualBox 窗口顶部的“设备”菜单点“安装增强功能”虚拟光驱里会出现 VBoxWindowsAdditions.exe双击运行一路下一步装完重启。对 Win10 来说增强功能安装一般不会出问题但如果遇到“安装程序无法验证驱动签名”这类报错重启进安全模式再装一遍通常能过。3.2 共享文件夹最常用的协作通道共享文件夹是我用得最频繁的功能之一。比如在宿主机里写代码、虚拟机里跑老 IE 测兼容性直接把宿主机目录挂给虚拟机两边都省事。操作路径VirtualBox 设置里选“共享文件夹”点新增选好宿主机路径勾选“自动挂载”和“固定分配”。然后在 Windows 虚拟机里打开资源管理器在“此电脑”里就能看到挂载的共享盘。如果看不到在运行框直接敲\\VBOXSVR\共享名手动访问一次后通常会固定下来。注意共享文件夹虽然名字像网络共享但它不依赖 Windows 的网络发现和防火墙绝大多数情况下都能正常工作。我踩过的一个坑是Ubuntu 升级内核后增强功能的内核模块编译失败共享文件夹直接失效。解决办法是把 VirtualBox 内核模块重新编译sudo /sbin/vboxconfig或者重装当前内核的 headers 之后再重新安装增强功能。3.3 NAT 模式下的端口转发宿主机访问虚拟机服务默认 NAT 网络里虚拟机可以访问宿主机和互联网但宿主机反向访问虚拟机是做不到的。这导致一个需求落空你想在宿主机浏览器里打开虚拟机里跑在 3000 端口的服务比如内网系统的兼容性测试结果发现 IP 根本不通。解决办法是端口转发VBoxManage natpf Win10 tcp,127.0.0.1,3000,,3000这条命令把宿主机本地 3000 端口转发到虚拟机内网的 3000 端口。执行后宿主机访问http://127.0.0.1:3000就能打开虚拟机里的服务。如果虚拟机内 IP 不是默认的先跑ipconfig /all查看再对应修改目标 IP。这个能力用来做前后端联调和兼容性测试非常实用。如果是局域网里其他电脑也想访问虚拟机服务那就别用 NAT 了直接把网络模式改成“桥接网卡”让虚拟机跟宿主机处于同一个局域网网段。这种模式下虚拟机有自己的局域网 IP其他电脑直接访问就行。区别在于NAT 适合“宿主机单向访问虚拟机”桥接适合“外部设备直接访问虚拟机”。我一般开发调试用 NAT 端口转发部署演示用桥接看场景选。3.4 双向剪贴板与拖放日常小技巧“设备 → 共享剪贴板”选“双向”“拖放”也选“双向”Ubuntu 和 Win10 之间就能直接复制文本、拖拽文件了。小文件这么用很爽但大文件拖拽容易因为校验失败而中断。几个 GB 的安装包我建议走共享文件夹或直接挂 U 盘别跟拖放死磕。这个细节能省你一晚上的时间。3.5 网络配置的进阶选择改半虚拟化提升吞吐如果你经常在虚拟机里大量下载文件或做网络测试默认的网卡类型性能可能不够。在“设置 → 网络”里把“高级 → 适配器类型”改成 virtio-net配合 Windows 的 virtio 驱动网络吞吐会有明显提升。我实测下载大文件时速度能提升接近一倍。前提是你得先给 Win10 安装 virtio 驱动否则网络设备会显示黄色感叹号。4. 常见问题与排错实录踩坑现场复盘4.1 内核模块编译失败0x80004005 与 VirtualBox 打不开虚拟机你可能会遇到这样的场景前一天虚拟机还好好的第二天 Ubuntu 执行了系统更新再启动虚拟机直接弹 0x80004005。这个错误码看着像 Windows 风格背后其实是 VirtualBox 的内核模块 vboxdrv 加载失败。检查方式systemctl status vboxdrv.service sudo dkms status如果 dkms 显示模块状态为 broken说明 VirtualBox 版本和当前内核头文件不匹配。解决方法是先装对应内核的 headers再重建模块sudo apt install linux-headers-$(uname -r) sudo /sbin/vboxconfig执行完再打开 VirtualBox 重试。如果还不行试试把 VirtualBox 升级到新版本新版本通常会对新内核做适配。顺便再强调一遍VirtualBox 和扩展包的版本必须完全一致很多莫名奇妙的 USB 失败、RDP 失败根子都在扩展包版本没对上。4.2 黑屏与“开机无引导”三种成因一次理清黑屏问题得细说因为它有几种不同成因。第一种创建虚拟机时勾选了 EFI导致装完后重启找不到引导。处理方式设置 → 系统 → 主板取消“启用 EFI”重新启动。第二种启动时黑屏屏幕左上角有个小横杠闪烁说明引导顺序里虚拟光驱排在硬盘前面而光驱里的 ISO 还没卸载系统尝试从 ISO 引导直接失败。处理方式把光驱里的 ISO 卸掉把硬盘挪到引导顺序第一位。第三种硬盘控制器类型不对Windows 报“磁盘找不到”把 NVMe 控制器改成 SATA/AHCI 即可解决问题。这三种情况我都遇到过建议排查时先看第一种因为最容易误判成系统装坏了。4.3 分辨率锁死与 3D 加速不生效如果你装完增强功能分辨率还是只能选 1024x768 或更低从两个方向排查。第一去“设备 → 显示”确认显卡驱动是否真的装上设备管理器里看到 VirtualBox Graphics Adapter 就没问题。第二如果在 VirtualBox 设置里勾选了“启用 3D 加速”但增强功能版本太老反而会引发渲染崩溃显示就会异常。我遇到的情况是把 3D 加速取消勾选保存重新勾选重启虚拟机显示就恢复了。另外Win10 的缩放比例如果设成 150% 或 200%显卡驱动渲染压力会变大有 3D 需求时性能下降明显。我的习惯是保持 100% 缩放必要时用 Windows 自带的放大镜。4.4 USB 设备识别不了三步自查USB 直通对我是刚需很多银行 U 盾必须在 Windows 环境里用。但常见情况是鼠标键盘能识别U 盾插进去毫无反应。三步自查法第一步确认 Extension Pack 已正确安装且版本与 VirtualBox 一致。第二步检查当前用户是否加入了 vboxusers 组groups $USER如果没有执行sudo usermod -aG vboxusers $USER之后注销或者重启才生效。第三步确认虚拟机的“设置 → USB 设备”里勾选了 USB 2.0 或 3.0 控制器然后在虚拟机运行状态下从“设备 → USB”菜单把目标设备手动勾选挂上去。三步走完基本都能识别。还有一个容易被忽略的点不要在虚拟机启动前就把 U 盾插上有些设备在宿主机侧被占用会导致直通失败等虚拟机启动完再插成功率更高。4.5 性能卡顿与 CPU 占用居高不下配置优化清单很多人觉得 VirtualBox 里跑 Win10 卡其实不是 VirtualBox 不行是默认配置太保守。几个方向我实测很有效。第一显示设置里图形控制器改成 VBoxSVGA显存拉满 128MB启用 3D 加速。第二关闭 Windows 里没用的后台服务像 Windows Search、Windows Defender 实时保护如果你只是临时跑程序实时保护反而拖慢一切。不过关实时保护有风险建议只在隔离测试环境里这么干。第三不要把虚拟机的视觉效果开成花哨模式调成“调整为最佳性能”会顺畅很多。还有一个很多人忽略的点不要在虚拟机里同时开微信和一堆网页多开的进程会把内存吃穿虚拟内存频繁交换卡顿感非常明显。4.6 时间错乱一个注册表键值的解法时间不对这个问题我单独拎出来说。Ubuntu 和 Windows 对硬件时钟的解读方式不同Ubuntu 把 RTC 当 UTCWindows 当本地时间所以虚拟机里的 Windows 会经常出现快几个小时的时差。彻底的办法是让 Windows 也使用 UTC 作为硬件时钟注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation下新建 DWORD 值RealTimeIsUniversal设为 1重启虚拟机。这个操作我只推荐在虚拟机里做宿主机改 RTC 模式会影响其他操作系统风险大。如果你只是偶尔看到时间差几个小时直接在 Windows 设置里点“立即同步”就行不一定非要改注册表。5. 进阶技巧与命令行管理让虚拟机更好用5.1 快照装好系统后最值得养成的好习惯Win10 虚拟机最容易碰到的问题是“装了几个软件之后系统变慢、开始菜单打不开”。与其反复重装系统不如在系统装好、增强功能装完、常用软件装完这个“黄金状态”时拍一个快照。之后不管是搞坏了系统、误删了文件还是装了来历不明的软件随时用快照回滚。快照位置在“虚拟机 → 快照”面板点“拍摄快照”即可。注意快照会占用真实磁盘空间保留一两个就够磁盘紧张时删掉旧快照可以回收空间。5.2 克隆与导出把虚拟机搬到另一台电脑如果你有一台配置好的 Win10 虚拟机想复制到另一台 Ubuntu 机器上可以用克隆功能或导出 OVA 文件。克隆会生成一份完全独立的新虚拟机适合在同一台机器上做多开测试。导出的 OVA 则是一个打包文件通过 U 盘或网络拷到其他机器再导入。注意导出的 OVA 体积通常会很大因为动态磁盘在导出过程中会被展开成实际占用大小提前有心理准备就好。5.3 VBoxManage 命令行批量管理的日常操作图形界面能完成九成工作但命令行在批量处理时效率高得多。几个我常用的VBoxManage list vms VBoxManage showvminfo Win10 | grep -i State\|Memory\|CPU VBoxManage startvm Win10 --type headless VBoxManage controlvm Win10 savestateheadless模式适合没有显示器或省资源的服务器场景savestate是挂起并保存状态比直接关机快很多。调整虚拟机的 CPU 和内存也可以命令行操作VBoxManage modifyvm Win10 --cpus 4 --memory 8192这类操作最好在虚拟机关机状态下进行运行中修改容易出不可预期的问题。5.4 动态磁盘瘦身删了文件不代表磁盘真的变小虚拟机用久了虚拟磁盘文件会不断膨胀。即使你在虚拟机里删了大文件宿主机上的磁盘文件还是那么大因为动态磁盘很少自动回收空间。回收方法先在虚拟机里用 sdelete 或磁盘清理工具把空闲区域清零然后关机在宿主机执行VBoxManage modifymedium /path/to/disk.vdi --compact执行完虚拟磁盘文件会明显变小。跑 compact 前一定要做好快照或备份虽然一般不出问题但你不应该指望虚拟磁盘文件意外损坏时能轻松自愈。最后说说我自己在实际操作中的体会吧。装虚拟机这件事很多人输在心态上——总想一次成功一遇到报错就慌。但 VirtualBox 这套东西恰恰属于“多踩几次坑之后再也不慌”的典型工具。我身边所有坚持用下来的人没有一个被某一两个报错劝退真正劝退他们的其实是抱着“下一步下一步点到底”的心态完全不去想每一步背后的原因。我自己的流程是每步操作前先想清楚它解决什么问题出问题先查 dkms 和 vboxdrv 状态再查增强功能版本按这个顺序排查基本都能把问题定位清楚。希望这篇内容对同样在 Ubuntu 上需要跑 Win10 的你有实际帮助。如果你有更冷门的排错经验也欢迎一起交流。