<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: T Insights</title>
    <description>The latest articles on DEV Community by T Insights (tinsights).</description>
    <link>https://dev.to/tinsights</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F11031%2Fb33931df-eb4e-4ebd-97c1-c19a3a72c3c5.jpg</url>
      <title>DEV Community: T Insights</title>
      <link>https://dev.to/tinsights</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tinsights"/>
    <language>en</language>
    <item>
      <title>How to Install Windows 10/11 on Ubuntu Using KVM/QEMU</title>
      <dc:creator>Muhammad S.A. Iqbal</dc:creator>
      <pubDate>Tue, 22 Sep 2026 18:11:19 +0000</pubDate>
      <link>https://dev.to/tinsights/how-to-install-windows-1011-on-ubuntu-using-kvmqemu-10oc</link>
      <guid>https://dev.to/tinsights/how-to-install-windows-1011-on-ubuntu-using-kvmqemu-10oc</guid>
      <description>&lt;h1&gt;
  
  
  How to Install Windows 10/11 on Ubuntu Using KVM/QEMU
&lt;/h1&gt;

&lt;p&gt;Running Windows inside Ubuntu is one of the most useful applications of Linux virtualization. Instead of dual-booting or relying on traditional desktop virtualization software, you can run Windows as a virtual machine using &lt;strong&gt;KVM, QEMU, libvirt, and Virtual Machine Manager (virt-manager)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This setup provides hardware-assisted virtualization, VirtIO-based storage and networking, UEFI firmware, USB passthrough, snapshots, and convenient VM management.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Practical Environment:&lt;/strong&gt; This guide uses &lt;strong&gt;Windows 10&lt;/strong&gt; as the primary hands-on example. The same general architecture can be used for Windows 11, but Windows 11 requires additional virtual hardware such as TPM 2.0 and Secure Boot-capable UEFI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Windows 10 reached end of support on &lt;strong&gt;October 14, 2025&lt;/strong&gt;. Windows 10 can still run, but standard security and feature updates are no longer provided. For a new VM in 2026, Windows 11 is generally the current supported Windows target; Windows 10 remains useful for legacy applications and compatibility testing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;What We Are Building&lt;/li&gt;
&lt;li&gt;KVM vs QEMU vs libvirt vs virt-manager&lt;/li&gt;
&lt;li&gt;Windows 10 vs Windows 11&lt;/li&gt;
&lt;li&gt;Requirements&lt;/li&gt;
&lt;li&gt;Check Hardware Virtualization&lt;/li&gt;
&lt;li&gt;Install KVM/QEMU and Virtualization Packages&lt;/li&gt;
&lt;li&gt;Configure User Permissions&lt;/li&gt;
&lt;li&gt;Configure the libvirt Network&lt;/li&gt;
&lt;li&gt;Verify the KVM Installation&lt;/li&gt;
&lt;li&gt;Install and Open virt-manager&lt;/li&gt;
&lt;li&gt;Download Windows ISO&lt;/li&gt;
&lt;li&gt;Download VirtIO Drivers&lt;/li&gt;
&lt;li&gt;Create the Virtual Machine&lt;/li&gt;
&lt;li&gt;Configure UEFI (Especially for Windows 11)&lt;/li&gt;
&lt;li&gt;Configure CPU and RAM&lt;/li&gt;
&lt;li&gt;Configure the Virtual Disk&lt;/li&gt;
&lt;li&gt;Configure the Network&lt;/li&gt;
&lt;li&gt;Configure SPICE&lt;/li&gt;
&lt;li&gt;Attach the VirtIO ISO&lt;/li&gt;
&lt;li&gt;Start Windows Installation&lt;/li&gt;
&lt;li&gt;Load the VirtIO Storage Driver&lt;/li&gt;
&lt;li&gt;Install Windows&lt;/li&gt;
&lt;li&gt;Install VirtIO Guest Drivers&lt;/li&gt;
&lt;li&gt;Install SPICE Guest Agent&lt;/li&gt;
&lt;li&gt;Test Internet Connectivity&lt;/li&gt;
&lt;li&gt;Run and Manage Windows OS&lt;/li&gt;
&lt;li&gt;Create the First Snapshot&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;🗺️ Start and Stop the VM&lt;/li&gt;
&lt;li&gt;🗺️ USB Passthrough&lt;/li&gt;
&lt;li&gt;🗺️ File Sharing Between Ubuntu and Windows&lt;/li&gt;
&lt;li&gt;🗺️ Clipboard Sharing&lt;/li&gt;
&lt;li&gt;🗺️ Performance Optimization&lt;/li&gt;
&lt;li&gt;🗺️ Back Up the VM&lt;/li&gt;
&lt;li&gt;🗺️ VM Autostart&lt;/li&gt;
&lt;li&gt;🗺️ Useful virsh Commands&lt;/li&gt;
&lt;li&gt;🗺️ Common Problems&lt;/li&gt;
&lt;li&gt;🗺️ Recommended Configuration&lt;/li&gt;
&lt;li&gt;🗺️ Final Architecture&lt;/li&gt;
&lt;li&gt;🗺️ Conclusion&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  1. What We Are Building
&lt;/h1&gt;

&lt;p&gt;The final environment will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────────────────────┐
│                (Ubuntu 26.04 Host)               │
│                                                  │
│  ┌────────────────────────────────────────────┐  │
│  │           (Virtual Machine Manager)        │  │
│  │                                            │  │
│  │                virt-manager                │  │
│  │                     │                      │  │
│  │                  libvirt                   │  │
│  │                     │                      │  │
│  │                    QEMU                    │  │
│  │                     │                      │  │
│  │                    KVM                     │  │
│  │                     │                      │  │
│  │       ┌────────────────────────────┐       │  │
│  │       │       Windows 10/11        │       │  │
│  │       │                            │       │  │
│  │       │  4 vCPU                    │       │  │
│  │       │  6 GB RAM                  │       │  │
│  │       │  VirtIO Disk               │       │  │
│  │       │  VirtIO Network            │       │  │
│  │       │  SPICE Display             │       │  │
│  │       │  UEFI                      │       │  │
│  │       └────────────────────────────┘       │  │
│  └────────────────────────────────────────────┘  │
│                                                  │
│                (Intel VT-x / AMD-V)              │
└──────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The technologies have different responsibilities.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;KVM&lt;/strong&gt; — KVM (Kernel-based Virtual Machine) is the Linux kernel's hardware virtualization mechanism.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QEMU&lt;/strong&gt; — Its provides the virtual machine process and virtual hardware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;libvirt&lt;/strong&gt; — Its provides a management layer for QEMU/KVM virtual machines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;virt-manager&lt;/strong&gt; — Virtual Machine Manager (&lt;code&gt;virt-manager&lt;/code&gt;) provides a graphical interface for managing libvirt VMs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This combination is widely used for Linux virtualization and is an excellent foundation for learning virtualization and DevOps.&lt;/p&gt;

&lt;p&gt;Other essentials are —&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OVMF&lt;/strong&gt; — Its provides UEFI firmware for the virtual machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VirtIO&lt;/strong&gt; — Its provides high-performance paravirtualized devices such as &lt;code&gt;Virtual disks&lt;/code&gt;, &lt;code&gt;Network adapters&lt;/code&gt;, &lt;code&gt;SCSI controllers&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SPICE&lt;/strong&gt; — Its provides the graphical console and guest integration features.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  2. KVM vs QEMU vs libvirt vs virt-manager
&lt;/h1&gt;

