OcAppleKernelLib: Support for PageableKC/SysKC injection #385
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In Ventura, Apple has decided to remove kext binaries from the root volume and require KDK installation in order to generate a new PageableKC/SysKC via
kmutil
.The Auxiliary KC remains able to be created without the need of KDK installation, however this is not viable for use cases where kexts in the SysKC must be removed or supplanted.
This is particularly problematic for projects such as OpenCore Legacy Patcher where automation is key and the KDK download is locked behind Apple ID authentication.
Such a feature as this, aside from solving the above problem, opens the door to "vanilla" injection of kexts which have linkage requirements for other kexts which are in the SysKC (e.g. IOGraphicsFamily for a hypothetical fully-featured framebuffer driver from MacHyperVSupport).
While this feature is meant to run in primarily non-UEFI environments1, it ideally should also be functional in a UEFI2 (given a SysKC separately), even if not exposed through the configuration.
Design Goals
There is no mechanism in UEFI to link an APFS Preboot volume folder (where the BootKC resides) to its paired System volume (where the SysKC resides).
Further, exposing a modified KC in its entirety to XNU's OSKext would be cumbersome and likely waste memory.