I did this to see if it might be possible to install and run Big Sur
without disabling SIP or ARV, for machines which don't need kext patches.
(The answer turned out to be yes!)
Code contributed by Ausdauersportler. I made some minor code formatting
changes and recompressed the kext zip file using p7zip to make it a little
smaller. In the future I might split the zip file up, to make it easier
to update individual kexts.
Related to pull request #54. Thanks to treee111 for their feedback.
(I doubt enough users are renaming their installer USBs to justify
specifically calling it out here.)
This modifies micropatcher.sh to copy the kmutil binaries onto the USB
and modifies unpatch.sh to remove them.
I'm not sure if I'll add any options to (un)patch-kexts.sh now, but
at least I might be able to give custom instructions on the MacRumors
forum thread or something if needed, for the moment.
kmutil in beta 9 shows far less informative error messages. Big Sur
beta 8's kmutil *will* be needed in the future for troubleshooting
purposes. I still need to modify (un)patch-kexts.sh to make use of this,
and that's probably not happening in this release, but it's a certainty
that these will be needed so I may as well add them now. (Well, maybe
only one is actually necessary, but I'll include both, for now at least.)
In my own use on my Early 2011 MacBook Pro, I feel like Increase Contrast
made things faster. I don't have benchmarks to prove it, but I think
it might still be worth suggesting for people to try.
Thanks to thatsmeonlyme on the MacRumors Forums for suggesting that
this step needed improvement. I decided to improve it a different way,
but let's see how this works out. (Eventually I need to make patch-kexts.sh
easier to use, but there are other things I want to fix first, so hopefully
this will be a sufficient stopgap measure.)
The pattnrn that was being used to avoid the BCM5701 patch on
beta 1 & 2 posed a serious risk of accidentally matching the build
number on a GM seed or the final release, so make it more precise.
As of beta 9 (although maybe the change actually happened in beta 7,
I'll have to check later), "csrutil disable" now sets the first byte
to 0x7f, not 0x77. So, to properly disable SIP, setvars needs to
adopt the same change.
This change just changes the source. The binaries will be updated in
another commit.
As of this writing, I'm actually not done testing it with beta 9 yet,
but it has gotten far enough in the installation process that I would
be very surprised if it fails.
I'll wait until testing is done -- I think it should take less than
an hour -- then, if it succeeds, I'll merge this into the main branch
and release it.
Probably the last update before I bump the version number and release this.
If there's anything I forgot, I'll add it to the README for v0.3.1 or
whatever.
There are too many things that can subtly and partially undo setvars's
nvram changes, so (nearly) everyone should just redo this step each time
they install.
(Maybe I'll backtrack on this if I can find a way to succinctly express
when it's OK to skip this step, but everything I can think of is
convoluted, because the facts of the matter are a bit complicated.)