&lt;p&gt;A common source of confusion is thinking these are competing virtualization technologies.&lt;/p&gt;

&lt;p&gt;They are actually different layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;virt-manager
     │
     ▼
  libvirt
     │
     ▼
   QEMU
     │
     ▼
    KVM
     │
     ▼
Physical CPU virtualization
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In simple terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;KVM → Hardware acceleration&lt;/li&gt;
&lt;li&gt;QEMU → Virtual machine + virtual hardware&lt;/li&gt;
&lt;li&gt;libvirt → VM management&lt;/li&gt;
&lt;li&gt;virt-manager → GUI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This separation makes the platform flexible. You can manage the same VM using either a graphical interface or command-line tools such as &lt;code&gt;virsh&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Windows 10 vs Windows 11
&lt;/h1&gt;

&lt;p&gt;The basic KVM architecture works for both Windows 10 and Windows 11.&lt;/p&gt;

&lt;p&gt;However, Windows 11 requires additional virtual hardware.&lt;/p&gt;

&lt;p&gt;Microsoft lists requirements including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UEFI firmware&lt;/li&gt;
&lt;li&gt;Secure Boot capability&lt;/li&gt;
&lt;li&gt;TPM 2.0&lt;/li&gt;
&lt;li&gt;At least 4 GB RAM&lt;/li&gt;
&lt;li&gt;At least 64 GB storage&lt;/li&gt;
&lt;li&gt;At least two virtual processors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Therefore:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows 10&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UEFI
VirtIO
SPICE
No vTPM required
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Windows 11&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UEFI
Secure Boot
TPM 2.0
VirtIO
SPICE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For this practical guide, Windows 10 is used because it makes the VirtIO installation process particularly easy to demonstrate.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Requirements
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Hardware
&lt;/h2&gt;

&lt;p&gt;Recommended:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;64-bit Intel or AMD processor&lt;/li&gt;
&lt;li&gt;Intel VT-x or AMD-V&lt;/li&gt;
&lt;li&gt;At least 8 GB RAM&lt;/li&gt;
&lt;li&gt;80–100 GB free storage&lt;/li&gt;
&lt;li&gt;SSD recommended&lt;/li&gt;
&lt;li&gt;Ubuntu 26.04 LTS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For comfortable Windows virtualization:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;16 GB RAM or more
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is preferable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended VM configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For a host with 16 GB RAM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU:       4 vCPU
RAM:       6 GB
Disk:      80–100 GB
Storage:   VirtIO
Network:   VirtIO
Display:   SPICE
Firmware:  UEFI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These values are starting points, not strict requirements.&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Check Hardware Virtualization
&lt;/h1&gt;

&lt;p&gt;Open Terminal.&lt;/p&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lscpu | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s1"&gt;'Virtualization|Model name'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On an Intel system, you should see something similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model name: Intel(R) Core(TM) i5-1135G7
Virtualization: VT-x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For AMD:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Virtualization: AMD-V
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check whether &lt;code&gt;/dev/kvm&lt;/code&gt; exists
&lt;/h3&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; /dev/kvm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see something similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;crw-rw----+ 1 root kvm ... /dev/kvm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install the KVM checker
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; cpu-checker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kvm-ok
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INFO: /dev/kvm exists
KVM acceleration can be used
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If KVM acceleration is unavailable, enter your computer's BIOS/UEFI and enable hardware virtualization.&lt;/p&gt;

&lt;p&gt;For Intel systems, the option may be called:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Intel Virtualization Technology
VT-x
Intel VT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For AMD systems:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SVM
AMD-V
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  6. Install KVM/QEMU and Virtualization Packages
&lt;/h1&gt;

&lt;p&gt;Ubuntu 26.04 uses newer HWE virtualization packages, so older tutorials may show slightly different package names.&lt;/p&gt;

&lt;p&gt;Install the main components:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
qemu-system-x86 &lt;span class="se"&gt;\&lt;/span&gt;
qemu-utils &lt;span class="se"&gt;\&lt;/span&gt;
libvirt-daemon-system &lt;span class="se"&gt;\&lt;/span&gt;
libvirt-clients &lt;span class="se"&gt;\&lt;/span&gt;
virt-manager &lt;span class="se"&gt;\&lt;/span&gt;
ovmf &lt;span class="se"&gt;\&lt;/span&gt;
bridge-utils &lt;span class="se"&gt;\&lt;/span&gt;
dnsmasq-base &lt;span class="se"&gt;\&lt;/span&gt;
cpu-checker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What these packages provide
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;qemu-system-x86&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;QEMU x86 virtual machines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;qemu-utils&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;QEMU disk utilities&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;libvirt-daemon-system&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;libvirt virtualization service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;libvirt-clients&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;virsh&lt;/code&gt; command-line tools&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;virt-manager&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GUI virtualization manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ovmf&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;UEFI firmware&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bridge-utils&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Network bridge utilities&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dnsmasq-base&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Virtual network DHCP/DNS support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cpu-checker&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;KVM capability checking&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  What about &lt;code&gt;qemu-kvm&lt;/code&gt;? (Optional)
&lt;/h3&gt;

&lt;p&gt;On some Ubuntu versions, tutorials tell you to run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;qemu-kvm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On newer Ubuntu releases, &lt;code&gt;qemu-kvm&lt;/code&gt; may be a virtual package provided by another QEMU package.&lt;/p&gt;

&lt;p&gt;If Ubuntu tells you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Package qemu-kvm is a virtual package
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;that isn't necessarily an error.&lt;/p&gt;

&lt;p&gt;For this setup, installing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;qemu-system-x86
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is sufficient.&lt;/p&gt;

&lt;h1&gt;
  
  
  7. Configure User Permissions
&lt;/h1&gt;

&lt;p&gt;Add your user to the KVM and libvirt groups:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; kvm,libvirt &lt;span class="nv"&gt;$USER&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;groups&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should eventually see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kvm
libvirt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Important
&lt;/h3&gt;

&lt;p&gt;Log out and log back in.&lt;/p&gt;

&lt;p&gt;A reboot is also fine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After logging back in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;groups&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  8. Configure the &lt;code&gt;libvirt&lt;/code&gt; Network
&lt;/h1&gt;

&lt;p&gt;libvirt normally provides a default NAT network.&lt;/p&gt;

&lt;p&gt;Check it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh net-list &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Name      State    Autostart
-------------------------------
 default   active   yes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;default&lt;/code&gt; exists but is inactive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;virsh net-start default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enable automatic startup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;virsh net-autostart default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; virsh net-list &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How the default network works
&lt;/h3&gt;

&lt;p&gt;The typical architecture is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows VM
    │
    ▼
VirtIO Network Adapter
    │
    ▼
libvirt default network
    │
    ▼
NAT
    │
    ▼
Ubuntu
    │
    ▼
Internet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Windows VM does not need a physical network adapter.&lt;/p&gt;

&lt;h1&gt;
  
  
  9. Verify the KVM Installation
