[ad_1]
I was trying out Parallels Desktop 18’s new feature that allows it to automatically download Windows 11 for ARM64 to install a new VM, and wondered how exactly that worked. Fortunately, it doesn’t take much effort to figure that out (with Fiddler to help). The basic flow is like this:
The only trick is that last step: What utility can you use to do that conversion? Parallels is using an “esd2iso” command line utility, and the UUPDump site uses one of the nastiest batch files I’ve seen in a long time. (Seriously, who writes batch files like this any more?)
But studying what that batch file does, I think it can be converted to PowerShell fairly easily, at least as long as you have the ADK installed to provide the tools you need (and run this on Windows, of course). Here’s my quick-and-dirty take on it (see the attached zip file below for the source):
So much simpler than that batch file (but it is doing quite a bit less, so I will cut it a little slack — the batch file also does all sorts of things to merge ESD files, remove apps, apply updates, etc., none of which I really need for this). So what does this do? It extracts the first image index from the downloaded ESD file into a temporary folder. This image contains the files needed for boot media:
Next, it exports the third image from the same ESD file into Sourcesboot.wim in that same temporary folder. This image contains Windows PE and the setup files for doing the Windows 11 install:
Now we need to export the OS image itself. Since this particular ESD file contains three separate OSes, we need to pick the one we want. In this case, since I wanted Windows 11 Pro, I chose index 6:
If you want a different image, change the $osImage and $osImageName variables at the top of the script.
With everything exported into the right place (the temporary folder), now we just need to bundle it up into a bootable ISO. The whole process is pretty quick (faster than downloading the ESD file). Once it’s done, you’ll end up with an ISO file that you can use with VMware Fusion:
Make sure you press a key to boot (or change the “efisys.bin” to “efisys_noprompt.bin” in the script so it doesn’t prompt, but then you better have the boot order right to prevent a boot loop, or eject the ISO at the right time). Once you do that, you should see Windows 11 setup start:
In this case, I pressed Shift-F10 to open a command prompt, then ran “winver” so that I could confirm that it did install Windows 11 Pro, which is what I intended.
Oddly enough, this same ISO doesn’t work with Parallels:
That “Select Windows edition” drop-down list is empty, so it won’t let me proceed. So there’s something that Parallels is doing to enumerate the list of images available in the ISO that my script didn’t deal with. VMware Fusion doesn’t care, it just takes the ISO and tries to boot it, so it works fine. Since Parallels can do the equivalent work behind the scenes, this isn’t the end of the world.
Now if Microsoft would just provide a more obvious way to get ISOs for Windows 11 ARM64 VMs, we wouldn’t have to go through such hack-ish processes. But until then, have fun…
Attachment: esd2iso.zip
[ad_2]
Source link