If a variable named ResetNVRam
exists at boot time (its value doesn't matter), both VSS1 and VSS2 are completely erased
Looking at the darwin-xnu code, it seems a
ResetNVRam=1_OR_WHATEVER_NONZERO
boot argument can also be used instead of setting this as an NVRAM Variable. Interestingly, there is an additional option ...
ObliterateNVRam=1_OR_WHATEVER_NONZERO
.
ResetNVRam
appears to flush a "systemDict" if it is not NULL and then flushes a "commonDict" while
ObliterateNVRam
appears to create a new "systemDict" store altogether if it is not NULL. If "systemDict" is NULL, it does the same on "commonDict", which is skipped otherwise. The new stores created are sized to match the allowed max size of the current store.
Such multiple stores didn't sound like something a cMP would support so I checked and found that the
ObliterateNVRam
option was only added to the kernel sometime in 2020. The kernel code is current up to last year, 2021
The good news is that there is a comment that running it on some unknown unit identified by a code basically bricks that unit and they are first checking whether the NVRAM can be obliterated before running this.
The bad news is that the kernel code is only current as of 2021 and the mystery "savior" unit, Trashcan perhaps, may have since been dropped and the kernel updated, or is due to be updated, to assume everything it is running on has NVRAM that can be obliterated. You run an update one day and your NVRAM gets obliterated ... literally.
Caveat Emptor to those running the latest and greatest on their legacy units!
Best thing to do is to get a sacrificial MATT Card and always run with this in place in such cases.
I wonder whether OpenCore can intercept and nullify attempts to set this though.