&lt;/h1&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kvm-ok
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsmod | &lt;span class="nb"&gt;grep &lt;/span&gt;kvm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Intel:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kvm_intel
kvm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check libvirt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh list &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No VMs should exist yet.&lt;/p&gt;

&lt;p&gt;That's fine.&lt;/p&gt;

&lt;p&gt;Check the network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh net-list &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You want the &lt;code&gt;default&lt;/code&gt; network active.&lt;/p&gt;

&lt;h1&gt;
  
  
  10. Install and Open &lt;code&gt;virt-manager&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;The package was already installed in step 5.&lt;/p&gt;

&lt;p&gt;Launch it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virt-manager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Applications
→ Virtual Machine Manager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;QEMU/KVM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Double-click the connection.&lt;/p&gt;

&lt;p&gt;If it connects successfully, your virtualization environment is ready.&lt;/p&gt;

&lt;h1&gt;
  
  
  11. Download the Windows ISO
&lt;/h1&gt;

&lt;p&gt;For Windows 10, download the ISO from Microsoft's official &lt;a href="https://www.microsoft.com/en-us/software-download/windows10ISO" rel="noopener noreferrer"&gt;Windows 10 download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For Windows 11, use Microsoft's official &lt;a href="https://www.microsoft.com/en-us/software-download/windows11" rel="noopener noreferrer"&gt;Windows 11 download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Store the ISO somewhere such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/Downloads/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/Downloads/Win10_22H2.iso
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Windows 11:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/Downloads/Win11.iso
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use a legitimate Windows license/product key for activation.&lt;/p&gt;

&lt;h1&gt;
  
  
  12. Download VirtIO Drivers
&lt;/h1&gt;

&lt;p&gt;Windows does not necessarily contain the VirtIO drivers required for your virtual storage and network devices.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;virtio-win&lt;/code&gt; project provides Windows drivers and guest tools for QEMU/KVM. The project maintains stable and latest ISO builds.&lt;/p&gt;

&lt;p&gt;Download the &lt;a href="https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso" rel="noopener noreferrer"&gt;VirtIO Windows ISO&lt;/a&gt; from the &lt;a href="https://virtio-win.github.io/Knowledge-Base/Driver-installation.html" rel="noopener noreferrer"&gt;official VirtIO project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Save it as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/Downloads/virtio-win.iso
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should now have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/Downloads/
├── Win10_22H2.iso
└── virtio-win.iso
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;VirtIO provides optimized virtual storage and networking drivers for Windows guests running on QEMU/KVM.&lt;/p&gt;

&lt;h1&gt;
  
  
  13. Create the Windows 10 Virtual Machine
&lt;/h1&gt;

&lt;p&gt;Open Terminal and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virt-manager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;QEMU/KVM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;File
→ New Virtual Machine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 1 — Installation media
&lt;/h3&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fdu7tjwbyi%2Fimage%2Fupload%2Fv1789883567%2FScreenshot_From_2026-09-19_09-53-36_tyrehs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fdu7tjwbyi%2Fimage%2Fupload%2Fv1789883567%2FScreenshot_From_2026-09-19_09-53-36_tyrehs.png" title="How to Install Windows 10/11 on Ubuntu Using KVM/QEMU" alt="How to Install Windows 10/11 on Ubuntu Using KVM/QEMU" width="778" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Local install media (ISO image or CDROM)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Then click &lt;strong&gt;Forward&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2 — Select the Windows ISO
&lt;/h3&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftuhbfew78z8hvgqvoxig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftuhbfew78z8hvgqvoxig.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789884067/Screenshot_From_2026-09-19_09-54-54_scadbd.png" width="778" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Browse&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select from &lt;code&gt;~/Downloads/Win10_22H2.iso&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;virt-manager may automatically detect: &lt;code&gt;Microsoft Windows 10&lt;/code&gt;. (If it doesn't, select the appropriate Windows version manually.)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Forward&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3 — Allocate RAM and CPU
&lt;/h3&gt;

&lt;p&gt;For a 16 GB host, a reasonable starting point is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RAM: 6144 MB
CPU: 4 vCPU
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For an 8 GB host:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RAM: 4096 MB
CPU: 2–4 vCPU
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a 32 GB host:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RAM: 8192 MB or more
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7xjx2q0k6nqyy8cxo3df.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7xjx2q0k6nqyy8cxo3df.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789885219/3_Create_new_virtual_machine_f0ruqz.png" width="778" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set RAM as &lt;code&gt;4096&lt;/code&gt; MB (4GB) (NB: Its depends on your host computer)&lt;/li&gt;
&lt;li&gt;Set CPU cores as &lt;code&gt;4&lt;/code&gt; (NB: Its depends on your host computer)&lt;/li&gt;
&lt;li&gt;Then Click &lt;strong&gt;Forward&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23v1wqqnx7euzj8xu2q8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23v1wqqnx7euzj8xu2q8.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789885405/4_Create_new_virtual_machine_zum7sh.png" width="778" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set name of VM OS&lt;/li&gt;
&lt;li&gt;Select Network&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Avoid giving the VM almost all of the host's RAM.&lt;/p&gt;

&lt;p&gt;Ubuntu still needs memory for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GNOME&lt;/li&gt;
&lt;li&gt;Browser&lt;/li&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Background services&lt;/li&gt;
&lt;li&gt;QEMU&lt;/li&gt;
&lt;li&gt;Other applications&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  14. Configure UEFI (Especially for &lt;code&gt;Windows 11&lt;/code&gt;)
&lt;/h1&gt;

&lt;p&gt;Before starting installation, enable UEFI.&lt;/p&gt;

&lt;p&gt;In virt-manager:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Overview
→ Firmware
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UEFI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This normally uses OVMF/EDK2 firmware.&lt;/p&gt;

&lt;p&gt;For Windows 10:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UEFI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is sufficient.&lt;/p&gt;

&lt;p&gt;For Windows 11, configure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UEFI
+ Secure Boot capability
+ TPM 2.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Microsoft requires TPM 2.0 and UEFI/Secure Boot capability for Windows 11.&lt;/p&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd8y1y3u6z8b7hjhmv5s8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd8y1y3u6z8b7hjhmv5s8.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789885739/5_Create_new_virtual_machine_hjqipv.png" width="800" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  15. Configure the CPU
&lt;/h1&gt;

&lt;p&gt;Use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU model:
host-passthrough
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This exposes appropriate host CPU features to the guest.&lt;/p&gt;

&lt;h3&gt;
  
  
  Important CPU topology correction
&lt;/h3&gt;

&lt;p&gt;Do &lt;strong&gt;not&lt;/strong&gt; use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sockets: 1
Cores: 1
Threads: 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and then call the VM a 4-vCPU VM.&lt;/p&gt;

&lt;p&gt;That configuration represents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 × 1 × 2 = 2 vCPU
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For 4 vCPU, if manually specifying topology, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sockets: 1
Cores: 2
Threads: 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;gives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 × 2 × 2 = 4 vCPU
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, for a normal desktop Windows VM, simply allocating 4 virtual CPUs is usually easier.&lt;/p&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgpsyjrca4mcbj3wb5t91.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgpsyjrca4mcbj3wb5t91.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789891839/11_Configure_the_Virtual_Machine_fvnhcf.png" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;CPUs&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;Configuration&lt;/code&gt; as &lt;code&gt;Copy host CPU configuration (host-passthrough)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;Manually set CPU topology&lt;/code&gt; and set as Sockets: &lt;code&gt;1&lt;/code&gt;, Cores: &lt;code&gt;2&lt;/code&gt;, Threads: &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Apply&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  16. Configure the Virtual Disk
&lt;/h1&gt;

