Big Sur Micropatcher Versions Save

A primitive USB patcher for installing macOS Big Sur on unsupported Macs

v0.5.1

3 years ago
  • Updated patches for 2011 iMacs, thanks to Ausdauersportler.
  • A couple of patch-kexts.sh bug fixes. If patch-kexts.sh gave you an "internal error" during WiFi patching in v0.5.0, then it should be fixed in this release. (And if it is somehow not fixed, then the error message will be more informative.)
  • Considerable README updates, both to account for various recent patcher changes and to account for the fact that Big Sur is no longer in beta.

v0.5.0

3 years ago

If you have already installed Big Sur successfully using a previous version of Big Sur Micropatcher, you do not need to update immediately, but I would suggest updating the patcher before upgrading to any future Big Sur betas or releases.

  • unpatch-kexts.sh has been replaced by a -u option for patch-kexts.sh. This way, the unpatching can now reuse as much of the patching code as possible. As a neat effect of the increased code reuse, kext unpatching no longer requires booting from the installer USB first.
  • patch-kexts.sh now automatically detects whether the Mac has an 802.11ac WiFi card and, if so, skips installation of the WiFi patch. Thanks to Ausdauersportler for creating the initial implementation of this feature. (My implementation of this feature is not 100% identical, but it is highly similar and based on Ausdauersportler's.)
  • patch-kexts.sh has undergone some code refactoring. In the process, error checking was improved considerably and several minor bugs were fixed.
  • A patch-kexts.sh bug has been fixed that could, under some circumstances, cause kernel panics during boot on Big Sur beta 10 (and probably subsequent releases) on 2011 or earlier Macs. (As a side effect, LegacyUSBInjector.kext may no longer work properly on beta 4-9. However, it works on beta 10.)
  • LegacyUSBInjector.kext has been updated to account for a USB-related kernel change that happened in Big Sur beta 3.
  • The README has been updated.

v0.4.4

3 years ago

This release is basically a grab bag of bug fixes and under-the-hood improvements. There will be at least one more release in the next few days, so most existing users do not need to update to this release. (If you use remount-sysvol.sh or you are experimenting with kext patches beyond what patch-kexts.sh normally does, I would suggest updating, however.)

v0.4.3

3 years ago
  • Fix 2011 iMac Metal GPU patches (the combination of beta 10 and micropatcher v0.4.2 caused kernel panics). Also fix unpatch-kexts.sh so it fully removes the 2011 iMac Metal GPU patches. Thanks to Ausdauersportler for these fixes.
  • Various README updates.
  • patch-kexts.sh finally has automatic Mac model detection. (This feature is not yet documented in the README. The old command line options like --2010 and --2011 override the automatic model detection, so they still work -- in fact, they are still needed if a Big Sur installation is being patched on one Mac before it is run on another Mac.) Note that the --iMac option must still be specified manually for 2011 iMacs with Metal GPUs.

v0.4.2

3 years ago
  • Fixed issue #73 (where patch-kexts.sh fails on beta 10 and causes kernel panics).
  • Fixed a bug that would cause patch-kexts.sh to fail on Big Sur GM or final release.
  • Attempted fix for issue #68 (LegacyUSBInjector not working, basically). I have tested that this fix doesn't seem to cause anything to break, but I have not yet tested that it makes LegacyUSBInjector work again. Getting this release done for issue #73 is urgent enough to postpone full testing for this issue.
  • More 2011 iMac Metal GPU fixes thanks to Ausdauersportler.

v0.4.1

3 years ago

This release fixes bugs in the 2011 --iMac Metal GPU option in patch-kexts.sh (GitHub issue #69). Thanks again to Ausdauersportler for the code contribution. There are also some corrections and updates in the README.

Note that there are USB problems on many 2010 and earlier Macs, which are being tracked as GitHub issue #68. I plan to fix these problems in another release, perhaps later this week.

v0.4.0

3 years ago

There are many changes in this release, mostly small changes I suppose, but different changes will be very important to different groups of users. Most existing users do not urgently need the improvements or bug fixes in this release and can wait until the next Big Sur beta (or GM) before updating. When it is time to update to the next Big Sur build, make sure not to skip steps 7 or 9, especially on Late 2013 iMacs.

patch-kexts.sh now has a new --iMac command line option that adds the necessary kext patches for (2011) iMacs which have been upgraded with Metal GPUs. At this time, the --iMac and --2011 command line options must be used together, and the --iMac option only works when running patch-kexts.sh on a live Big Sur installation, not when booted from the installer USB. Thanks to Ausdauersportler for the code contribution.

patch-kexts.sh has an improved check for SIP/ARV that is less prone to false negatives. (Thanks to jackluke for reporting the bug.) Also, there is a new --force option to override the check.

patch-kexts.sh now has a --wifi= option for choosing a WiFi kext patch. It defaults to --wifi=mojave-hybrid (the one that has been used from v0.2.1 onward), but --wifi=hv12v-old (used in micropatcher v0.0.6-v0.0.20) and --wifi=hv12v-new (used in micropatcher v0.1.0-v0.2.0) are also available.

patch-kexts.sh also adds a --old-kmutil option that uses the kmutil from Big Sur beta 8 instead of the one that is installed on the system. This can help with troubleshooting problems with kext patches, especially during patch development. This option is currently not documented in the README. Eventually I will document it, but future patcher releases may change the option's name or other implementation details first.

If patch-kexts.sh is run on a system volume snapshot, it now mounts the underlying volume at /System/Volumes/Update/mnt1, just like Apple's own delta updaters.

remount-sysvol.sh and rebuild-kc.sh have been updated with all of the applicable patch-kexts.sh bug fixes from this release and the last several releases, so they now work again.

There are new variants of the setvars EFI program which enable, rather than disable, SIP and ARV (authenticated-root). install-setvars.sh has been updated to automatically use the new variants on Late 2013 iMacs, but there are also command line options for overriding the Mac model detection. The trampoline has been updated to leave APFS volume sealing enabled if both SIP and ARV are enabled. The end result is that, on Late 2013 iMacs, SIP and ARV stay enabled the entire time during and after the installation process, just like on a supported Mac. (Users of other 2012/2013 Macs which have been upgraded to 802.11ac WiFi cards may want to use the -e option with install-setvars.sh in order to get the same security benefits as Late 2013 iMac users.)

The reenable-animations.sh and disable-animations.sh scripts have been moved from the misc-scripts directory to the payloads directory. Thus, they are now copied onto the installer USB, which makes them more conveniently accessible for disabling animations on non-Metal Macs after finishing the Big Sur Setup Assistant.

Finally, there have been many updates to the README.

v0.3.3

3 years ago

This is a very minor release. I considered calling it v0.3.2a. If you have already installed and patched Big Sur beta 9 successfully, there is no need to update to this patcher release.

The biggest change in this release is actually the improvements to the README; thanks in particular to thatsmeonlyme and treee111 for their feedback. Also, a bug has been fixed in error handling code in install-setvars.sh thanks to Ben Sova. In addition, if micropatcher.sh is run on a USB that already has some version of this patch, it will automatically use unpatch.sh before continuing, as opposed to the previous behavior of asking the user to run unpatch.sh. Finally, there are some more code cleanups and preparations for future patcher improvements.

v0.3.2

3 years ago

This release mainly has small fixes. In particular, Big Sur beta 9 disables SIP by storing a different value in nvram than previous macOS releases or Big Sur betas 1-6. The setvars EFI program has been updated to use the new value, and patch-kexts.sh has been updated to recognize the new value as a valid configuration. Other bugs in patch-kexts.sh were fixed at the same time, particularly a version detection bug that had the potential to cause Ethernet to stop working in the final Big Sur release on 2011 Macs.

Users who have already updated to beta 9 using v0.3.1 should download v0.3.2, then run unpatch.sh, micropatcher.sh, and install-setvars.sh in that order, then repeat step 9 (booting from the EFI Boot partition of the patched USB stick). For most users, no further action is needed. If patch-kexts.sh failed to make WiFi work in v0.3.1, then try that again with v0.3.2.

v0.3.1

3 years ago

This release fixes the beta 9 Language Chooser/gray screen freeze. There are no other changes in this release.

In a little more detail: Since v0.2.0, the patcher has been using a "trampoline" -- it takes the real installer app, wraps it inside a fake installer app, and then places the fake installer app where the real installer used to be. When you try to start the installer app, the fake app starts, quickly does some preparations, and then hands control over to the real app. This way, there is no need to run Terminal commands before starting the Installer, and it involves less invasive patching than other ways of accomplishing this.

The "trampoline" was structured so that it had a copy of the installer's icon and a couple other files, but it did not have analogous files for the rest of the installer app's contents. This was fine for earlier betas, but apparently the trampoline was too different from the real installer for the beta 9 recovery environment to boot properly. I modified the trampoline so that it now contains what are known as "symbolic links". This way, if any part of the recovery environment tries to access one of the installer app's component files, the symbolic links will ensure that it actually accesses the required file from within the real installer app, rather than getting an unexpected file-not-found error.