Installing Windows 11 with a half-working PC and a Mac laptop

In an attempt to not become That Guy, this is my tale of creating and using Windows 11 install media with a Mac.

The short version, as of writing this in May of 2024, is to use WinDiskWriter to create a bootable USB drive from an Apple Silicon device.

Because “a long time” is measured in days on the Internet, this was everything involved:

  • Windows 11 23H2 x64 ISO, English
    • SHA256: 36DE5ECB7A0DAA58DCE68C03B9465A543ED0F5498AA8AE60AB45FB7C8C4AE402
  • 2020 MacBook Air with an Apple M1 CPU
  • macOS Sonoma 14.5
  • WinDiskWriter 1.3
  • Some USB stick

During the latter half of installation where Windows begins to look more Windows-y, it will require an Internet connection to continue. Previous versions of Windows with this requirement — later releases of 10 and earlier releases of 11 — had an option for “I don’t have internet” which forces Windows to (correctly) create a local account instead of pulling down a Microsoft account from the Internet.

This option is only hidden in 23H2, and creating a local account requires:

  • Bringing up the Command Prompt with “Shift + F10”
  • Clicking on the new window to bring it into focus
  • Typing in “OOBE\BYPASSNRO

This will restart the more Windows-y half of installation, and now the screen prompting for Internet access will have the “I don’t have internet” option present.

Motherboard Issues

I use two machines daily. One is a Mac laptop, and the other is a Windows PC. The latter does more of the heavy lifting when it comes to storing and processing photos, and is otherwise used to play games.

The motherboard, a Z690I AORUS ULTRA (their caps), began having issues immediately and was so bad that it was all but recalled several months after launch. I missed this notice until the latter half of 2022, ultimately ignoring it because I had no desire to disassemble everything and be PC-less after working around a practically non-functional LAN port by using a USB adapter to wire the machine to the network. It was “practically” non-functional because only the “10” half of the the 10/100 Ethernet worked.

Two years later the second of two NVME drives stopped working. After ordering a replacement drive and an enclosure to see if the original drive was actually broken, it became clear that it was the slot on the motherboard that had stopped working.

Admittedly, I’ve not followed all the recommendations for that motherboard, an ITX product crammed into a Small Form Factor case. A heatsink is supposed to sit on top of a secondary board that mounts the two M.2 slots, and that heatsink was kept in a box because it got in the way of the massive CPU heatsink that takes up the majority of the volume of the case. Temperatures were still very respectable and both drives ran well within the lower half of their operating temperatures, even if the second slot was exposed to the hot air blown through a GPU. But it was the slot, not the drive, that failed.

So I ordered a new motherboard, an ASRock Z690M-ITX/ax. It was the cheapest I could stomach now that most of the enthusiast world had moved on from DDR4 to DDR5 RAM.

Windows 11

While waiting for that motherboard I decided to upgrade from Windows 10 to 11 on the current build with the broken LAN port and the busted M.2 slot. I’d heard all of the negatives already, but one of the upsides was supposedly better support for my more recent Intel CPU and how tasks were scheduled across its different cores. Windows 10’s days are numbered anyway, so I figured I’d do the upgrade and in the process upgrade my license to 11, a license with a product key that was originally printed on a sticker on a Windows 7 DVD case.

My plan was to ultimately do a clean install, because Windows has always been at its best without the years of accumulated services that begin to run in the background that never get cleaned up after forgetting everything I’ve actually installed on the device.

My annoyances are mostly limited to the new, less functional Start Menu, and the more nested context menu when right-clicking on items in Explorer. I’d previously locked down Windows 10 regarding security and privacy settings, and those settings were carried over during the in-place upgrade with the expected exception of those things that were actually new to Windows 11.

When the new motherboard arrived I worked on reassembling the Ship of Theseus below the desk. Windows 11 picked up the new changes and, as expected, deactivated itself because of the new hardware configuration. So I clicked around. A lot. And signed into my Microsoft account several times in as many ways. At some point Windows 11 on this new configuration was successfully activated with that very old Windows 7-era key. I wanted this done so that after doing a clean install Windows would phone home and recognize the same configuration and activate itself.

USBs, UEFIs, ISOs, and Macs

I wanted to do a clean install, and that meant grabbing the ISO from Microsoft’s website, sticking it onto a USB device because internal CD/DVD drives are an obscene rarity these days, and booting from it. This has been the go-to method for years regardless of device or OS: boot into an OS installer, wipe the drives, and install.