&lt;p&gt;Create a virtual disk:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;80–100 GB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a general-purpose Windows VM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100 GB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is a comfortable starting point if sufficient host storage is available.&lt;/p&gt;

&lt;p&gt;The virtual disk format as &lt;code&gt;qcow2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The default libvirt location is commonly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/var/lib/libvirt/images/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/var/lib/libvirt/images/Windows-10.qcow2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0tl6mz12erm5ipq3gu3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0tl6mz12erm5ipq3gu3s.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1790076272/63_Configure_the_Virtual_Disk_gdynmc.png" width="800" height="711"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Add Hardware&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Storage&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select as &lt;code&gt;Create a disk image for the virtual machine&lt;/code&gt; and set your prefer storage.&lt;/li&gt;
&lt;li&gt;Then click &lt;strong&gt;Finish&lt;/strong&gt; option&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Configure VirtIO Storage
&lt;/h3&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvad8l9n7w3024fu2cojz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvad8l9n7w3024fu2cojz.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789885993/6_Configure_the_Virtual_Machine_eh1mnj.png" width="800" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;SATA Disk 1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Disk bus&lt;/strong&gt; as &lt;code&gt;VirtIO&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Apply&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives Windows high-performance paravirtualized storage.&lt;/p&gt;

&lt;p&gt;However, Windows Setup may not initially recognize the disk. That is why the VirtIO ISO must also be attached.&lt;/p&gt;

&lt;h1&gt;
  
  
  17. Configure the Network
&lt;/h1&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv4y01keia4jhx0o5wua8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv4y01keia4jhx0o5wua8.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789886336/8_Configure_the_Virtual_Machine_pnw4bn.png" width="800" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the network interface as &lt;strong&gt;NIC :9d:f3:8f&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Network source&lt;/code&gt; as &lt;code&gt;Virtual network 'default': NAT&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Device model&lt;/code&gt; as &lt;code&gt;virtio&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Then click &lt;strong&gt;Apply&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The final network architecture is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
   |
Ubuntu
   |
libvirt_NAT
   |
VirtIO_NIC
   |
Windows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  18. Configure SPICE Display
&lt;/h1&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxla4xga6igar2m9hje0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxla4xga6igar2m9hje0.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1790075428/62_Configure_SPICE_Display_be7ss0.png" width="800" height="713"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Add Hardware&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Graphics&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set type as &lt;code&gt;Spice server&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Then click &lt;strong&gt;Finish&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the video device, use a model supported by your current virt-manager/QEMU/Windows combination. QXL remains a common SPICE configuration; VirtIO-GPU may also be available depending on the stack and Windows driver support.&lt;/p&gt;

&lt;p&gt;Note: If any problem faced for selecting as &lt;code&gt;Spice server&lt;/code&gt;, then switched as &lt;code&gt;VNC server&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  19. Attach the VirtIO ISO
&lt;/h1&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fphxywp012at8vh666dhr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fphxywp012at8vh666dhr.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789886621/9_Configure_the_Virtual_Machine_iaivq9.png" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In virt-manager:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Add Hardware&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Storage&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select as &lt;code&gt;Select or create custom storage&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Manage&lt;/strong&gt; and select from &lt;code&gt;~/Downloads/virtio-win-0.1.302.iso&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Then click &lt;strong&gt;Choose Volume&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, Which setting you have to configure that shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftyfhs46q8ry985wsjrsd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftyfhs46q8ry985wsjrsd.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789887060/10_Configure_the_Virtual_Machine_elbeku.png" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;strong&gt;Device Type&lt;/strong&gt; as &lt;code&gt;CDROM device&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Bus type&lt;/strong&gt; as &lt;code&gt;SATA&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Then click &lt;strong&gt;Finish&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, Which setting you have to configure that shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8wptp6kyjja9r8ascz3l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8wptp6kyjja9r8ascz3l.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789892322/12_Configure_the_Virtual_Machine_kb6fn9.png" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Boot Options&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select as &lt;code&gt;Enable boot menu&lt;/code&gt; and organize boot sequences as -

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SATA CDROM 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VirtIO Disk 1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Apply&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  20. Start Windows Installation
&lt;/h1&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmup0myrtn2tdodzf80uo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmup0myrtn2tdodzf80uo.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789892522/13_Configure_the_Virtual_Machine_ynuklg.png" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Begin Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hpeygsktfpql0dvsaa2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hpeygsktfpql0dvsaa2.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789892842/14_Windows_OS_Installation_on_Virtual_Machine_uhku9t.png" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When &lt;code&gt;Allow inhibiting shortcut&lt;/code&gt; diaglog box shown then click &lt;code&gt;Allow&lt;/code&gt; button.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Language&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Time and currency Keyboard&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3rpte1n5x45usprx4t6i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3rpte1n5x45usprx4t6i.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893008/15_Windows_OS_Installation_on_Virtual_Machine_n89efn.png" width="799" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, click &lt;strong&gt;Install now&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz3tleqp9471d32gmj0gy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz3tleqp9471d32gmj0gy.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893232/16_Windows_OS_Installation_on_Virtual_Machine_qif4j4.png" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When prompted for a product key, you can select as &lt;code&gt;I don't have a product key&lt;/code&gt;, if you plan to activate Windows later with a valid license.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkr4jz21nuu0a3zc3chtf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkr4jz21nuu0a3zc3chtf.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893234/17_Windows_OS_Installation_on_Virtual_Machine_ac6pwi.png" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the Windows edition you are licensed to use. For example, &lt;code&gt;Windows 10 Pro&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc4or1fev4qhswk2tauhi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc4or1fev4qhswk2tauhi.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893237/18_Windows_OS_Installation_on_Virtual_Machine_rxmvj8.png" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Accept &lt;strong&gt;I accept the license terms&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc8ri45k8fzyk57sg7beg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc8ri45k8fzyk57sg7beg.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893238/19_Windows_OS_Installation_on_Virtual_Machine_bvh1mj.png" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select as &lt;code&gt;Custom: Install Windows only (advanced)&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  21. Load the VirtIO Storage Driver
&lt;/h1&gt;

&lt;p&gt;When you may reach as &lt;code&gt;Where do you want to install Windows?&lt;/code&gt; and No drives were found.&lt;/p&gt;

&lt;p&gt;This happens because Windows Setup does not have the required VirtIO storage driver loaded.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs5g465tblzum0wjuhe4g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs5g465tblzum0wjuhe4g.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893241/20_Windows_OS_Installation_on_Virtual_Machine_qrdkdg.png" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Load driver&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browse
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the VirtIO CD-ROM.&lt;/p&gt;

