Who is this for?

This is an introductory topic for developers and system administrators who want to automate Windows on Arm virtual machine (VM) creation on Arm Linux systems using QEMU and KVM.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Understand the process of creating a Windows on Arm virtual machine using Bash scripts
  • Run scripts for VM creation and management
  • Troubleshoot common VM setup and runtime issues
  • Use Windows on Arm virtual machines for software development and testing

Prerequisites

Before starting, you will need the following:

  • An Arm Linux system with KVM support and a minimum of 8GB RAM and 50GB free disk space

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll automate a Windows 11 on Arm VM on an Arm Linux host using QEMU, KVM, and Bash scripts. First, you’ll install prerequisite software and understand the VM creation workflow. Then, you’ll create a VM with default settings and store the VM files in your chosen directory. After creating the VM, you’ll use a single run script to check the state of the VM, start it if needed, and open an RDP session with Remmina.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
Which command should I use to create a Windows on Arm VM with default settings?
Run ./create-win11-vm.sh all <vm-directory>. The command applies the default parameters and performs all creation steps automatically.
Where are the VM files stored and how do I choose the location?
The VM data is stored in the directory that you pass to the creation script. For example, ./create-win11-vm.sh all $HOME/win11-vm stores all VM files under $HOME/win11-vm.
What result should I expect during the first boot after creation?
Windows installs automatically after the VM is created. Wait for installation to finish before proceeding to regular use.
How do I launch the VM and connect to the desktop?
Run ./run-win11-vm.sh <vm-directory>. The script checks if the VM is running, starts it in headless mode if needed, and connects over RDP using Remmina.
What should I check if the run script doesn't open an RDP session?
Confirm you used the same VM directory you created earlier and that the VM files exist there. Re-run the launch script. The script detects if the VM is already running and will reconnect if possible.
Next