While investigating support for Winclone for the amazing new T2 Macs (including the new 2018 MacBook Air and 2018 Mac mini), I discovered that the way Boot Camp Assistant installs Windows has changed a bit.
The Old Way (prior to T2 Macs)
- Boot Camp Assistant creates two FAT32 partitions from space on the Mac volume (APFS or HFS+). One partition for the installer files and one partition for the Boot Camp partition.
- Boot Camp Assistant copies all the files from the Windows 10 ISO to the new installer partition.
- Boot Camp Assistant downloads and copies the Windows Support software to the new installer partition. There are 3 top level items:
- $WinPEDriver$: All the drivers required for booting to the installer and for installing Windows. These are copied to Windows after install is complete.
- AutoUnattend.xml: A configuration file to define where the $WinPEDriver$ folder is, what options are shown to the user, and registry changes, and some post-install scripts.
- BootCamp: The Boot Camp drivers, apps, and installer.
- The Mac is then restarted to the installer partition and Windows is installed from the install partition to the Boot Camp partition.
- The next time the Mac boots into macOS, the installer partition is removed.
There are some other things that Boot Camp assistant does, but those are the important parts.
The new T2 macs modify this process in a pretty significant way. The WindowsSupport no longer contains the AutoUnattend.xml file to point to the drivers, and instead injects the drivers directly into boot.wim file. This requires Boot Camp Assistant to understand the internals of WIM in order to inject the driver (which is normally done by the Microsoft DISM tool). In fact, in the BootCamp\Drivers\Apple folder, there is a new file called BCWim.bin. Opening it with HexFiend shows a new signature for the file: APWIM. I assume this means Apple WIM format. A Windows WIM file has the file signature of MSWIM:
I suspect that Apple moved to injecting the drivers to the boot.wim so that the drivers are available earlier in the boot process. Windows needs these drivers for the SSD for initial boot.
I discovered this change when updating the Resolving INACCESSIBLE_BOOT_DEVICE Error after restoring Winclone image article for the new Macs. The Apple T2 co-processor manages the internal SSD in the new Macs, so in order to migrate Windows from an older Mac to one of the new T2 Macs, the AppleSSD driver needs to be injected into the restored Windows. The process we recommend is to boot from a USB flash drive and inject the driver. However, the process we outlined for booting to an external USB flash drive did not load the AppleSSD driver due to the lack of the AutoUnattend.xml, and injecting the AppleSSD driver to the USB flash drive would require another Windows machine.
A better solution is to add in an AutoUnattend.xml back in:
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="windowsPE"> <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UserData> <ProductKey> <WillShowUI>Always</WillShowUI> </ProductKey> </UserData> </component> <component name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <DriverPaths> <PathAndCredentials wcm:keyValue="1" wcm:action="add"> <Path>$WinPEDriver$</Path> </PathAndCredentials> </DriverPaths> </component> </settings> </unattend>
The drivers will load correctly (except for IntelMEI, which can be removed from the drivers folder).
Read all about the process in the updated Create a Windows 10 Bootable USB Flash Drive on a Mac article.
If you just bought a new MacBook Air or Mac Mini, Winclone 7 is a great way to migrate and backup your Boot Camp partition.