You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/learning-paths/laptops-and-desktops/win11-vm-automation/_index.md
+7-11Lines changed: 7 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,22 +1,18 @@
1
1
---
2
-
title: Windows on Arm virtual machine creation using Arm Linux, QEMU, and KVM
3
-
4
-
draft: true
5
-
cascade:
6
-
draft: true
2
+
title: Automate Windows on Arm virtual machine deployment with QEMU and KVM on Arm Linux
7
3
8
4
minutes_to_complete: 90
9
5
10
-
who_is_this_for: This is for developers and system administrators who want to automate Windows on Arm virtual machine (VM) creation on Arm Linux systems using QEMU and KVM.
6
+
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.
11
7
12
8
learning_objectives:
13
-
- Understand the process of creating Windows on Arm virtual machine using Bash scripts.
14
-
- Run scripts for VM creation and management.
15
-
- Troubleshoot common VM setup and runtime issues.
16
-
- Use Windows on Arm virtual machines for software development and testing.
9
+
- Understand the process of creating a Windows on Arm virtual machine using Bash scripts
10
+
- Run scripts for VM creation and management
11
+
- Troubleshoot common VM setup and runtime issues
12
+
- Use Windows on Arm virtual machines for software development and testing
17
13
18
14
prerequisites:
19
-
- An Arm Linux system with KVM support and a minimum of 8GB RAM and 50GB free disk space.
15
+
- An Arm Linux system with KVM support and a minimum of 8GB RAM and 50GB free disk space
Copy file name to clipboardExpand all lines: content/learning-paths/laptops-and-desktops/win11-vm-automation/prerequisites-1.md
+17-15Lines changed: 17 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,42 +1,42 @@
1
1
---
2
-
title: System requirements
2
+
title: Check system requirements
3
3
weight: 2
4
4
5
5
### FIXED, DO NOT MODIFY
6
6
layout: learningpathall
7
7
---
8
8
9
-
If you are building and testing Windows on Arm software you have a variety of options to run Windows on Arm. You can use local laptops, cloud virtual machines, and CI/CD platforms like GitHub Actions for development tasks.
10
9
11
-
You can also use a local Arm Linux server to create virtual machines for Windows on Arm software development tasks. This Learning Path explains how to install and use Windows on Arm virtual machines on an Arm Linux system. Two scripts are provided to create and run Windows on Arm virtual machines to make the process easy.
10
+
## Prepare your system for Windows on Arm virtual machines
12
11
13
-
Before creating a Windows on Arm virtual machine, ensure your Arm Linux system meets the hardware and software requirements. This section covers everything you need to prepare to create a Windows on Arm virtual machine using QEMU and KVM.
12
+
To build and test Windows on Arm software, choose from several flexible options: run Windows on Arm locally, use cloud-based virtual machines, or leverage CI/CD platforms like GitHub Actions. For hands-on development, set up a Windows on Arm virtual machine directly on your Arm Linux server.
14
13
15
-
## Hardware requirements
14
+
In this Learning Path, you'll install and use Windows on Arm virtual machines on an Arm Linux system. Two easy-to-use scripts are included to streamline the creation and management of your virtual machines. Before you get started, make sure your Arm Linux system meets the hardware and software requirements. In this section, you'll set up everything you need to create a Windows on Arm virtual machine using QEMU and KVM.
16
15
17
-
You need an Arm Linux system with enough performance, memory, and storage to run a Windows on Arm virtual machine.
16
+
## Check hardware requirements
18
17
19
-
The provided scripts have been tested on a [Thelio Astra](https://system76.com/desktops/thelio-astra-a1.1-n1/configure?srsltid=AfmBOoplXbwXifyxppxFe_oyahYMJHUT0bp2BnIBSH5ADjqgZxB7wW75) running Ubuntu 24.04.
18
+
You need an Arm Linux system with enough performance, memory, and storage to run a Windows on Arm virtual machine. You can use the scripts on a [Thelio Astra](https://system76.com/desktops/thelio-astra-a1.1-n1/configure?srsltid=AfmBOoplXbwXifyxppxFe_oyahYMJHUT0bp2BnIBSH5ADjqgZxB7wW75) running Ubuntu 24.04, where they have been tested successfully.
20
19
21
20
Thelio Astra is an Arm-based desktop computer designed by System76 for autonomous vehicle development and other general-purpose Arm software development. It uses the Ampere Altra processor, which is based on the Arm Neoverse N1 CPU, and ships with the Ubuntu operating system.
22
-
23
-
Other Arm Linux systems and other Linux distributions are possible, but have not been tested. General hardware requirements are listed below.
21
+
You can try these scripts on other Arm Linux systems or distributions, but only the configuration above has been tested. Check the general hardware requirements below before you continue.
24
22
25
23
The minimum hardware requirements for the Arm Linux system are:
26
24
27
25
- 8 cores with hardware virtualization support
28
26
- 8 GB RAM
29
27
- 50 GB free disk space
30
28
31
-
The scripts automatically allocate resources as listed below, but the details can be customized for your system.
29
+
Customize CPU cores, memory, and disk size by editing the variables at the top of each script file (`create-vm.sh` and `run-vm.sh` in the project directory) to match your system's capabilities.
30
+
31
+
For this Learning Path, add the following information:
32
32
33
33
- CPU: half of available cores (minimum 4 cores)
34
34
- Memory: half of available RAM (minimum 4 GB)
35
35
- Disk: 40 GB VM disk
36
36
37
-
## KVM support
37
+
## Verify KVM support
38
38
39
-
Kernel-based Virtual Machine (KVM) support is required for hardware-accelerated virtualization and good VM performance.
39
+
Kernel-based Virtual Machine (KVM) support is required for hardware-accelerated virtualization and optimal virtual machine (VM) performance on Arm systems. Without KVM, your VMs run significantly slower because they rely on software emulation instead of using Arm's hardware virtualization features.
40
40
41
41
KVM is a virtualization infrastructure built into the Linux kernel that allows you to run virtual machines with near-native performance. It leverages Arm's hardware virtualization extensions to provide efficient CPU virtualization, while QEMU handles device emulation and management. Without KVM, virtual machines run much slower using software emulation.
If needed, the [Remmina](https://remmina.org/) remote desktop (RDP) client is automatically installed by the run script so you don't need to install it now, but you can install it using the command below.
73
+
If needed, the [Remmina](https://remmina.org/) remote desktop (RDP) client is automatically installed by the run script so you don't need to install it now, but you can install it using this command:
74
74
75
75
```console
76
76
sudo apt install remmina remmina-plugin-rdp -y
77
77
```
78
78
79
-
Proceed to the next section to learn about the scripts.
79
+
80
+
You’ve verified your system requirements and you’re now ready to move on and start working with Windows on Arm virtual machines.
Copy file name to clipboardExpand all lines: content/learning-paths/laptops-and-desktops/win11-vm-automation/understanding-scripts-2.md
+8-6Lines changed: 8 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,13 @@
1
1
---
2
-
title: Understanding the virtual machine scripts
2
+
title: Understand and customize Windows on Arm VM automation scripts
3
3
4
4
weight: 3
5
5
6
6
layout: "learningpathall"
7
7
---
8
8
9
+
## Get started with the Windows on Arm VM automation scripts
10
+
9
11
A GitHub project provides two Bash scripts. Understanding their architecture and design will help you use them effectively and enable you to customize the options for your specific needs.
10
12
11
13
Start by cloning the project repository from GitHub to your Arm Linux system.
@@ -47,23 +49,23 @@ Virtual machine creation includes the following steps:
47
49
48
50
The `create-win11-vm.sh` script implements a four-step process that builds a Windows VM incrementally:
49
51
50
-
### Step 1: Create VM directory
52
+
### Step 1: Create the VM directory
51
53
52
54
Step 1 initializes the VM directory structure and configuration. It creates the VM directory, copies initial configuration files, and sets up the basic environment. As a result, the VM directory, configuration files, and connection profiles are created.
53
55
54
-
### Step 2: Download Windows
56
+
### Step 2: Download Windows and VirtIO drivers
55
57
56
58
Step 2 downloads the Windows 11 ISO and VirtIO drivers. It downloads the Windows 11 Arm ISO from Microsoft, fetches VirtIO drivers, and prepares unattended installation files. The files created during this step include `installer.iso`, `virtio-win.iso`, and the unattended installation directory. This step takes some time as the Windows ISO download is large, but if you already have the file the script will save time and not repeat the download.
57
59
58
-
### Step 3: Prepare VM disk image
60
+
### Step 3: Prepare the VM disk image
59
61
60
62
Step 3 creates the VM disk image and finalizes the installation setup. It builds the unattended installation ISO, creates the main VM disk image, and configures all installation media. The files created during this step include `disk.qcow2` and `unattended.iso`.
61
63
62
64
{{% notice Note %}}
63
65
The product key used in the scripts is a generic key provided by Microsoft, which allows installation. This key is for testing purposes only and does not activate Windows. If you plan to continue using Windows beyond installation, you should replace it with a genuine product key.
64
66
{{% /notice %}}
65
67
66
-
### Step 4: First Windows boot
68
+
### Step 4: Boot Windows for the first time
67
69
68
70
Step 4 executes the Windows installation. It boots the VM with installation media, runs the automated Windows setup, and completes the initial configuration. The result is a fully installed and configured Windows on Arm VM.
69
71
@@ -93,7 +95,7 @@ For storage, the default VM disk size is 40GB in QCOW2 format. The available dis
93
95
94
96
All settings are customizable using command line arguments.
95
97
96
-
## Script Integration and Workflow
98
+
## Script integration and workflow
97
99
98
100
The create and run scripts share the same configuration files. Separating creation from execution enables you to create a VM once and then use the run script repeatedly.
Copy file name to clipboardExpand all lines: content/learning-paths/laptops-and-desktops/win11-vm-automation/vm-creation-3.md
+5-4Lines changed: 5 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -78,11 +78,12 @@ Set up a VM with English International language:
78
78
./create-win11-vm.sh all $HOME/win11-vm --language "English International"
79
79
```
80
80
81
+
81
82
## Alternative four-step creation process
82
83
83
-
The VM creation process consists of four distinct steps that can be run individually. Understanding each step helps with troubleshooting and customization.
84
+
You can run each step of the VM creation process individually. Understanding each step helps with troubleshooting and customization.
84
85
85
-
### Step 1: Create VM directory structure
86
+
### Step 1: Create the VM directory structure
86
87
87
88
```console
88
89
./create-win11-vm.sh create $HOME/win11-vm
@@ -151,7 +152,7 @@ The script uses an automated process to download Windows 11 from Microsoft's off
151
152
3. Obtain download link - Retrieves the direct download URL for Arm64
152
153
4. Download and verify - Downloads the ISO and verifies its integrity
153
154
154
-
### Step 3: Prepare VM disk
155
+
### Step 3: Prepare the VM disk
155
156
156
157
```console
157
158
./create-win11-vm.sh prepare $HOME/win11-vm
@@ -175,7 +176,7 @@ The script creates a QCOW2 disk image with these optimizations:
175
176
176
177
Important Note: If `disk.qcow2` already exists, the script will warn you that proceeding will delete the existing VM's hard drive and start over with a clean installation.
177
178
178
-
### Step 4: First boot and Windows installation
179
+
### Step 4: Boot and install Windows for the first time
Copy file name to clipboardExpand all lines: content/learning-paths/laptops-and-desktops/win11-vm-automation/vm-execution-4.md
+9-3Lines changed: 9 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,11 +12,17 @@ After your Windows 11 Arm VM is created, launching it is simple with the unified
12
12
./run-win11-vm.sh $HOME/win11-vm
13
13
```
14
14
15
-
This single command handles the entire VM startup and connection process automatically. The script performs three key steps: checks if the VM is already running, starts it in headless mode if needed, and connects you via RDP using Remmina.
15
+
This single command handles the entire VM startup and connection process automatically.
16
+
17
+
The script performs three key steps. It does the following:
18
+
19
+
- Checks if the VM is already running
20
+
- Starts the VM in headless mode if required
21
+
- Connects you through RDP using Remmina
16
22
17
23
When the virtual machine starts you will see it on your Linux desktop:
18
24
19
-

25
+

20
26
21
27
## What does the run script do?
22
28
@@ -279,4 +285,4 @@ RDP session ended
279
285
280
286
This is a known Remmina issue and does not affect VM functionality.
281
287
282
-
You have learned how to create Windows on Arm virtual machines on an Arm Linux system with QEMU and KVM. You can use these virtual machines for software development and testing. You can speedup your development tasks by using an Arm Linux desktop or server with high processor count and plenty of RAM.
288
+
You have completed the VM execution section. You now know how to run, monitor, and manage Windows on Arm virtual machines on an Arm Linux system. Keep building your skills and explore more advanced automation or troubleshooting as your next step - great work!
0 commit comments