&lt;p&gt;Depending on the VirtIO release and storage controller, look for directories such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;viostor
vioscsi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then select the appropriate Windows 10 64-bit driver directory.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;amd64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact directory structure can change between VirtIO releases, so don't hard-code a specific path such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E:\amd64\w10\viostor.inf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;unless that exact path exists on the ISO you're using.&lt;/p&gt;

&lt;p&gt;Select the appropriate &lt;code&gt;.inf&lt;/code&gt; driver.&lt;/p&gt;

&lt;p&gt;Windows Setup should then detect the virtual disk.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F41gf33qrm4v2ss8n8277.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F41gf33qrm4v2ss8n8277.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893243/21_Windows_OS_Installation_on_Virtual_Machine_kurqpu.png" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, click &lt;strong&gt;OK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fofgjipoegim82rd7ljtt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fofgjipoegim82rd7ljtt.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893246/22_Windows_OS_Installation_on_Virtual_Machine_hawe5x.png" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select as &lt;code&gt;Red Hat VirtIO SCSI controller (E:\amd64\w10\viostor.inf)&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  22. Install Windows
&lt;/h1&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwiuhrkh46537ql70y0t4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwiuhrkh46537ql70y0t4.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893253/23_Windows_OS_Installation_on_Virtual_Machine_tu2fau.png" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select as &lt;strong&gt;Drive 0 Unallocated Space&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt; option.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Windows will create the necessary partitions automatically.&lt;/p&gt;

&lt;p&gt;The installation will proceed and the VM will restart several times.&lt;/p&gt;

&lt;p&gt;Once Windows starts booting from the virtual disk, you may remove the Windows installation ISO.&lt;/p&gt;

&lt;p&gt;Keep the VirtIO ISO attached until the required drivers have been installed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Complete Windows Initial Setup
&lt;/h3&gt;

&lt;p&gt;Complete the normal Windows setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keyboard layout&lt;/li&gt;
&lt;li&gt;Network&lt;/li&gt;
&lt;li&gt;User account&lt;/li&gt;
&lt;li&gt;Password/PIN&lt;/li&gt;
&lt;li&gt;Privacy settings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvxuu4jazzbm8tnbvx612.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvxuu4jazzbm8tnbvx612.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893247/24_Windows_OS_Installation_on_Virtual_Machine_kuactk.png" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzttdotfeglz9qf1os76u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzttdotfeglz9qf1os76u.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893256/25_Windows_OS_Installation_on_Virtual_Machine_ufndyt.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsttvlj89grqyyj5uo5t8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsttvlj89grqyyj5uo5t8.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893259/26_Windows_OS_Installation_on_Virtual_Machine_pk1lgf.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsttvlj89grqyyj5uo5t8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsttvlj89grqyyj5uo5t8.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893259/26_Windows_OS_Installation_on_Virtual_Machine_pk1lgf.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foh2yl05y8uufgtx8wa5s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foh2yl05y8uufgtx8wa5s.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893251/27_Windows_OS_Installation_on_Virtual_Machine_qkv5fa.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6o2p6141lmljnekg46q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6o2p6141lmljnekg46q.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893265/28_Windows_OS_Installation_on_Virtual_Machine_uw5uaz.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6o2p6141lmljnekg46q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6o2p6141lmljnekg46q.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893265/28_Windows_OS_Installation_on_Virtual_Machine_uw5uaz.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr1kdxfvui19nimv6abgw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr1kdxfvui19nimv6abgw.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893262/29_Windows_OS_Installation_on_Virtual_Machine_mevspw.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzug7eicsi7jc8rk4e2p4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzug7eicsi7jc8rk4e2p4.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789893268/30_Windows_OS_Installation_on_Virtual_Machine_etxwgp.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you temporarily install without Internet access, you can connect the VirtIO network after installing the network driver.&lt;/p&gt;

&lt;h1&gt;
  
  
  23. Install VirtIO Guest Drivers
&lt;/h1&gt;

&lt;p&gt;After reaching the Windows desktop, open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;This PC
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the VirtIO CD-ROM.&lt;/p&gt;

&lt;p&gt;Depending on the VirtIO ISO, you may find:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;virtio-win-gt-x64.msi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or other guest-tool installers.&lt;/p&gt;

&lt;p&gt;Install the appropriate package.&lt;/p&gt;

&lt;p&gt;Restart Windows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verify VirtIO Devices
&lt;/h3&gt;

&lt;p&gt;Open &lt;strong&gt;Device Manager&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fikk550vicvfpzey7rwmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fikk550vicvfpzey7rwmx.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789897672/31_Windows_OS_Driver_Installation_on_Virtual_Machine_t66mm7.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Disk drives&lt;/li&gt;
&lt;li&gt;Storage controllers&lt;/li&gt;
&lt;li&gt;Network adapters&lt;/li&gt;
&lt;li&gt;Display adapters&lt;/li&gt;
&lt;li&gt;System devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There should be no unexplained yellow warning icons (⚠️).&lt;/p&gt;

&lt;p&gt;If you see one, right-click it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Update driver → Browse my computer for drivers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fns72f5ycrnpailxklp4g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fns72f5ycrnpailxklp4g.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789897674/32_Windows_OS_Driver_Installation_on_Virtual_Machine_lqyapq.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  24. Install SPICE Guest Agent
&lt;/h1&gt;

&lt;p&gt;SPICE guest components are separate from the general VirtIO driver package.&lt;/p&gt;

&lt;p&gt;The SPICE project provides Windows guest tools including SPICE-related guest components.&lt;/p&gt;

&lt;p&gt;Download the appropriate &lt;a href="https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe" rel="noopener noreferrer"&gt;SPICE guest tools&lt;/a&gt; from the official &lt;a href="https://www.spice-space.org/download.html" rel="noopener noreferrer"&gt;SPICE&lt;/a&gt; download area and install them inside Windows.&lt;/p&gt;

&lt;p&gt;This can provide features such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better mouse integration&lt;/li&gt;
&lt;li&gt;Clipboard integration&lt;/li&gt;
&lt;li&gt;Guest-agent communication&lt;/li&gt;
&lt;li&gt;Improved desktop integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuge7r4byg926wsv2ox36.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuge7r4byg926wsv2ox36.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789903949/46_Install_spice-guest-tools_on_Windows_10_VM_OS_w1lbof.png" width="799" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmcyudp8u3so96vl980op.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmcyudp8u3so96vl980op.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789903953/47_Install_spice-guest-tools_on_Windows_10_VM_OS_egkkfd.png" width="799" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Restart Windows after installation.&lt;/p&gt;

&lt;h1&gt;
  
  
  25. Test Internet Connectivity
&lt;/h1&gt;

&lt;p&gt;Open Command Prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;ipconfig&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The VM will commonly receive an address in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;192.168.122.x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;when using the standard libvirt NAT network.&lt;/p&gt;

&lt;p&gt;Test the network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;ping&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;8.8.8.8&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then test DNS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;ping&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;google.com&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If both work:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network      ✓
DNS          ✓
VirtIO NIC   ✓
Internet     ✓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  26. Run and Manage Windows-OS
&lt;/h1&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Install &lt;code&gt;virt-viewer&lt;/code&gt; on Ubuntu
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;virt-viewer&lt;/code&gt; can connect to a virtual machine and display its graphical console in full-screen mode. Therefore, you can use it to view your Windows VM. This step is optional.&lt;/p&gt;

