running windows 11 as a vm under unbuntu on an rpi 5

Executive Summary

I came across a post on Jeff Geerling’s blog about how to install Windows 11 as a VM on a Raspberry Pi. Being retired and with plenty of “leisure” time on my hands, I decided to follow along and see what it was like, so I set out to install the same tools using the same essential process he did. I got it to work (barely), but I wasn’t impressed with the results. It took me an entire day to get it all installed and running, only to eventually fail. In the end I deleted everything.

Installation and Setup

Before I get started, let me document my Raspberry Pi 5 setup, because it’s a little different than stock.

  • Raspberry Pi 5 Model B Rev 1.0 with up-to-date firmware
  • 8 GiB memory
  • Raspberry Pi official active cooling fan
  • Raspberry Pi M.2 HAT+
  • Timetec 512GB M.2 2242 NVMe PCIe Gen3x4 SSD
  • Ubuntu 24.04.2 for Raspberry Pi booting off the SSD

The Geerling post links to the creator and developer of the system for installing the ARM version of Windows 11, Botspot Virtual Machine, or BVM, on GitHub. While the directions for installing this is on GitHub, Geerling’s post links to a YouTube video he produced of him installing the software and getting Windows 11 running. I think that video is a bit deceptive concerning how much time it takes to get everything installed. In my case, just getting the ISO downloaded took over seven hours. Here’s a screenshot showing my desktop with System Monitor and a terminal with BVM doing its thing.

The amount of time to download Windows 11 ARM64 can be seen in the middle of the terminal, in the text section beneath “Downloading Windows 11…” There are four consecutive lines of text, with the time it took each operation timed on the far right. Totaled up, it took over seven hours to download the ISO. The download speeds are in the low hundreds of kilobytes. I’ve never seen anything that slow before, even on an old Raspberry Pi 2 or 3. Downloading the virtio drivers took another two hours. And then there was the step installing Windows 11 itself.

Even BVM warned “This will take several hours,” and it wasn’t wrong. It took several hours.

Operation

After a period of nearly 12 hours, from early in the morning until late in the evening, I managed to bring up a small Windows 11 640 x 480 window on the desktop.

I briefly tried to expand that resolution to something more useful, but this version of Windows wouldn’t allow me to change the screen resolution. You’ll note from System Monitor that I nearly exhausted swap. I closed the Windows VM at this point and increased local swap from 1 GiB to 4 GiB. One other notable difference, on Ubuntu at least you need to run bvm boot-gtk instead of bvm boot.

I did follow the BVM README and restarted the Windows 11 VM as headless in one terminal, then ran bvm connect in a second terminal. This produced the screen you see above. Desktop performance was greatly improved and the screen is a little bigger, but I don’t know what the resolution is. Unfortunately I can neither resize nor move it. That window is right smack in the middle of the desktop. I should note once again on System Monitor that swap usage is now at 1.4 GiB. It might be best to run this on a Raspberry Pi with 16 GB. I should also note that even with active cooling running (and the fan did kick in) the CPU temperatures hovered between 60° and 65° C.

Summary

I’m glad I gave this a try. But after these experiences I’m not so certain I’ll keep it on my Raspberry Pi.

Update

I let Windows 11 finish downloading its updates (see the last screenshot above), then I rebooted the Windows 11 VM. After that, headless operation no longer worked. Even bvm boot-gtk no longer worked. So the whole conglomeration was deleted from my Raspberry Pi and all used disk space (in the tens of gigabytes) was recovered. My advice: If you need to get Real Work done, instead of just “bragging rights,” then go shopping on Amazon and pick up one of the current micro PCs with Windows 11 Pro installed for around $300 and use that for your Windows 11 needs.

Links

Windows 11 Arm VMs on a Raspberry Pi, with BVM — https://www.jeffgeerling.com/blog/2025/windows-11-arm-vms-on-raspberry-pi-bvm

Botspot Virtual Machine – Windows 11 QEMU KVM on ARM Linux — https://github.com/Botspot/bvm

migrating to an nvme drive on a raspberry pi 5 — part 2

more linux musings

It’s a cold and rainy day in Florida, so I’m indoors puttering around the little computers, updating and installing into virtual machines. First up is a twelve-year-old Samsung R580 running Fedora 36.

I’m amazed that the Samsung, which is twelve years old, going on thirteen, is still fully functional. By that I mean everything, from audio to WiFi to Bluetooth to the Blue-ray drive this machine was sold with.

Here, in no particular order, are my observations.

  • Even though it still is running with Fedora 36 (Fedora 37 having been released 15 November 2022), the Linux kernel is at version 6.0.8, the same version as Fedora 37. And it boots and operates just fine. When I first installed Fedora 36 on this machine it was running with kernel 5.17.
  • The general performance is quite good. While it “only” has an Intel i5-430M, all the Linux distributions and software still work just fine on this processor which was first released January 2010. If you want an example of processor sufficiency, you need look no further than here.
  • The Samsung R580 was also released at the same time as the i5. After all this time the only repairs I’ve had to make on this notebook computer is the keyboard and the barrel jack on the side used to power and charge the computer. I upgraded the machine with a Samsung 1TB SSD back in late 2013, and it’s still going just fine itself. I spent $700 at a local Office Depot (which has since gone out of business) for my oldest daughter. When she “broke” it in 2013 I got it back and installed Ubuntu on it to recover usability. It’s been around the country, and at one point it went on a cruise with my wife and I on our 30th wedding anniversary so I could process photos taken with my Olympus E-M5. I’d say I’ve gotten my money’s worth.
  • Early next year I’m going to convert it into a testing IoT hub for home automation.

I got a wild hair and installed Alma Linus 9.1 as another KVM/QEMU virtual machine on my Linux Mint mini box. I wanted to see if it was even possible (it was obviously) and I wanted to see if I could mount the host’s Shared folder, and I did. I have thus been able to do quickly and painlessly what I can’t do with the latest version of Parallels on my MacBook Pro running macOS 16.2 (and yes, there’s a 16.2.1 update waiting in the wings at this point). I have a Parallels VM with Alma Linux 9.1 running, and the Parallels tools will not build and install on that instance. Yet when I use a free virtualization system on Linux itself, Alma Linux just installed and ran without having to do any installation of special tools within the Alma Linux 9.1 virtual instance. It’s faster and easier using KVM/QEMU/Virtual Machine Manger than it is under Parallels on macOS. A lot easier and faster. And the Alma Linux VM runs quite nicely with all its tools.

I’ve already walked away from Microsoft Windows, not because I consider Microsoft “evil,” but because I’m way tired of the advertising and other shenanigans that Microsoft practices with Windows. Microsoft’s attitude that I don’t actually own Windows but just purchased a license to use it has become anathema to me. There are many rumors that Microsoft is getting ready to pull Windows into their Azure cloud, and you will just run an instance and pay them a monthly fee for the privilege. Nope. All I will ever need to do I can do on Linux, and do it as good if not better. And if there’s an application that won’t run on Linux, then I didn’t really need that application to begin with.

I keep hanging onto Apple because the underpinnings of macOS are “real” Unix, and I’ve been enamored with Apple Silicon and consider Apple Silicon far superior to Intel/AMD processors. All of that appeals to my inner geek. But I can see a point in the near future where I wipe macOS off and install Linux on all my remaining Macs, just like I’ve removed Windows from those machines it initially came installed on.