Installing Windows 11 on MacBook M1 (ARM64)

Damilola Omoyiwola
7 min readApr 16, 2023

--

Windows 11 Virtual Machine on UTM

Recently, I needed to set up a few virtual machines (VMs) on my Mac M1 and Windows 11 happened to be part. The very first virtualisation product that I learnt about was VirtualBox. While I tried to install Kali Linux—as my first VM setup, I ran into issues. I did extensive research but to no avail. Then, I discovered M1 does not support VirtualBox but UTM.

Let’s understand a few terminologies before delving into the installation process.

UTM
Employs Apple’s Hypervisor virtualization framework to run ARM64 operating systems on Apple Silicon at near-native speeds. It lets you run Windows 10 or higher, Ubuntu, or macOS(*) fully virtualized with maximum performance.

QEMU
A machine emulator that can run operating systems and programs for one machine on a different machine. It uses the hardware virtualisation technology to virtualise guests.

*In short, UTM is the GUI on top of QEMU for MacBooks.

Overview

We need these in order to get Windows 11 running as a virtual machine:

  1. Homebrew
  2. QEMU
  3. UTM
  4. Windows 11 VHDX Image
  5. Create the Windows 11 VM

1. Installing Homebrew

Note: If you have HomeBrew installed, kindly proceed to the next step.

Open your Terminal and paste the following to install Homebrew:
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. Installing QEMU

Once the Homebrew installation is done, paste the following into your Terminal: brew install qemu to install QEMU.

3. Installing UTM

Download the UTM .dmg file from the official website. Clicking the Download button gives you the free version while Mac App Store offers it at a price.

UTM official website
UTM Official Website

Double-click the downloaded file and drag the icon into the Application icon. The installation will then, proceed.

4. Downloading Windows 11 VHDX Image

There are a few resources where Windows 11 VHDX images can be downloaded but trust me, I found the official website more reliable and easier once you follow the process.

  1. Make sure to register for the Windows Insider Program
  2. Once the above step is done, click here to download the Windows Insider Preview ARM64
  • On the page, the default download tip is to select the Dev Channel version but in this article, it is advised to select the Canary Channel. Thanks to @wrmack for pointing this out.
  • Confirm the Product Language

Note: the image size is pretty large—about 10GB. 👀

5. Creating Windows 11 VM on UTM

Now, this is the real deal but please calm down 😅. I will attach images to most of the steps for better visualisation and understanding.

  1. Launch your UTM application, and click “Create a New Virtual Machine”.
  2. Select “Virtualize”
  3. Select “Windows” as the Operating System
  4. Make sure “Install Windows 10 or higher” and “Install drivers and SPICE tools” are checked as shown below.

Check the “Import VHDX Image”. Make sure to add the path to the downloaded Windows 11 VHDX file.

5. Increase your Memory to 4GB: 4096MB if not done automatically. Leave the CPU Cores to Default.

6. Leave the Shared Directory as it is. If needed, it could be modified on the Settings page later.

7. Rename your VM and check the “Open VM Settings”, click “Save” to create the VM, and this will immediately open the settings page.

8. Make sure the contents of the images below conform with what you have especially in the System, QEMU, Display, Network, and Drives tabs. Click “Save” when you are done.

⚠️ While Windows 11 is being installed, to avoid being stuck on the page below, please consider step 9 very carefully.

9. Click the play icon to start the VM.

Once the VM starts to boot,

  • press Shift + fn + F10 to launch the Terminal
  • type cd oobe, press enter
  • type bypassnro, press enter

You should see Operation was completed successfully in a flash while the Terminal exits.

Note: This would show this screen while installing Windows 11 👇 and you would have the option to skip the Network Connection step. When you get to this screen, just click the “I don’t have internet” option to proceed.

10. When the Terminal exits, it will reboot and start the Windows 11 installation process. Follow the on-screen instructions.

Hmmm… Well done! 👏 👏

Once Windows 11 has been successfully installed, open your Microsoft Edge browser to see if you can access the internet. As seen below, mine did not connect.

So, this takes us to install the SPICE tools that were initially mounted during the creation of the VM. You can find it here as shown below:

Click the Application file—mine is spice-guest-tools-0.164 to install it. Follow the on-screen instructions.

Check back your browser and you will have access to the internet.

Yay! 💃 💃 We have completed the installation of the Windows 11 VM on UTM.

Possible Problems

I would not say this process was as easy as it is written because I encountered several issues and retried the whole VM creation 3 times before it was a success.

  1. If you see this page during the installation, it means you had an oversight in the warning stated above. 😃 Kindly check back on Step 9 to fix it. However, you would definetly need to delete the VM and start the process again. 🤦‍♀

2. This page shows up after VM creation once you start the VM. Close the VM, and make sure that the virtio-ramfb-gl (GPU Supported) is selected under Display tab in Settings.

3. This page also shows up after VM creation once you start the VM. Close the VM, and make sure that the UEFI Boot is checked in QEMU tab in Settings.

4. While I tried to follow the whole process on another MacBook M1, I encountered this error after the bypassnro operation on terminal:

Fix:

  • click OK. Then, stop the VM and restart it
  • while booting, press Shift + fn + F10 to launch the Terminal
  • type regedit , press enter and the image below will show up

Make sure to open the right directory:
HKEY_LOCAL_MACHINE/SYSTEM/Setup/Status/ChildCompletion

  • double-click the setup.exe and change any value to 3, click OK
  • close the Registry Editor and terminal, then, click OK on the error page to exit it
  • the windows will now boot properly

You could join the UTM Discord community if you have any issue—aside the ones noted in this article—in order to get help.

Reference

https://www.youtube.com/watch?v=FWT5RGt26Ag&t=1s

--

--