Code:
root@Barrys-MacBook-Pro ~ # softwareupdate -da
Software Update Tool
Finding available software
Downloading macOS Big Sur Beta 7
Downloading: 100.00%
Failed to download & prepare update: Error Domain=SUMacControllerError Code=7740 "[SUMacControllerErrorPrepareFailed=7740] Failed to perform Prepare operation: [MobileSoftwareUpdateErrorDomain(MSU):MSU_ERR_FILESYSTEM_DOESNT_VERIFY(3)_1_MobileSoftwareUpdateBOMErrorDomain:1|FullReplacementRequired|]" UserInfo={SUMacControllerErrorIndicationsSummary=|FullReplacementRequired|, SUMacControllerErrorIndicationsMask=2, SUMacControllerErrorIndicationsDescription=-> Full replacement is required [as opposed to incremental patch]., NSUnderlyingError=0x7f8f9f71da30 {Error Domain=MobileSoftwareUpdateErrorDomain Code=3 "'./System/Library/Extensions/AppleHDA.kext/Contents/Info.plist' did not verify and is not on the exception list." UserInfo={target_update=20A5374g, NSLocalizedDescription='./System/Library/Extensions/AppleHDA.kext/Contents/Info.plist' did not verify and is not on the exception list., NSUnderlyingError=0x7f8f9f704700 {Error Domain=MobileSoftwareUpdateBOMErrorDomain Code=1 "contents of '/System/Volumes/Update/mnt1/System/Library/Extensions/AppleHDA.kext/Contents/Info.plist' don't match bom (2b6a38f2 vs 4ddc9ed8)" UserInfo={NSLocalizedDescription=contents of '/System/Volumes/Update/mnt1/System/Library/Extensions/AppleHDA.kext/Contents/Info.plist' don't match bom (2b6a38f2 vs 4ddc9ed8)}}, MSUFullReplacementRecommened=true}}, NSDebugDescription=[SUMacControllerErrorPrepareFailed=7740] Failed to perform Prepare operation: [MobileSoftwareUpdateErrorDomain(MSU):MSU_ERR_FILESYSTEM_DOESNT_VERIFY(3)_1_MobileSoftwareUpdateBOMErrorDomain:1|FullReplacementRequired|], NSLocalizedDescription=Failed to prepare the software update. Please try again.}
root@Barrys-MacBook-Pro ~ #
Well, I guess that's some kind of progress.
Actually, if you look at this error message closely enough, it reveals how Apple's own updater avoids the mount -66 error! The updater mounts the underlying system volume at
/System/Volumes/Update/mnt1
. (OK, to be honest, the error message alone wasn't necessarily enough for me to figure that out, but it was still a big hint that put me on the right track.)
I quickly modified unpatch-kexts.sh to uninstall the kexts from the underlying system volume without removing them from Preboot or creating a new snapshot. Let's see how that goes... Oh. Wow. It's somehow
undoing the kext uninstallation
then blowing up with the same error. (Maybe it synchronizes the contents of the underlying system volume with the currently booted snapshot
then begins the integrity check? That seems like the most rational explanation of what I'm seeing.)
I'll have to come back to this later, but what I've already seen so far is fascinating.