<?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: Muhammad S.A. Iqbal</title>
    <description>The latest articles on DEV Community by Muhammad S.A. Iqbal (@msa-iqbal).</description>
    <link>https://dev.to/msa-iqbal</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%2Fuser%2Fprofile_image%2F3171400%2Fa2e65e78-3982-430b-be3f-580c3d9fcc30.jpg</url>
      <title>DEV Community: Muhammad S.A. Iqbal</title>
      <link>https://dev.to/msa-iqbal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/msa-iqbal"/>
    <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>
    <item>
      <title>Next.js Unleashed: A Powerful Framework for Modern Web Development</title>
      <dc:creator>Muhammad S.A. Iqbal</dc:creator>
      <pubDate>Sat, 17 May 2025 06:55:57 +0000</pubDate>
      <link>https://dev.to/msa-iqbal/nextjs-unleashed-a-powerful-framework-for-modern-web-development-348f</link>
      <guid>https://dev.to/msa-iqbal/nextjs-unleashed-a-powerful-framework-for-modern-web-development-348f</guid>
      <description>&lt;p&gt;Next.js is a powerful React framework that enables developers to build server-rendered applications and static websites with ease. It simplifies the process of creating complex web applications by providing features like automatic code splitting, server-side rendering, and static site generation. This document explores the key features, benefits, and use cases of Next.js, making it an essential tool for modern web development.&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.amazonaws.com%2Fuploads%2Farticles%2F92im39an9ieicz4o5xv7.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.amazonaws.com%2Fuploads%2Farticles%2F92im39an9ieicz4o5xv7.png" alt=" " width="799" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features of Next.js
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Server-Side Rendering (SSR)&lt;/strong&gt;&lt;br&gt;
Next.js allows developers to render pages on the server, which can improve performance and SEO. By generating HTML on the server for each request, users receive a fully rendered page, leading to faster load times and better indexing by search engines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Static Site Generation (SSG)&lt;/strong&gt;&lt;br&gt;
With Next.js, developers can pre-render pages at build time, creating static HTML files that can be served quickly to users. This is particularly useful for content-heavy sites where performance is critical.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;API Routes&lt;/strong&gt;&lt;br&gt;
Next.js includes built-in support for API routes, allowing developers to create serverless functions directly within their application. This feature simplifies the development process by enabling the creation of backend functionality without the need for a separate server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automatic Code Splitting&lt;/strong&gt;&lt;br&gt;
Next.js automatically splits code at the page level, ensuring that users only download the necessary JavaScript for the page they are visiting. This leads to faster load times and improved performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;File-Based Routing&lt;/strong&gt;&lt;br&gt;
Next.js uses a file-based routing system, where the file structure of the project determines the routes of the application. This makes it easy to create and manage routes without the need for additional configuration.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Benefits of Using Next.js
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Performance:&lt;/strong&gt; With SSR and SSG, Next.js applications load faster and provide a better user experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SEO Friendly:&lt;/strong&gt; The ability to render pages on the server enhances SEO, making it easier for search engines to index content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Developer Experience:&lt;/strong&gt; Next.js offers a streamlined development process with features like hot reloading, making it easier for developers to build and iterate on their applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Versatility:&lt;/strong&gt; Whether building a static site, a dynamic web application, or an API, Next.js provides the tools needed to create a wide range of applications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Use Cases for Next.js
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;E-commerce Websites:&lt;/strong&gt; Next.js is ideal for building fast and SEO-friendly e-commerce platforms that require server-side rendering for product pages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Blogs and Content Sites:&lt;/strong&gt; Static site generation makes Next.js a great choice for blogs and content-heavy websites, allowing for quick loading times and easy content management.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dashboards and Admin Panels:&lt;/strong&gt; The framework’s ability to handle dynamic data and API routes makes it suitable for building complex dashboards and admin interfaces.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Next.js is a robust framework that enhances the capabilities of React by providing essential features for building modern web applications. Its focus on performance, SEO, and developer experience makes it a popular choice among developers. Whether you’re creating a simple blog or a complex web application, Next.js offers the tools and flexibility needed to succeed in today’s web development landscape.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>web</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
