How to set up a Windows 11 environment to use WSL with Landscape
If you already have a Windows machine with WSL 2 and Ubuntu installed, you don’t need to go through this guide.
This guide provides an example of how you could set up an environment to use WSL with Landscape. It’s intended for users who want to create a Windows VM, although later steps in the guide are still relevant for users who already have a Windows machine.
Contents:
- Configure Ubuntu for virtualization with QEMU and libvirt
- Create and provision a Windows 11 VM using an ISO
- Set up WSL, Ubuntu and helper utilities
Step 1: Configure Ubuntu for virtualization with QEMU and libvirt
To enable libvirt-based virtualization on Ubuntu, run the following commands:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients -y
sudo adduser $(id -un) libvirt
sudo adduser $(id -un) kvm
sudo modprobe kvm
sudo apt-get install virt-manager -y
For those who want a more detailed understanding, here’s what each command does:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients -y
: Installs QEMU, the libvirt daemon and libvirt clients. QEMU enables virtualization, and libvirt is a toolkit that manages the virtualization. The daemon and clients are part of the libvirt toolkit. The-y
automatically answers “yes” to any prompts.sudo adduser $(id -un) libvirt
andsudo adduser $(id -un) kvm
: Adds the current user (output of$(id -un)
) to thelibvirt
andkvm
groups.sudo modprobe kvm
: Loads the KVM module into the kernel.sudo apt-get install virt-manager -y
: Installs Virtual Machine Manager, which is the desktop software you’ll use to manage your Windows VM. The-y
automatically answers “yes” to any prompts.
A reboot typically isn’t required at this stage, but if you encounter issues, try rebooting your machine to ensure all changes get applied properly.
Step 2: Create and provision a Windows 11 VM using an ISO
This ISO disk image is unactivated and generally used for Windows testing and development purposes. There may be some differences between the ISO and a licensed copy of Windows. For more information, refer to Microsoft’s documentation.
To create and provision your Windows 11 VM using an ISO:
Download and prepare the ISO file
-
Download the Windows 11 ISO file:
wget https://software.download.prss.microsoft.com/dbazure/Win11_23H2_English_x64v2.iso
The
wget
command downloads the file from Microsoft’s website. -
Move the ISO file to the libvirt images directory:
sudo mv Win11_23H2_English_x64v2.iso /var/lib/libvirt/images/
Create and provision your VM
-
Get the model of your machine’s CPU:
cpu_model=$(virsh capabilities | grep -oP '<model>\K[^<]+' | head -n 1)
This is needed so the VM can emulate the same CPU model of your host machine.
-
Define the name of the VM:
vm_name="win11-vm"
This example assigns the name of your VM to
win11-vm
. You can changewin11-vm
to whatever name you want without changing any of the following steps. -
Create and provision the VM:
virt-install \ --name "$vm_name" \ --ram 8192 \ --vcpus 4 \ --cpu custom,model="$cpu_model" \ --disk path=/var/lib/libvirt/images/$vm_name.qcow2,size=64 \ --os-variant "win11" \ --graphics spice \ --cdrom /var/lib/libvirt/images/Win11_23H2_English_x64v2.iso \ --boot hd,cdrom \ --noautoconsole
The settings here are suitable for most computers. However, you can adjust them based on the available resources on your computer. Landscape requires a bare minimum of 2 vCPU and 4 GB of RAM.
-
Stop the VM:
virsh destroy $vm_name
Configure your VM
-
Add the CPU to the VM configuration:
sudo sed -i "/<\/cpu>/i \ <feature policy='require' name='vmx' />" "/etc/libvirt/qemu/${vm_name}.xml"
The
sed
command edits the VM’s XML configuration file to add the CPU feature. These changes to the XML file may not immediately be reflected in Virtual Machine Manager’s (VMM) XML editor. This is because VMM often maintains its own cache or database of VM configurations for performance reasons. -
Restart the libvirt daemon:
sudo systemctl restart libvirtd
-
Close and launch Virtual Machine Manager:
kill $(pgrep virt-manager) virt-manager
Launch the VM
-
Launch the VM:
virsh start $vm_name && virt-viewer $vm_name
Once the VM opens in the console, you’ll need to press a key to boot from CD. If the installer requests you eject the CD during or after the installation process, press Enter and continue. The ISO disk image will be considered ejected (or unmounted) when this warning appears, and no additional steps are needed.
Step 3: Set up WSL, Ubuntu and helper utilities
Install Chocolatey and necessary drivers
-
In your Windows 11 VM, open an elevated PowerShell window. Right click PowerShell > Run as Administrator
-
Set the execution policy to bypass PowerShell’s default policy:
Set-ExecutionPolicy Bypass -Scope Process -Force
Bypassing PowerShell’s execution policy should generally be used with caution. The execution policy is set to
Bypass
here to ensure the rest of the script runs smoothly. When you close your PowerShell window, the execution policy will return to the default. -
Install Chocolatey:
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
-
Enable global confirmation for Chocolatey:
choco feature enable -n allowGlobalConfirmation
Enabling this feature tells Chocolatey to always confirm prompts that appear during the installation or upgrade process. This feature should generally be used with caution, but it’s useful here so you won’t need to manually confirm any prompts.
-
Install VM utilities:
choco install spice-agent virtio-drivers
-
Restart your VM to apply these changes:
Restart-Computer -Force
Enable WSL and other necessary software
-
After your machine restarts, open an elevated PowerShell window again.
-
Enable Hyper-V, Virtual Machine Platform and WSL:
Enable-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online -NoRestart Enable-WindowsOptionalFeature -FeatureName VirtualMachinePlatform -Online -NoRestart Enable-WindowsOptionalFeature -FeatureName Microsoft-Windows-Subsystem-Linux -Online -NoRestart
-
Restart your VM again to apply these changes:
Restart-Computer -Force
Install Ubuntu on WSL
-
After your VM restarts, open the Command Prompt.
-
Update WSL:
wsl --update
-
Check your WSL version:
wsl -l -v
The output will be similar to:
NAME STATE VERSION * Ubuntu Stopped 2
Your WSL version number is in the
VERSION
column. You need to use WSL version 2, not version 1. If you’re on WSL 1, see Microsoft’s guide on upgrading from WSL 1 to WSL 2. -
If WSL is on version 2, install Ubuntu:
wsl --install Ubuntu
Your environment is now set up to use WSL with Landscape. Next, you’ll need to install and configure Ubuntu Pro for WSL and register your Windows host machine. For these steps, see how to set up Ubuntu Pro for WSL and register WSL hosts to Landscape.