&lt;p&gt;First, check whether &lt;code&gt;virt-viewer&lt;/code&gt; is already installed.&lt;/p&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fucu5wtblok7j960wuuqd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fucu5wtblok7j960wuuqd.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789903957/49_Install_virt-viewer_on_Ubuntu_bq4zri.png" width="800" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open the Ubuntu terminal and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virt-viewer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;virt-viewer&lt;/code&gt; is not installed, install it using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;virt-viewer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❏❏❏ Run Windows 10/11 OS with KVM/QEMU
&lt;/h3&gt;

&lt;p&gt;Suppose you are using Windows 10 as the guest OS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flnou54233gucg34fcrbd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flnou54233gucg34fcrbd.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789904613/53._Run_Windows_10_OS_with_KVM-QEMU_guk5ak.png" width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open a terminal on Ubuntu and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virt-manager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the &lt;code&gt;Virtual Machine Manager&lt;/code&gt; window opens, select &lt;code&gt;Win10&lt;/code&gt; and click the &lt;strong&gt;Play&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;This will be shown as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8q9wzjg8micml39oontr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8q9wzjg8micml39oontr.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789904616/54._Run_Windows_10_OS_with_KVM-QEMU_zkuyev.png" width="553" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, open another terminal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqn3vysebgg4uzygv8voo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqn3vysebgg4uzygv8voo.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789904619/55._Run_Windows_10_OS_with_KVM-QEMU_isypll.png" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virt-viewer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the &lt;code&gt;Choose a virtual machine&lt;/code&gt; window opens, select &lt;code&gt;Win10&lt;/code&gt; and click the &lt;strong&gt;Connect&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;When the &lt;strong&gt;Allow inhibiting shortcuts&lt;/strong&gt; dialog box appears, click the &lt;strong&gt;Allow&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;Now, enjoy!&lt;/p&gt;

&lt;h1&gt;
  
  
  27. Create the First Snapshot
&lt;/h1&gt;

&lt;p&gt;Once Windows is completely configured, shut it down.&lt;/p&gt;

&lt;p&gt;In virt-manager:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows-10
→ Snapshots
→ Create
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Name it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Clean-Windows-10-Installation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can create another snapshot after installing your normal applications:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows-10-Base-Apps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Snapshots are useful recovery points, but they should &lt;strong&gt;not replace proper VM backups&lt;/strong&gt;.&lt;/p&gt;










&lt;h1&gt;
  
  
  🗺️ Start and Stop the VM
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Start&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh start Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Check status&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh list &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Graceful shutdown&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh shutdown Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Force power off&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh destroy Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;destroy&lt;/code&gt; does not delete the VM. It immediately stops the guest, similar to physically powering off a computer.&lt;/p&gt;

&lt;p&gt;Use graceful shutdown whenever possible.&lt;/p&gt;

&lt;h1&gt;
  
  
  🗺️ USB Passthrough
&lt;/h1&gt;

&lt;p&gt;USB devices can be passed from Ubuntu to Windows.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;USB flash drives&lt;/li&gt;
&lt;li&gt;Android phones&lt;/li&gt;
&lt;li&gt;USB printers&lt;/li&gt;
&lt;li&gt;USB adapters&lt;/li&gt;
&lt;li&gt;USB license dongles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F223n6sktwfs8m5ibjv1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F223n6sktwfs8m5ibjv1p.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789905739/57_USB_Device_Allow-Disallow_pacerc.png" width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In virt-manager:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Virtual Machine&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Redirect USB device&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F55rcb6j1g75rk12nvo7v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F55rcb6j1g75rk12nvo7v.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789905743/58_USB_Device_Allow-Disallow_fuuf1a.png" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the desired USB device and click.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femsxfj51i5pweupd636o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femsxfj51i5pweupd636o.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789905747/59_USB_Device_Allow-Disallow_qohbq5.png" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  When you want to disconnect or eject USB devices
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frv13dtsfxbl7glilsq95.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frv13dtsfxbl7glilsq95.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789905753/61_USB_Device_Allow-Disallow_pr2etl.png" width="799" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uncheck your USB-Device and close the windows.&lt;/p&gt;

&lt;h4&gt;
  
  
  You can also inspect USB devices from Ubuntu
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsusb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bus 001 Device 003: ID 046d:c077 Logitech Mouse
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  🗺️ File Sharing Between Ubuntu and Windows
&lt;/h1&gt;

&lt;p&gt;Your original article's file-sharing section needs the most cleanup.&lt;/p&gt;

&lt;p&gt;There are two different directions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ubuntu → Windows
&lt;/h3&gt;

&lt;p&gt;If Ubuntu contains the files you want Windows to access, use Samba or another network-sharing mechanism on Ubuntu.&lt;/p&gt;

&lt;p&gt;Windows can then access:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;\\192.168.122.1\share
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;depending on the host-side network configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Windows → Ubuntu
&lt;/h3&gt;

&lt;p&gt;If Windows contains the files you want Ubuntu to access, share the folder from Windows using SMB.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows shared folder
        │
        ▼
SMB
        │
        ▼
Ubuntu Files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From Ubuntu, you can access:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;smb://192.168.122.x/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;192.168.122.x&lt;/code&gt; is the Windows VM's address.&lt;/p&gt;

&lt;h3&gt;
  
  
  In Windows OS
&lt;/h3&gt;

&lt;p&gt;The configuration method is shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx0gio8a5v2fo91v6on54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx0gio8a5v2fo91v6on54.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898832/35_Share_specific_folder_publicly_mvlx86.png" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a folder and right-click it. When a new window opens, go to the &lt;code&gt;Sharing&lt;/code&gt; tab.&lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;Advanced Sharing&lt;/code&gt; and click it.

&lt;ul&gt;
&lt;li&gt;Select &lt;code&gt;Share this folder&lt;/code&gt; and click the &lt;code&gt;Permissions&lt;/code&gt; button.&lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;Everyone&lt;/code&gt; and check the required permission options.&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Apply&lt;/code&gt; and then click &lt;code&gt;OK&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5zzarm3jwdc3pq0dod2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5zzarm3jwdc3pq0dod2a.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898834/36_Share_specific_folder_publicly_v1uavs.png" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the folder and right-click it. When a new window opens, go to the &lt;code&gt;Security&lt;/code&gt; tab.&lt;/li&gt;
&lt;li&gt;Select the &lt;code&gt;Everyone&lt;/code&gt; option.

