资讯中心

Ubuntu上通过KVM安装Windows 10:高性能虚拟机配置与VFIO直通指南

📅 2026/8/17 21:27:54
Ubuntu上通过KVM安装Windows 10:高性能虚拟机配置与VFIO直通指南
1. 项目概述为什么要在Ubuntu上安装Windows 10如果你是一个长期使用Ubuntu的开发者、运维或者技术爱好者突然有一天你发现自己需要一个只能在Windows 10上运行的软件——可能是某个行业专用的客户端一个特定的游戏或者一个必须用到的硬件驱动。这时候你有几个选择重启电脑进入双系统或者打开一个虚拟机。但双系统切换麻烦虚拟机性能又有损耗。有没有一种方法能让Windows 10像一个原生应用一样无缝地运行在Ubuntu的桌面环境里既能直接调用硬件资源又能和Linux系统文件互通这就是我们今天要探讨的核心在Ubuntu系统上“安装”一个真实、可用的Windows 10。请注意这里的“安装”并非指传统的双系统引导也不是简单的虚拟机套娃。我们追求的是通过虚拟化技术实现一个高性能、集成度高的Windows运行环境。经过我多年的折腾和测试最稳定、效果最好的方案是使用KVM基于内核的虚拟机配合Virt-Manager图形化管理工具并开启VFIO PCIe直通技术如果你的硬件支持将显卡等关键硬件直接分配给Windows虚拟机从而获得近乎原生系统的性能体验。这个方法不仅“真实有效”而且能让你在享受Linux自由与高效的同时无缝调用Windows生态的特定资源。接下来我将从设计思路、硬件准备、详细安装步骤到性能优化和问题排查为你完整拆解这个过程。2. 核心方案设计与硬件准备在开始动手之前我们必须理清思路并检查硬件。盲目操作很可能导致安装失败或性能不佳。2.1 方案选型为什么是KVM VFIO市面上能让Linux运行Windows的方案很多我们需要做一个清晰的对比方案原理性能集成度适用场景核心缺点双系统 (Dual Boot)通过GRUB引导独占整块硬盘分区。原生性能。极低需要重启切换。需要长时间、高性能运行Windows大型应用如3A游戏、专业渲染。切换极其不便数据隔离。VirtualBox / VMware基于宿主机操作系统的“托管式”虚拟化。中等存在一定开销。高支持共享文件夹、剪贴板。轻量级测试、运行普通办公软件。图形性能较弱3D加速支持一般。KVM (本方案)Linux内核原生支持的硬件虚拟化。极高接近原生。高可通过Spice/Virtio驱动深度集成。高性能图形应用、游戏、专业软件。配置稍复杂需要CPU虚拟化支持。KVM VFIO PCIe直通KVM基础上将物理PCIe设备如显卡独占给虚拟机。几乎等同于原生GPU性能无损。中等直通后宿主机无法使用该设备。追求极致图形性能如Windows游戏、GPU计算。硬件要求严格需要额外显卡。为什么最终选择KVM因为它是Linux内核的一部分效率远高于运行在用户态的VirtualBox。配合Virt-Manager这个图形前端管理起来并不比VMware复杂。而VFIO直通则是“屠龙技”它能将你的第二块独立显卡完全交给Windows虚拟机让游戏帧数直接拉满是追求极致体验的终极方案。本教程将涵盖标准KVM安装并在关键部分指出VFIO直通的配置差异。2.2 硬件与系统检查清单你的机器必须满足以下条件这是项目成功的基石CPU虚拟化支持强制你的CPU必须支持Intel VT-x或AMD-V虚拟化技术。在终端执行以下命令检查egrep -c (vmx|svm) /proc/cpuinfo如果输出数字大于0则表示支持。还需要在BIOS/UEFI设置中确保该功能已启用这是新手最常忽略的一步。操作系统本教程以Ubuntu 22.04 LTS为例其他版本如20.04、24.04也基本适用。确保系统已更新sudo apt update sudo apt upgrade -yWindows 10 镜像准备一个官方的Windows 10 ISO镜像文件。建议从微软官网下载确保纯净。记住存放路径例如~/Downloads/Win10_22H2_Chinese.iso。磁盘空间为Windows虚拟机至少分配50GB的可用空间。建议放在SSD上以获得最佳体验。内存宿主机至少需要8GB内存。为Windows虚拟机分配4GB或以上例如8GB主机分4GB给Win10。VFIO直通额外要求可选但推荐了解两块显卡一块给Ubuntu可以是集成显卡另一块独立显卡如NVIDIA GTX/RTX系列或AMD RX系列用于直通给Windows。这是实现高性能游戏的关键。主板支持主板BIOS需要支持IOMMUIntel叫VT-dAMD叫AMD-Vi。CPU支持CPU也必须支持IOMMU技术。注意对于大多数用户我们先完成基础的KVM安装。VFIO直通涉及更多底层配置我会在后续章节作为高级选项详细说明。不要一开始就尝试直通先确保基础虚拟机运行正常。3. 安装与配置KVM虚拟化环境这是搭建虚拟化平台的基础步骤我们将安装所有必要的软件包和工具。3.1 安装KVM及相关组件打开终端执行以下命令安装核心套件sudo apt install -y qemu-kvm virt-manager virt-viewer libvirt-daemon-system libvirt-clients bridge-utils virtinst libvirt-daemon包作用解析qemu-kvm: 提供底层的处理器虚拟化和硬件模拟。virt-manager: 图形化管理工具GUI我们将主要用它来创建和管理虚拟机。virt-viewer: 用于连接虚拟机控制台。libvirt-daemon-systemlibvirt-clients: Libvirt服务端和客户端提供管理虚拟机的API。bridge-utils: 网络桥接工具用于创建更灵活的网络模式。virtinst: 命令行创建虚拟机的工具。安装完成后需要将当前用户加入libvirt和kvm用户组以便无需root权限即可管理虚拟机sudo adduser $USER libvirt sudo adduser $USER kvm操作后务必注销并重新登录或者重启系统以使组权限生效。3.2 验证KVM安装安装完成后运行以下命令验证KVM模块是否已加载且运行正常lsmod | grep kvm你应该看到类似kvm_intel或kvm_amd的输出。接着检查libvirt服务状态sudo systemctl status libvirtd确保服务是active (running)状态。如果没有使用sudo systemctl start libvirtd启动并用sudo systemctl enable libvirtd设置开机自启。3.3 配置虚拟网络默认NAT模式对于初次使用virt-manager默认创建的“NAT”网络已经足够。它允许虚拟机通过宿主机上网但外部网络无法直接访问虚拟机类似于家用路由器。如果你想使用更强大的“桥接”模式让虚拟机和宿主机处于同一局域网拥有独立IP则需要额外配置。鉴于篇幅我们先使用默认NAT桥接模式可以在虚拟机创建后于网络设置中更改。4. 使用Virt-Manager创建Windows 10虚拟机现在进入图形化操作的核心环节。我们将一步步创建一个针对Windows 10优化的虚拟机。4.1 启动Virt-Manager并创建新虚拟机在Ubuntu的应用菜单中搜索并打开“Virtual Machine Manager”。首次打开可能需要输入你的用户密码。点击左上角“文件” - “新建虚拟机”。在弹出的向导中选择“本地安装介质ISO映像或光驱”点击“前进”。点击“浏览”找到你准备好的Windows 10 ISO镜像文件然后点击“选择卷”。系统通常能自动识别出这是Windows点击“前进”。内存和CPU配置这是性能的关键。内存根据你的宿主机总内存分配。例如16GB宿主机可以分配4096 MB (4GB)或8192 MB (8GB)给Windows。不要分配超过宿主机可用内存的80%。CPU分配核心数。例如一个8核CPU可以分配4个核心。勾选“复制主机CPU配置”这能让虚拟机更好地利用CPU特性。点击“前进”。磁盘配置选择“为虚拟机创建磁盘镜像”。大小建议50.0 GB起步。选择“qcow2”格式。这是QEMU的动态格式初始文件小随使用增长支持快照比原始的“raw”格式更灵活。实操心得即使你物理磁盘空间充足也建议将虚拟机磁盘放在SSD上。机械硬盘的IO性能会成为虚拟机流畅度的巨大瓶颈尤其是在系统启动和软件加载时。命名与网络给你的虚拟机起个名字例如Win10-Pro。网络选择默认的“NAT”模式。在最后一步务必勾选“在安装前自定义配置”这是优化性能的关键然后点击“完成”。4.2 关键硬件配置优化安装前必做勾选“自定义配置”后会进入虚拟机硬件详情页面。在这里我们需要进行几项至关重要的调整。CPU模型与拓扑左侧选择“CPU”。“配置”选择“主机-passthrough”。这会将宿主机的CPU型号和所有特性直接暴露给虚拟机获得最好的CPU性能兼容性尤其是对游戏和某些专业软件。检查“拓扑”是否正确反映了你分配的核心数如插槽1每个插槽核心4线程1。芯片组与固件左侧选择“概述”。将“芯片组”从默认的i440FX改为Q35。Q35是更新的芯片组架构对现代操作系统如Win10支持更好也是启用UEFI和安全启动的前提。将“固件”从默认的BIOS改为UEFI。这符合现代Windows 10的安装标准启动更快支持安全启动。磁盘总线类型性能飞跃的关键左侧找到并选择你的虚拟磁盘如sda或vda。将“磁盘总线”从默认的IDE或SATA改为VirtIO。为什么是VirtIOVirtIO是一种为虚拟化环境设计的半虚拟化驱动协议其I/O磁盘和网络性能远优于模拟的真实硬件如IDE、SATA网卡。但Windows默认不包含VirtIO驱动所以我们需要在安装时手动加载。网络模型优化左侧选择“NIC”网络接口卡。将“设备模型”从默认的rtl8139或e1000e改为virtio。同样是为了获得最佳网络性能。显示协议图形性能左侧选择“显示协议”。将“类型”从默认的Spice server改为VNC server。对于初次安装VNC兼容性更好。安装完VirtIO驱动后可以再改回Spice以获得更好的交互体验如动态分辨率调整、共享剪贴板。将“视频”模型从QXL改为VirtIO或VMVGA。同样这需要后续安装驱动才能正常工作但提前设置好。添加VirtIO驱动ISO这是让Windows识别VirtIO磁盘和网络的关键一步。点击左下方“添加硬件”。选择“存储”设备类型选“CDROM设备”。点击“管理”或“浏览”你需要先下载VirtIO驱动ISO。可以从Fedora项目获取最新版https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso下载后选择这个ISO文件作为新的CDROM。确保其连接状态为“连接”。完成以上设置后你的硬件列表应该包含一个VirtIO磁盘、一个VirtIO网卡、一个用于安装Windows的ISO、一个用于加载驱动的VirtIO驱动ISO。点击右下角“开始安装”。5. Windows 10安装与VirtIO驱动加载虚拟机启动后会从Windows 10安装ISO引导。安装过程与物理机几乎一致但有几个关键点需要注意。5.1 安装过程中的关键步骤语言与键盘设置按提示选择中文简体点击“下一步”。点击“现在安装”。输入产品密钥如果有则输入没有可以点击“我没有产品密钥”稍后激活。选择系统版本选择你需要的版本如“Windows 10 专业版”点击“下一步”。接受许可条款点击“下一步”。选择安装类型选择“自定义仅安装Windows高级”。5.2 加载VirtIO驱动识别磁盘这是整个安装过程中最重要的一步。如果你之前没有将磁盘总线改为VirtIO或者没有加载驱动这里将看不到任何磁盘在“你想将Windows安装在哪里”的页面你会看到驱动器列表为空并提示“未找到任何驱动器”。点击页面下方的“加载驱动程序”。点击“浏览”。你会看到可用的驱动器其中应该有一个是CD驱动器 (D:)或者CD驱动器 (E:)这就是我们挂载的VirtIO驱动ISO。进入该CD驱动器依次导航至viostor-w10-amd64如果你的虚拟机是64位。选择这个文件夹点击“确定”。系统会列出可用的驱动程序选择“Red Hat VirtIO SCSI controller”这是用于磁盘的点击“下一步”。加载成功后驱动器列表里就会出现你的虚拟硬盘通常为50GB。选中它点击“下一步”。Windows安装程序就会开始复制文件。常见问题如果浏览CD驱动器时看不到viostor文件夹可能是VirtIO驱动ISO版本太旧或不对。请确保从上述Fedora链接下载了最新稳定版。另一个可能是你下载的ISO里没有对应Windows 10版本的驱动通常w10或win10目录是通用的。5.3 完成安装与初始设置之后的过程就是常规的Windows安装等待文件复制、安装功能和更新期间会自动重启几次。重启时Virt-Manager可能会提示你“从CDROM引导”请务必在第一次重启后在Virt-Manager窗口关闭前或看到启动画面时点击菜单栏“虚拟机关机” - “强制关闭”。然后编辑虚拟机硬件将Windows 10安装ISO和VirtIO驱动ISO的“连接”状态取消勾选再启动虚拟机。这样系统才会从硬盘引导继续完成安装。随后按照提示进行区域设置、创建用户账户等操作直到进入Windows 10桌面。6. 安装VirtIO驱动与增强功能进入Windows桌面后第一件事就是安装完整的VirtIO驱动和增强功能以实现高性能和完美集成。6.1 安装VirtIO Windows驱动在Virt-Manager中确保VirtIO驱动ISO仍然连接在虚拟机的CD/DVD驱动器上如果没有通过“添加硬件”或“磁盘”设置重新连接。在Windows 10虚拟机内打开“文件资源管理器”你应该能看到一个包含VirtIO驱动的光盘。运行光盘根目录下的virtio-win-gt-x64.msi或对应版本的安装程序。按照向导完成安装。这会安装所有必要的VirtIO驱动包括网络、显卡、鼠标、气球内存驱动等。安装完成后重启Windows虚拟机。6.2 配置显示与集成服务重启后你会发现显示分辨率可能仍然很低且无法自适应窗口大小。安装SPICE Guest Tools可选但推荐为了获得更好的集成体验如共享剪贴板、文件夹、自适应分辨率可以在VirtIO驱动ISO的guest-agent目录下找到qemu-ga-x86_64.msi并安装。但更推荐使用Virt-Manager内置的驱动。在Virt-Manager中更改显示协议关闭虚拟机。打开虚拟机硬件详情将“显示协议”从VNC改回Spice server。将“视频”模型从VirtIO或VMVGA改为QXL这是与Spice配合最好的视频驱动。启动虚拟机。在Windows中安装Spice驱动虚拟机启动后Virt-Manager可能会自动通过Spice通道推送一个虚拟光驱里面包含spice-guest-tools安装包。如果没有你可以在VirtIO驱动ISO的根目录或相关子目录找到它。运行安装程序安装所有组件尤其是显示驱动。安装完成后再次重启。现在你应该可以自由调整虚拟机窗口大小分辨率会自动适应并且可以共享剪贴板了。6.3 性能优化设置Windows内在Windows内部进行一些设置可以进一步提升体验关闭不必要的视觉效果右键“此电脑” - “属性” - “高级系统设置” - “性能”设置 - 选择“调整为最佳性能”或手动关闭一些特效。设置高性能电源计划在“控制面板” - “电源选项”中选择“高性能”。安装显卡驱动仅限VFIO直通如果你使用了VFIO直通独立显卡此时需要在虚拟机内安装NVIDIA或AMD的官方显卡驱动就像在物理机上一样。7. 网络、共享与高级功能配置一个好用的虚拟机必须能和宿主机方便地交换数据。7.1 配置文件夹共享SPICE WebDAV或Samba方法一使用SPICE文件夹共享简单在Virt-Manager中关闭虚拟机。编辑虚拟机硬件选择“通道”或类似选项可能在“添加硬件”里。添加一个类型为org.spice-space.webdav.0的通道并指定一个宿主机上的文件夹路径如/home/你的用户名/Share。启动虚拟机后在Windows的文件资源管理器中你应该能看到一个网络位置或映射的驱动器可以直接访问宿主机上的共享文件夹。方法二使用Samba共享通用在Ubuntu宿主机上安装并配置Samba服务器将某个文件夹共享出来然后在Windows中通过“网络”或“映射网络驱动器”访问\\Ubuntu主机IP\共享名。这种方法更通用但配置稍复杂。7.2 调整CPU与内存热插拔为了让资源分配更灵活可以启用CPU和内存的热添加功能。关闭虚拟机。在硬件详情中选择“CPU”勾选“允许热插拔”如果可用。选择“内存”同样勾选“允许热插拔”。启动后你可以在虚拟机运行时通过Virt-Manager动态增加CPU核心数或内存大小需客户机操作系统支持Windows 10支持内存热添加。8. 高级主题VFIO PCIe直通配置独立显卡直通如果你拥有两块显卡例如CPU集成显卡 一块独立显卡并且追求极致的游戏或图形性能那么VFIO直通是你的终极选择。警告此操作较为复杂配置不当可能导致宿主机无法正常显示。8.1 前期检查与准备确认IOMMU分组在终端执行sudo dmesg | grep -i iommu确认内核已启用IOMMU。然后安装工具并查看分组sudo apt install -y python3-pip sudo pip3 install iommu-utils sudo /usr/share/doc/python3-iommu-utils/examples/iommu-check.py找到你的独立显卡如NVIDIA GTX 1060所在的IOMMU组。理想情况下它应该在一个独立的组里没有其他关键设备如USB控制器。绑定显卡到VFIO驱动获取显卡的供应商和设备IDlspci -nn | grep -i vga编辑/etc/modprobe.d/vfio.conf添加以下内容以ID10de:1c82为例options vfio-pci ids10de:1c82编辑/etc/modprobe.d/blacklist.conf屏蔽宿主机本身的显卡驱动如Nouveau或nvidiablacklist nouveau blacklist nvidia更新initramfs并重启sudo update-initramfs -u sudo reboot8.2 配置虚拟机以使用直通显卡重启后宿主机应使用集成显卡输出。打开Virt-Manager。编辑你的Windows 10虚拟机硬件移除之前添加的虚拟显示设备如Spice或VNC。“添加硬件” - “PCI主机设备”选择你的独立显卡以及其关联的音频设备通常在同一IOMMU组。由于直通后虚拟机独占显卡你将无法通过Virt-Manager的图形控制台看到画面。需要准备第二台显示器连接直通的独立显卡或者使用Looking Glass这类软件实现低延迟的窗口化显示。8.3 安装显卡驱动与调试启动虚拟机在第二台显示器上你应该能看到Windows启动画面。进入系统后安装对应的官方显卡驱动。至此这台Windows虚拟机就拥有了近乎原生的图形性能。9. 常见问题与排查技巧实录即使按照步骤操作也可能会遇到各种问题。这里记录了我踩过的一些坑和解决方法。9.1 安装时找不到磁盘驱动器症状Windows安装程序提示“我们找不到任何驱动器”。原因VirtIO驱动未正确加载。排查确认虚拟机硬件中磁盘总线类型已设置为VirtIO。确认已添加VirtIO驱动ISO并且状态为“连接”。在安装界面点击“加载驱动程序”后浏览CD驱动器时确保路径正确通常是D:\viostor\w10\amd64。尝试使用VirtIO驱动ISO中其他版本的驱动目录如win10或2k22。9.2 虚拟机启动黑屏或卡死症状启动虚拟机后窗口黑屏无任何反应。原因多种可能如UEFI/BIOS设置冲突、显卡驱动问题。排查检查虚拟机“概述”中的“芯片组”是否为Q35“固件”是否为UEFI。不匹配可能导致启动失败。尝试将“视频”模型从VirtIO改回QXL或VMVGA。如果使用了VFIO直通确保宿主机已屏蔽了对应显卡驱动并且直通设置正确。查看Virt-Manager底部的错误信息或通过命令行virsh dumpxml 虚拟机名检查XML配置是否有语法错误。9.3 网络无法连接症状Windows虚拟机内无法上网。原因虚拟网络未启动或VirtIO网卡驱动未安装。排查在Virt-Manager中检查虚拟机网络设备模型是否为virtio。在Windows设备管理器中检查“网络适配器”是否有黄色感叹号。如果有需要安装VirtIO驱动ISO中的NetKVM驱动。在宿主机终端检查默认虚拟网络是否激活sudo virsh net-list --all确保default网络是active状态。如果不是使用sudo virsh net-start default启动它。9.4 性能不佳操作卡顿症状虚拟机反应慢尤其是图形界面。原因资源配置不足或驱动未优化。排查与优化CPU确保在“CPU”配置中选择了“主机-passthrough”模型并分配了足够核心。内存分配足够内存并启用“气球”驱动在VirtIO驱动中安装允许动态调整。磁盘I/O确保虚拟机磁盘文件存放在SSD上。在Windows内可以运行磁盘碎片整理对qcow2文件无效但可优化NTFS分区并关闭Windows搜索索引。图形务必安装SPICE Guest Tools或Virgl驱动对于Linux客户机。对于Windows确保安装了正确的QXL或VirtIO-GPU驱动。宿主机负载使用htop命令监控宿主机资源使用情况确保宿主机本身有足够的空闲资源。整个流程走下来从最初的硬件检查到最后的性能调优你会发现基于KVM的Windows 10虚拟机在性能、集成度和灵活性上达到了一个非常理想的平衡点。它不再是那个笨重、隔离的“沙箱”而是一个能够紧密融入你Linux工作流的高效工具。无论是为了偶尔使用某个Windows专属软件还是搭建一个高性能的游戏环境这套方案都提供了坚实可靠的基础。记住虚拟化配置是一个需要耐心调试的过程遇到问题时仔细检查每一步的配置善用搜索引擎和社区资源你一定能打造出最适合自己的跨平台工作环境。