VirtualBox and Windows 10 on Linux

VirtualBoxVirtualBox allows users of non-Windows machines to run Windows 10 virtually. While Microsoft has people fixating on running Linux with the Windows Subsystem for Linux (WSL), like it’s something special, Linux users have been doing it in reverse for much longer.

While I’m writing about installing Windows 10 in VirtualBox, the same instructions will probably work with Windows 11. I can’t test that theory because I don’t have a computer that runs Windows 11. Having said that, I no longer run Windows anything, with or without VirtualBox. These instructions are merely for posterity, or in case I change my mind for some reason.

Install VirtualBox

You can install it in one of two ways. You can use the version from your distribution’s repositories, or you can install it from the website itself. Either way should work as well as the other. Once you install it, you need to add your user to the VirtualBox group. Some of its functions won’t work right, or at all, unless you do.

sudo usermod -a -G vboxusers $USER

Getting the Windows 10 ISO File

As long as you’re not running Windows (or have modified your user agent with an extension or add-on), you can download the ISO file directly from:

https://www.microsoft.com/en-us/software-download/windows10ISO

The Windows 11 ISO is available from here, by the way:

https://www.microsoft.com/en-us/software-download/windows11

Create the Windows 10 Machine

If you want a licensed copy of Windows 10 on a machine that previously ran it, you need to do things in order. Create the machine, but don’t install the software. Allocate at least 2 gigabytes of memory and at least 50 gigabytes of drive space. When assigned as dynamic, it won’t use that much drive space anyway. After you create the machine, check the directory name using your file manager. You need to create a file from the physical computer’s firmware:

sudo cat /sys/firmware/acpi/tables/MSDM > "/home/username/VirtualBox VMs/win10/msdm.bin"

You have to change the “username” part, of course, as well as “win10” with whatever appears in the directory. If you want to view the license key, you can “cat” that bin file. Next, you have to pass that information to VirtualBox:

VBoxManage setextradata "win10" "VBoxInternal/Devices/acpi/0/Config/CustomTable" "home/username/VirtualBox VMs/win10/msdm.bin"

Again, you have to change the “username” part, as well as the “win10” parts.

Install Windows 10 in VirtualBox

If you’ve done the preceding steps, you won’t be asked for a product key while installing Windows 10. If you’re still asked for one, it may be because you’ve done this more than once. You have to tell Microsoft you’re using a different drive if you have difficulty activating Windows after you’re all done.

This routine gives you a licensed copy of Windows 10 in VirtualBox. You can run an unlicensed version, but you can’t personalize it, and you can’t update it with the Microsoft updater. I had a licensed copy of Windows 10 in a VirtualBox machine for years. The only thing I ever did with it was to fire it up and let it update once a month. It seems like I had to replace that virtual machine once a year because of a crappy Windows update. A few months ago, I got tired of that routine and dumped it altogether.

Image by Oracle Corporation, GPLv2, via Wikimedia Commons

Leave a Comment