&lt;ul&gt;
&lt;li&gt;Check the required permission options.&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Apply&lt;/code&gt; and then click &lt;code&gt;OK&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjxs3nepumsunwipw80mk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjxs3nepumsunwipw80mk.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898837/37_Share_specific_folder_publicly_husdzd.png" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to the search box and type &lt;code&gt;Manage advanced sharing settings&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foswmzop8qo9a32n7kbhz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foswmzop8qo9a32n7kbhz.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898843/38_Share_specific_folder_publicly_jm46z4.png" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Expand &lt;code&gt;Private (current profile)&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable &lt;code&gt;Turn on network discovery&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Enable &lt;code&gt;Turn on file and printer sharing&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4f6ue7bg5h1kqa7nzqj6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4f6ue7bg5h1kqa7nzqj6.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898844/39_Share_specific_folder_publicly_qjb4eo.png" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Expand &lt;code&gt;Guest or Public&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable &lt;code&gt;Turn on network discovery&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Enable &lt;code&gt;Turn on file and printer sharing&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8bmhemycqckqwmgx2li8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8bmhemycqckqwmgx2li8.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898859/40_Share_specific_folder_publicly_dxgmb1.png" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Expand &lt;code&gt;All Networks&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable &lt;code&gt;Turn on sharing so anyone with network access can read and write files in the Public folders&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Enable &lt;code&gt;Use 128-bit encryption to help protect file sharing connections (recommended)&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For normal use, &lt;strong&gt;do not disable password-protected sharing&lt;/strong&gt;. Using authenticated SMB access is preferable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5whuwfdnieyh4s39fj85.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5whuwfdnieyh4s39fj85.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898846/41_Share_specific_folder_publicly_zm3c9o.png" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to the search box, type &lt;code&gt;cmd&lt;/code&gt;, and select &lt;strong&gt;Command Prompt&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuv6q5grpo0d4fwudawc7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuv6q5grpo0d4fwudawc7.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898861/42_Share_specific_folder_publicly_ks6khp.png" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type the following command in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;ipconfig&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then look for the &lt;strong&gt;IPv4 Address&lt;/strong&gt;. This is the IP address of the Windows 10 VM. For example, suppose the IP address is &lt;code&gt;192.168.122.128&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4lke1njiy3gdeddvrtj8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4lke1njiy3gdeddvrtj8.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898866/43_Share_specific_folder_publicly_j2d7wq.png" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open &lt;strong&gt;Files&lt;/strong&gt; on Ubuntu and go to the &lt;strong&gt;Network&lt;/strong&gt; section. Enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;smb://192.168.122.128
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then press &lt;strong&gt;Enter&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After pressing &lt;strong&gt;Enter&lt;/strong&gt;, a new &lt;strong&gt;Authentication Required&lt;/strong&gt; window will appear.&lt;/li&gt;
&lt;li&gt;Select the password field and enter your Windows login password.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Connect&lt;/strong&gt; button.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdmbxjoe9xnct5bw4ig69.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdmbxjoe9xnct5bw4ig69.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898851/44_Share_specific_folder_publicly_m09wqu.png" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select your shared folder. For example, suppose the shared folder is named &lt;code&gt;Drivers&lt;/code&gt;. Open the folder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4qvqf48f47r93q483rtj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4qvqf48f47r93q483rtj.png" alt="https://res.cloudinary.com/du7tjwbyi/image/upload/v1789898855/45_Share_specific_folder_publicly_qlthea.png" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy or place the file you want to share into this folder. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spice-guest-tools-latest.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can then access this file from Ubuntu through the Windows SMB share.&lt;/p&gt;

&lt;h1&gt;
  
  
  🗺️ Clipboard Sharing
&lt;/h1&gt;

&lt;p&gt;With SPICE guest components installed and the VM configured for SPICE, clipboard integration may allow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ubuntu
  ↓
Copy
  ↓
Windows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows
  ↓
Copy
  ↓
Ubuntu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test both directions.&lt;/p&gt;

&lt;p&gt;For large files, use SMB or another file-transfer mechanism rather than clipboard or drag-and-drop.&lt;/p&gt;

&lt;h1&gt;
  
  
  🗺️ Performance Optimization
&lt;/h1&gt;

&lt;p&gt;Once the VM is working, verify the following.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;host-passthrough
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Storage&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VirtIO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Network&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VirtIO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Firmware&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UEFI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Display&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SPICE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Disk&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;qcow2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ubuntu 26.04's current QEMU/libvirt stack includes modern VirtIO and virtualization improvements, so current Ubuntu packages are preferable to manually installing old QEMU/libvirt versions from third-party guides. (&lt;a href="https://documentation.ubuntu.com/release-notes/26.04/summary-for-lts-users/" rel="noopener noreferrer"&gt;Ubuntu Documentation&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Don't Overallocate RAM
&lt;/h3&gt;

&lt;p&gt;Suppose the host has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;16 GB RAM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don't give Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;14 GB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and leave Ubuntu with only 2 GB.&lt;/p&gt;

&lt;p&gt;A more reasonable starting point is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ubuntu → 8–10 GB
Windows → 6–8 GB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adjust according to your workload.&lt;/p&gt;

&lt;p&gt;If you're running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VS Code
Docker
Chrome
Firefox
Kubernetes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;on Ubuntu simultaneously, leave more RAM for the host.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Don't Overallocate CPU
&lt;/h3&gt;

&lt;p&gt;If your processor has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;8 logical CPUs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;start with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows → 4 vCPU
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and allow Ubuntu to use the remaining CPU capacity.&lt;/p&gt;

&lt;p&gt;More vCPUs do not automatically mean better VM performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Check VM Information
&lt;/h3&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh dominfo Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;State
CPU(s)
Max memory
Used memory
Autostart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❏❏❏ Check the QEMU Process
&lt;/h3&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ps aux | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;'[q]emu'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows you to inspect the QEMU process associated with the running VM.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Check libvirt Logs
&lt;/h3&gt;

&lt;p&gt;If a VM refuses to start, check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; libvirtd &lt;span class="nt"&gt;--since&lt;/span&gt; today
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On modular libvirt installations, you may also need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; virtqemud &lt;span class="nt"&gt;--since&lt;/span&gt; today
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❏❏❏ VM Storage Location
&lt;/h3&gt;

&lt;p&gt;The default libvirt storage location is commonly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/var/lib/libvirt/images/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo ls&lt;/span&gt; &lt;span class="nt"&gt;-lh&lt;/span&gt; /var/lib/libvirt/images/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You may see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows-10.qcow2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  🗺️ Back Up the VM
&lt;/h1&gt;

&lt;p&gt;First shut down Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh shutdown Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh list &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Export the VM configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh dumpxml Windows-10 &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; ~/Windows-10.xml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Back up the disk:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;rsync &lt;span class="nt"&gt;-avh&lt;/span&gt; &lt;span class="nt"&gt;--progress&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
/var/lib/libvirt/images/Windows-10.qcow2 &lt;span class="se"&gt;\&lt;/span&gt;
~/Windows-10-backup.qcow2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your backup set should contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows-10.xml
Windows-10.qcow2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a serious backup strategy, store the backup on a &lt;strong&gt;different physical disk&lt;/strong&gt; from the original VM.&lt;/p&gt;

&lt;h1&gt;
  
  
  🗺️ VM Autostart
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Enable VM Autostart
&lt;/h3&gt;

&lt;p&gt;If you want Windows to start automatically with Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh autostart Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh dominfo Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  To disable
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh autostart &lt;span class="nt"&gt;--disable&lt;/span&gt; Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For laptops and workstations, manual startup is often more convenient.&lt;/p&gt;

