Recently, I upgraded my wife’s 2-in-1 laptop to an SSD from a 5400RPM platter drive. The hardware installation, which is usually the tricky part on laptops, ended up being the easiest part. Installing Windows 10 ended up taking me down a road for a couple of hours filled with frustration and irritation with not only Microsoft, but ASUSTek too! Here’s my experience.
The standard installation procedure for Windows via USB for a good while has been to dd the installer ISO image onto a USB disk and load it up on your computer. This changed a little when UEFI and SecureBoot became the norm for consumer equipment. Now, it’s pretty common to have a EFI boot partition FAT32 formatted with the EFI/BOOT/BOOTX64.EFI and all associated installers in the same partition. A typical machine will boot up, read the EFI boot file and go on with it’s business. Here’s where the problem begins.
FAT32 and the install.wim
In recent versions of Windows 10, there’s a file named install.wim. This file contains the bulk of the ~5.4GB installation image, and is more than 4GB alone. Herein lies the problem! FAT32 formatted partitions can’t index a single file larger than 4GB (32 bits worth of bytes ya know?). This presents a large problem! How am I to install this OS when I can’t load the files onto a partition to load the installer?
OK, so now what? Doesn’t UEFI require a FAT32 formatted partition?
Well, as it turns out, UEFI doesn’t actually care what format the EFI files are in, so long as the firmware know how to read it. So I tried to pivot to another common format: NTFS.
Booting UEFI via an NTFS partition?
Indeed! But this didn’t prove so fruitful at first. You see, ASUSTek only saw fit to include a FAT32 driver for their EFI loader, so the NTFS drive with the Windows 10 installation files on it just was not recognized by the firmware.
At this point, I was frustrated and was asking all sorts of questions like:
- How does ASUS load their image? Are they mass cloning drives and not actually installing? (Probably)
- Does this mean there’s no hope for a clean install of Windows 10 for dear wife? (Seems so)
- Why would they only include a FAT32 driver? (Who knows!?)
After a long while of Google-Fu (ok, actually DuckDuckGo), I stumbled upon this wonderful saint of an engineer’s GitHub repo.
This repo contains the answer to my prayers. You can read all the details at the repo, but here’s the solution in a nutshell.
Create a drive with two partitions, one partition FAT32 formatted and loaded with the UEFI-NTFS EFI goodies from the linked repo.
The other partition is NTFS formatted, and contains the desired over-4GB files we want to use.
The machine firmware will ignore the NTFS partition on this drive and launch the EFI booter on the FAT32 partition. This EFI booter will in turn load an NTFS driver, hunt down the NTFS partition adjacent, and execute the /EFI/BOOT/BOOTX64.EFI from there, chainloading the Windows 10 installation.
It worked like a charm! Within minutes the Windows 10 installer was running, and I was a much happier camper, and dear wife has a much faster OS to use due to this new SSD.
And they say installing Linux is hard….