Here is a single consolidated guide incorporating the steps we went through, including the two issues you encountered (qemu-kvm being a virtual package and the missing libvirt group).

KVM/QEMU on Windows 11 using WSL2 + Ubuntu
The architecture we're building is:
Windows 11
│
├── Hardware Virtualization (Intel VT-x / AMD-V)
│
└── WSL2
│
└── Ubuntu
│
├── /dev/kvm
├── QEMU
├── KVM acceleration
├── libvirt
├── virsh
└── virt-manager
│
└── Your Linux VMs
This is suitable for developing and testing KVM/QEMU virtual machines and images on your Windows 11 computer.
1. Check hardware virtualization
In Windows 11 open:
Task Manager → Performance → CPU
Look for:
Virtualization: Enabled
If it says Disabled, enable Intel VT-x/VT-d or AMD-V/SVM in your computer's BIOS/UEFI before continuing.
PART I — WINDOWS POWERSHELL
2. Install WSL2
Open PowerShell as Administrator.
Run:
wsl --install
Restart Windows if requested.
Then check WSL:
wsl --status
Set WSL2 as the default:
wsl --set-default-version 2
3. Install Ubuntu
See available distributions:
wsl --list --online
Install Ubuntu:
wsl --install -d Ubuntu
Allow installation to complete.
Restart Windows if requested.
Then check:
wsl -l -v
You want Ubuntu to show VERSION 2, for example:
NAME STATE VERSION
Ubuntu Stopped 2
If necessary:
wsl --set-version Ubuntu 2
Now launch Ubuntu:
wsl -d Ubuntu
On first launch, Ubuntu asks you to create a Linux username and password.
In your case your Linux account became:
datasole
Once you see something like:
datasole@DATASOLE-E1CV9JD:~$
you're inside Ubuntu.
Important: from this point, don't use PowerShell commands such as:
wsl -l -v
inside Ubuntu.
PART II — UBUNTU / WSL2
4. Move to your Linux home directory
Run:
cd ~
Your prompt should end approximately like:
datasole@DATASOLE-E1CV9JD:~$
5. Verify /dev/kvm
Run:
ls -l /dev/kvm
On your machine we successfully obtained something equivalent to:
crw-rw---- 1 root kvm 10, 232 ... /dev/kvm
This is important because it confirms that the KVM device is exposed inside your WSL environment.
Do not type that output back into the terminal. It is information returned by the previous command, not another command.
6. Check CPU virtualization flags
Run:
grep -E -c '(vmx|svm)' /proc/cpuinfo
A number greater than:
0
means virtualization CPU flags are visible.
PART III — INSTALL QEMU/KVM
7. Update Ubuntu
Run:
sudo apt update
Optionally update the installed packages too:
sudo apt upgrade -y
8. Install QEMU, libvirt and virt-manager
Originally we attempted:
qemu-kvm
but your Ubuntu release reported that qemu-kvm is a virtual package and required an explicit QEMU implementation.
Therefore use:
sudo apt install -y qemu-system-x86 qemu-utils libvirt-daemon-system libvirt-clients virtinst virt-manager bridge-utils cpu-checker
Allow the installation to finish completely.
This gives you the main stack:
QEMU
KVM
libvirt
virsh
virt-install
virt-manager
bridge-utils
PART IV — PERMISSIONS
9. Add datasole to the virtualization groups
Only do this after libvirt has been installed, because before installation the libvirt group may not exist.
Run:
sudo usermod -aG kvm,libvirt $USER
Notice that it is:
$USER
not:
$datasole
$USER is a Linux environment variable that automatically resolves to your current username.
Check that the groups exist:
getent group kvm
and:
getent group libvirt
PART V — TEST KVM
10. Run the KVM test
Run:
sudo kvm-ok
The ideal result is:
INFO: /dev/kvm exists
KVM acceleration can be used
You can also check QEMU's available acceleration methods:
qemu-system-x86_64 -accel help
Look for:
kvm
tcg
KVM is hardware-assisted virtualization, while TCG is QEMU's software emulation engine.
PART VI — RESTART WSL
11. Exit Ubuntu
Run:
exit
You should return to Windows PowerShell:
PS C:\...>
Now run:
wsl --shutdown
This completely stops the WSL2 VM.
Start Ubuntu again:
wsl -d Ubuntu
12. Verify your groups
Back inside Ubuntu:
groups
You should see kvm and libvirt among your groups.
For example:
datasole sudo users kvm libvirt
PART VII — LIBVIRT
13. Start libvirt
Inside Ubuntu run:
sudo systemctl enable --now libvirtd
Check it:
systemctl status libvirtd
You want to see:
Active: active (running)
If the terminal opens a status viewer, press:
q
to exit it.
14. Test libvirt
Run:
virsh list --all
At first you will probably see:
Id Name State
--------------------
That's fine. It simply means libvirt is working but you haven't created any virtual machines yet.
PART VIII — GRAPHICAL KVM MANAGER
15. Start Virtual Machine Manager
Run:
virt-manager
Windows 11's WSLg should display the Linux application as a normal graphical window.
You should now have:
Virtual Machine Manager
This provides a GUI for QEMU/KVM/libvirt.
PART IX — CREATE YOUR FIRST VM
In Virtual Machine Manager choose:
Create a new virtual machine
Then:
Local install media (ISO image)
↓
Choose ISO
↓
Select operating system
↓
Choose RAM
↓
Choose CPU cores
↓
Create virtual disk
↓
Configure networking
↓
Install
For example, you could download a Debian ISO and create:
Name: Debian-Test
CPU:
4 vCPU
RAM:
8 GB
Disk:
50 GB
Virtualization:
KVM/QEMU
Disk format:
QCOW2
Network:
NAT
Your resulting architecture becomes:
┌──────────────────────────────────────┐
│ Windows 11 │
│ │
│ ┌────────────────────────────────┐ │
│ │ WSL2 │ │
│ │ │ │
│ │ Ubuntu Linux │ │
│ │ │ │
│ │ ┌────────────────────────┐ │ │
│ │ │ libvirt │ │ │
│ │ │ │ │ │ │
│ │ │ QEMU/KVM │ │ │
│ │ │ │ │ │ │
│ │ │ ┌──────────────┐ │ │ │
│ │ │ │ Debian VM │ │ │ │
│ │ │ │ 4 vCPU │ │ │ │
│ │ │ │ 8 GB RAM │ │ │ │
│ │ │ │ 50 GB QCOW2 │ │ │ │
│ │ │ └──────────────┘ │ │ │
│ │ └────────────────────────┘ │ │
│ └────────────────────────────────┘ │
└──────────────────────────────────────┘
Quick reference
When you turn on the computer in the future, you don't need to reinstall anything.
Open Ubuntu and check:
ls -l /dev/kvm
Then:
systemctl status libvirtd
And launch the GUI with:
virt-manager
If libvirt isn't running:
sudo systemctl start libvirtd
then:
virt-manager
At this point the Windows 11 → WSL2 → Ubuntu → KVM/QEMU → libvirt → virt-manager installation is complete. The next stage is configuring your first KVM/QEMU VM, including QCOW2 storage, CPU/RAM allocation, NAT networking and importing an ISO or existing cloud image.