&lt;h1&gt;
  
  
  🗺️ Useful &lt;code&gt;virsh&lt;/code&gt; Commands
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;List VMs&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh list &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Start VM&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh start Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Shut down VM&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh shutdown Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Force stop&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh destroy Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;VM information&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh dominfo Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Export VM configuration&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh dumpxml Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;List networks&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh net-list &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Start default network&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh net-start default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Enable network autostart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh net-autostart default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Enable VM autostart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh autostart Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Disable VM autostart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh autostart &lt;span class="nt"&gt;--disable&lt;/span&gt; Windows-10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  🗺️ Common Problem
&lt;/h1&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Common Problem: &lt;code&gt;/dev/kvm&lt;/code&gt; Doesn't Exist
&lt;/h3&gt;

&lt;p&gt;Check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; /dev/kvm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsmod | &lt;span class="nb"&gt;grep &lt;/span&gt;kvm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Intel:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe kvm_intel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For AMD:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe kvm_amd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; /dev/kvm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it still doesn't exist, verify that virtualization is enabled in BIOS/UEFI.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Common Problem: KVM Acceleration Is Unavailable
&lt;/h3&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kvm-ok
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If KVM cannot be used:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reboot.&lt;/li&gt;
&lt;li&gt;Enter BIOS/UEFI.&lt;/li&gt;
&lt;li&gt;Enable Intel VT-x or AMD-V/SVM.&lt;/li&gt;
&lt;li&gt;Boot Ubuntu.&lt;/li&gt;
&lt;li&gt;Run:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kvm-ok
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;again.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Common Problem: &lt;code&gt;default&lt;/code&gt; Network Is Inactive
&lt;/h3&gt;

&lt;p&gt;Check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virsh net-list &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If inactive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;virsh net-start default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;virsh net-autostart default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❏❏❏ Common Problem: Windows Says "No Drives Found"
&lt;/h3&gt;

&lt;p&gt;This normally means that the VirtIO storage driver has not been loaded.&lt;/p&gt;

&lt;p&gt;Go to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Load driver
→ Browse
→ VirtIO CD
→ viostor / vioscsi
→ Windows version
→ amd64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select the appropriate &lt;code&gt;.inf&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;The virtual disk should then appear.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Common Problem: Windows Has No Internet
&lt;/h3&gt;

&lt;p&gt;In virt-manager, check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network source:
Virtual network 'default'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Device model:
VirtIO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then verify the VirtIO network driver inside Windows.&lt;/p&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ipconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If no adapter appears, open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Device Manager
→ Network adapters
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and install the appropriate VirtIO driver.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Common Problem: Common Problem: Display Is Slow
&lt;/h3&gt;

&lt;p&gt;Verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Display:
SPICE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and make sure the appropriate Windows display/guest components are installed.&lt;/p&gt;

&lt;p&gt;Also verify that the video device configured in virt-manager has a compatible Windows driver.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Common Problem: Common Problem: Windows Won't Boot After Changing Disk Bus
&lt;/h3&gt;

&lt;p&gt;Suppose Windows was installed using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SATA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and you later change the disk to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VirtIO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows may fail to boot if the VirtIO storage driver wasn't installed beforehand.&lt;/p&gt;

&lt;p&gt;The correct sequence is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install VirtIO driver
        ↓
Verify driver
        ↓
Shut down Windows
        ↓
Change disk to VirtIO
        ↓
Boot Windows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don't change storage controllers randomly after installation.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❏❏❏ Common Problem: Common Problem: VM Is Extremely Slow
&lt;/h3&gt;

&lt;p&gt;Check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU:
host-passthrough

Disk:
VirtIO

Network:
VirtIO

Firmware:
UEFI

Display:
SPICE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then check host resources:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;top
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If Ubuntu is running out of RAM or CPU, reduce the VM's allocation.&lt;/p&gt;

&lt;h1&gt;
  
  
  🗺️ Recommended Configuration
&lt;/h1&gt;

&lt;p&gt;For a host with 16 GB RAM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────┐
│        Windows VM                │
├──────────────────────────────────┤
│ RAM          6 GB                │
│ CPU          4 vCPU              │
│ CPU Model    host-passthrough    │
│ Disk         80–100 GB           │
│ Disk Format  qcow2               │
│ Disk Bus     VirtIO              │
│ Network      VirtIO              │
│ Network      libvirt NAT         │
│ Firmware     UEFI                │
│ Display      SPICE               │
└──────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Windows 11, additionally configure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TPM            2.0
Secure Boot    Enabled/Supported
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❏❏❏ Complete Ubuntu Installation Commands
&lt;/h3&gt;

&lt;p&gt;For a standard Ubuntu 26.04 setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
qemu-kvm &lt;span class="se"&gt;\&lt;/span&gt;
qemu-system-x86 &lt;span class="se"&gt;\&lt;/span&gt;
qemu-utils &lt;span class="se"&gt;\&lt;/span&gt;
libvirt-daemon-system &lt;span class="se"&gt;\&lt;/span&gt;
libvirt-clients &lt;span class="se"&gt;\&lt;/span&gt;
virt-manager &lt;span class="se"&gt;\&lt;/span&gt;
ovmf &lt;span class="se"&gt;\&lt;/span&gt;
bridge-utils &lt;span class="se"&gt;\&lt;/span&gt;
dnsmasq-base &lt;span class="se"&gt;\&lt;/span&gt;
cpu-checker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add your user:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; kvm,libvirt &lt;span class="nv"&gt;$USER&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure libvirt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--now&lt;/span&gt; libvirtd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure the default network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;virsh net-start default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it is already running, that's fine.&lt;/p&gt;

&lt;p&gt;Enable autostart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;virsh net-autostart default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check KVM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kvm-ok
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reboot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After reboot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;groups&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;virt-manager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❏❏❏ Windows 11 Additional Configuration
&lt;/h3&gt;

&lt;p&gt;If you want to use Windows 11 instead of Windows 10, create the VM using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UEFI
TPM 2.0
Secure Boot
4+ GB RAM
2+ vCPU
64+ GB storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Microsoft specifically lists TPM 2.0, UEFI/Secure Boot capability, storage, memory, and processor requirements for Windows 11. (&lt;a href="https://support.microsoft.com/en-us/windows/experience/compatibility/windows-11-system-requirements" rel="noopener noreferrer"&gt;Microsoft Support&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;In virt-manager, you can add a virtual TPM through:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add Hardware
→ TPM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Choose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TPM Type:
Emulated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Version:
2.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact virt-manager UI may differ slightly between Ubuntu releases.&lt;/p&gt;

&lt;h1&gt;
  
  
  🗺️ Final Architecture
&lt;/h1&gt;

&lt;p&gt;After configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                         INTERNET
                            │
                            ▼
                    Ubuntu 26.04 Host
                            │
                 ┌──────────┴──────────┐
                 │                     │
              libvirt                 KVM
                 │                     │
                 └──────────┬──────────┘
                            │
                           QEMU
                            │
                   ┌────────┴────────┐
                   │                 │
                VirtIO             SPICE
                   │                 │
                   ▼                 ▼
             Windows 10/11       VM Console
                   │
        ┌──────────┼───────────┐
        │          │           │
      Disk       Network      USB
     VirtIO      VirtIO     Passthrough
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  🗺️ Conclusion
&lt;/h1&gt;

&lt;p&gt;KVM/QEMU is a powerful way to run Windows inside Ubuntu without dual-booting.&lt;/p&gt;

</description>
      <category>virtualmachine</category>
      <category>kvm</category>
      <category>microsoft</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