It didn’t go to plan.

First of all, searching for instructions on creating a bootable USB device using a Mac brings up a lot of very similar results. These must have all been written using a previous release of the Windows 11 ISO or were never tested up to the point that Windows was actually installed, because none of the following worked for me:

  • Terminal / Homebrew / wimlib to copy files over to a USB device
  • UNetbootin, which I’ve previously used for bootable Linux drives
  • Etcher, which I’ve previously used for Raspberry Pi images

And I think all of these failed because of a combination of UEFI and FAT32 requirements. These aren’t directly related, but the Windows 11 installation process has some interesting needs.

Windows 11 installation requires Secure Boot. This is a feature in more modern motherboards that support UEFI. UEFI is practically the successor to BIOS, even if “BIOS” is still used to refer to that thing that happens before an OS loads. The two have different features, and Secure Boot is a feature of UEFI.

For a drive to be bootable from UEFI it needs to be partitioned using the GUID Partition Table (GPT) format. This is different from Master Boot Record (MBR), a very old partitioning scheme that is also associated with the very old FAT32 file system format. “MS-DOS (FAT)” in macOS’s Disk Utility is the equivalent of FAT32.

FAT32 has a file size limit of around 4 GB, a limit virtually defined by the “32” in FAT32 standing for the 32-bit number used to reference files. 4 GB is 2^32 bytes, so getting files larger than 4 GB into a FAT32 file system involves splitting them into smaller files. One of the files in the Windows 11 image is larger than this limit.

Thus, that install USB needs to use both GPT and FAT32. It’s easy enough to set up that scenario with Disk Utility, and then use any of the three methods above to get files onto that USB drive. But nothing ever worked. Anything that wasn’t both GPT and FAT32 wasn’t a valid boot target. Those that were, for whatever reason, showed two partitions to boot from, the first of which was always apparently empty. Once the install process did boot it never made it past formatting and partitioning the drives on the target device. Installation could never find the partition to install to despite what was just done and what was updated on the screen. If installation could access that partition, it would fail after copying files because of issues restarting the PC, presumably related to that Secure Boot requirement.

Frustrated, I began scouring GitHub for solutions. I really wanted to do a “clean” clean install, without any patching. WinDiskWriter does provide patching options in order to get Windows 11 onto systems it doesn’t officially support, but this is an option. I had nothing else to lose besides the time involved getting a Windows machine or VM and using that to create installation media. Thankfully, WinDiskWriter did the trick.

I’m not sure what WinDiskWriter did differently. It also uses wimlib, but I haven’t poked around enough in its source to see what it does that the Terminal / wimlib method does differently. I have to assume it handles mounting and partitioning devices differently enough, as there was only one target to boot from on the finalized media.

No Internet Required

Microsoft, in that Sisyphean task of infinite growth, really tries to upsell their services and products through Windows. Officially, Windows 11 23H2 requires an Internet connection to get through installation, and I’d argue this completely defeats the purpose of having a distributable image to begin with.

Previously, in both Windows 11 and 10, there was a link for “I don’t have internet” that you could click on whenever the “Internet Required” step appeared. Choosing this option creates a local Windows account instead of a Microsoft account. The latter is not a local account linked to a Microsoft account, but the Microsoft account itself. Which may have a random password because it was generated using a password manager. And which may have a cringe-worthy username because it was created during the formative years of Xbox Live, now forever there to haunt you during Sign In.

In 23H2 this is hidden. Getting around it involves bringing up the Command Prompt with “Shift + F10”. Then clicking on the new window to bring it into focus. Then typing in “OOBE\BYPASSNRO”. I’m not quite sure what “NRO” stands for, but the prefix is probably “Out Of Box Experience”. This will restart the more Windows-y part of installation, but now that step will have the “I don’t have internet” option present.

Then you have to get through account setup and provide backup security questions, which is another issue entirely, but at this point I just wanted installation over and done with and didn’t want to spend more energy being frustrated at terrible practices.

Clean Install

Now I have a clean install of Windows 11 which successfully activated itself. I’m not going to answer whether it’s worth the upgrade or not, because I honestly don’t know. But I do know that Windows 10 has a little more than a year left before it is officially End-of-Lifed, unless Microsoft decides to drag things out as it did with Windows XP and Internet Explorer. Your mileage may very with Windows 11, but if you’re trying to create install media with a Mac and all of the other suggestions on the Internet failed to work, hopefully this one did.