Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Didn't work for me. I have a theory though: Hypervisors expose the real processing hardware and I'm wondering if the Apple Silicon chip has an effect on this. I've been trying an M2 Pro and an M5 Pro. What chip where you using when you got that update to work?So, interestingly I was curious about whether 26.7.1 would solve the problem, and...
I forgot that I had a VM running the update process (from 26.6.2).
Interestingly, I got on to my computer this morning and my VM was sitting at at 26.7.1. And is seemingly responsive. My host is also 27.0.1
So, for anybody having this problem, maybe try letting the update process run overnight?
cd "/Volumes/YourDisk/Parallels/YourVM copy.macvm"
cp -p aux.bin aux.bin.bak
strings -a -t x aux.bin | grep -E '[im]Boot-[0-9]'
2401e mBoot-18000.161.1022401e mBoot-20457.1.29dd if=aux.bin of=aux.bin bs=16384 skip=9 seek=137 count=128 conv=notrunc
dd if=aux.bin of=aux.bin bs=16384 skip=137 seek=9 count=128 conv=notrunc
sysctl hw.memsize hw.memsize_usable
cp -p aux.bin.bak aux.bin
dd if=/path/to/old/aux.bin of=aux.bin bs=16384 skip=9 seek=137 count=128 conv=notrunc
a sound Parallels mitigation would be host-side:
- Add a “Prepare for macOS Update” command that cleanly shuts down, backs up aux.bin, and cold-starts the guest.
- When Tools notices an OS update being staged, automatically preserve aux.bin before the restart.
- On the next VM start, inspect aux.bin for a known-bad firmware build such as mBoot-20457.1.29.
- If detected, stop startup and offer “Restore previous VM firmware” or “Continue anyway.”
- Maintain a compatibility list and warn about affected macOS update builds.
Incredible! This worked for me. Thanks much!@AdamV2 Sure. Everything below is done on the HOST, with the VM fully shut down (not suspended), on a Finder duplicate of the VM so there is nothing to lose. Do it right after a failed attempt (black screen, then Stop), because that is when the file has both the old and the new firmware in it.
1. Open Terminal and go into the VM bundle. In Parallels the file is aux.bin inside the .macvm. In UTM it is Data/AuxiliaryStorage inside the .utm. Adjust the path to yours:
Code:cd "/Volumes/YourDisk/Parallels/YourVM copy.macvm"
2. Back the file up first. This is the undo button:
Code:cp -p aux.bin aux.bin.bak
3. Find the two firmware slots:
Code:strings -a -t x aux.bin | grep -E '[im]Boot-[0-9]'
You should get two lines, like mine:
2401e mBoot-18000.161.10
22401e mBoot-20457.1.29
The number on the left is a hex offset. Each slot starts 0x1e before the version string, so 2401e means the slot starts at 0x24000 and 22401e means 0x224000. The one with 18000.x is the OLD firmware (good), the one with 20457.x is the NEW firmware (the problem). Which slot holds which can differ between VMs. Mine had old in the first slot and new in the second; Wade Tregaskis's VM was the other way round.
4. Convert the slot starts to 16 KB blocks: 0x24000 is block 9, 0x224000 is block 137. Those are the only two values you will ever see with this layout. Now copy the old slot over the new one. skip is the OLD slot's block, seek is the NEW slot's block:
Old in slot 1, new in slot 2 (my case):
Code:dd if=aux.bin of=aux.bin bs=16384 skip=9 seek=137 count=128 conv=notrunc
New in slot 1, old in slot 2 (Wade's case):
Code:dd if=aux.bin of=aux.bin bs=16384 skip=137 seek=9 count=128 conv=notrunc
count=128 is exactly 2 MB, the size of one slot. conv=notrunc is essential; without it dd truncates the file. Nothing outside the slot is touched, which is what keeps the NVRAM variables intact. Deleting NVRAM variables or wiping NVRAM does not fix this; only the firmware bytes matter.
5. Check it worked. Run the strings line from step 3 again. Both lines should now show 18000.161.10.
6. Boot the VM. Inside the guest run:
Code:sysctl hw.memsize hw.memsize_usable
The two numbers should be within a few dozen MB of each other. If usable is around 1.8 GB the revert did not take. Then run Software Update again. For me it completed, and the guest ended up on 26.7 with the firmware still on 18000.161.10 and full memory.
If anything goes wrong at any point:
Code:cp -p aux.bin.bak aux.bin
Two cases where you should stop and ask rather than run dd: the offsets in step 3 do not end in 01e, or the two are not exactly 0x200000 apart (that means a layout I have not seen). Or step 3 shows only ONE line and it says 20457: then the old firmware is not in the file any more and you need a pre-update copy of aux.bin, from Time Machine or from a Parallels snapshot's Snapshots/{GUID}.bin, and you copy block 9 from that file instead:
Code:dd if=/path/to/old/aux.bin of=aux.bin bs=16384 skip=9 seek=137 count=128 conv=notrunc