kmutil fails when booted into OS on external drive

"kmutil load" will fail to load a 3rd party kernel extension when booted into an OS on an external drive. The same kernel extension will load fine when booting from the internal "Macintosh HD" .

"kmutil inspect" also fails with the same error message when booted using an external drive, but works fine when booting with the internal "Macintosh HD".

Both errors indicate the "kernelcache" file cannot be found:
Code Block
sh-3.2# /usr/bin/kmutil load -p /Library/Extensions/XXXX.kext
Error Domain=KMErrorDomain Code=71 "Could not find: Unable to get contents of boot kernel collection collection at /System/Volumes/Preboot/3B670FAA-F124-41AB-98A8-7C3940B5ECAC/boot/16FE8A65862647F7F8752DA7C4EF320E4CADEB250FCF438FB84A55F822BEB4A98108829E21658BB08B1E314BBC85169A/System/Library/Caches/com.apple.kernelcaches/kernelcache" UserInfo={NSLocalizedDescription=Could not find: Unable to get contents of boot kernel collection collection at /System/Volumes/Preboot/3B670FAA-F124-41AB-98A8-7C3940B5ECAC/boot/16FE8A65862647F7F8752DA7C4EF320E4CADEB250FCF438FB84A55F822BEB4A98108829E21658BB08B1E314BBC85169A/System/Library/Caches/com.apple.kernelcaches/kernelcache}


Code Block
sh-3.2# /usr/bin/kmutil inspect
No variant specified, falling back to release
Error Domain=KMErrorDomain Code=71 "Invalid argument: Unable to read contents of file at /System/Volumes/Preboot/3B670FAA-F124-41AB-98A8-7C3940B5ECAC/boot/904DF99E6EB1281F8E510B3FFB953383F530F313CCFB30A9C1F98231A81B02BDA5E6E0D2BF26FC5D4EB3D2E226B8BC1C/System/Library/Caches/com.apple.kernelcaches/kernelcache" UserInfo={NSLocalizedDescription=Invalid argument: Unable to read contents of file at /System/Volumes/Preboot/3B670FAA-F124-41AB-98A8-7C3940B5ECAC/boot/904DF99E6EB1281F8E510B3FFB953383F530F313CCFB30A9C1F98231A81B02BDA5E6E0D2BF26FC5D4EB3D2E226B8BC1C/System/Library/Caches/com.apple.kernelcaches/kernelcache}


The "kernelcache" file path does not exist. In fact, there is no "904DF..." directory under "boot". There is no "kernelcache" file in the entire "/System/Volumes/Preboot" mount.

Code Block
sh-3.2# find /System/Volumes/Preboot -name kernelcache
find: /System/Volumes/Preboot/.Trashes: Operation not permitted


This is on an M1 MacBook Air running 11.3.

Is there a special way to load kernel extensions when booting from an external drive?

Thanks.

I am also waiting on information for this issue.

I can confirm the behavior is the same on an M1 mini with macOS 11.6.2 . Near as I can tell, current macOS 11/12 versions on M1 hardware do not support 3rd party kernel extensions when booted from external media. This seems like an oversight/defect, not an intentional design choice by Apple.

I would agree, but there doesn't seem to be a good way to report the defect. I submitted a ticket using Feedback Assistant in May 2021 and have not received a reply yet. I also verified the bug still exists in Monterey.

I submitted a ticket using Feedback Assistant in May 2021 and have not received a reply yet.

That is not, in and of itself, unexpected. Unless the team needs more info from you to resolve an issue, you won’t hear back until we seed a build with a solution.

What was your bug number?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Hi, just adding comment to get updates in case there is a solution pending. Having the same issue with Universal Audio kexts for their Apollo Hardware. Works fine with boot from internal HD, won't work when booted from external TB3 drive.

Have the exact same problem / same Error with my Apogee Element Audio interface. Booting from External Drive it seems that Apple flat-out prevents third party kext to load. But why is this the case? Anyone has an idea on how to bypass this *** and force the Kext to load anyway?

Did anyone maybe check out the mac os ventura beta? like is the problem maybe solved under Ventura?

Still broke with Ventura Beta 2 (unfortunately).

I also have the same problem. I have installed a MacOS Ventura on an external SSD to preserve my internal SSD lifespan, and I cannot install a single app which relies on Kernel Extensions, for instance, pCloud, Tuxera, DriveDx, and so forth. Is there any solution available? Is this problem under Apple radar?

I also have the same problem. TB3 Enclosure SSD on MacOS Ventura.

It looks like something is missing. Maybe is an oversight from Apple. It looks like when we try to load an extension the com.apple.kernelcaches/kernelcache under PreBoot is not populated or not created. I've purchased an external SSD in an USB-C enclosure. I have two Mac Mini m1. One at home, another at my work. I wish I could turn off my office computer, unplug my ssd in home computer and boot my whole environment to keep working, and vice-versa. I wish Apple correct this. That would make M1 machines perfect.

Same issue with MacFUSE kext on 13.1 and 13.2

Same issue in 14.0 Developers Beta 3

Same, Monterey, External SSD (thunderbolt connected, but also tested USB connected with same issue). RME Drivers not loading, trying to launch the kext manually:

sudo kextutil /Library/Extensions/FirefaceAudioDriver.kext

Results in:

Executing: /usr/bin/kmutil load --bundle-path /Library/Extensions/FirefaceAudioDriver.kext Error Domain=KMErrorDomain Code=71 "Could not find: Unable to get contents of boot kernel collection collection at /System/Volumes/Preboot/45F3B5D9-3EE1-4237-8AE0-10214A7CAF9A/boot/4E3C25B8EDD6ABA7DAA7645086088087F6DDF6E795D635E64369912FF476CB289E6197136983317DBD7E04C161F4B7EC/System/Library/Caches/com.apple.kernelcaches/kernelcache" UserInfo={NSLocalizedDescription=Could not find: Unable to get contents of boot kernel collection collection at /System/Volumes/Preboot/45F3B5D9-3EE1-4237-8AE0-10214A7CAF9A/boot/4E3C25B8EDD6ABA7DAA7645086088087F6DDF6E795D635E64369912FF476CB289E6197136983317DBD7E04C161F4B7EC/System/Library/Caches/com.apple.kernelcaches/kernelcache}

Hi I am on the same situation here on a MacBook Pro M1 Max and a Motu audio interface grrrrr rr

Hi, I'm admin for a number of AVID Pro Tools HDX systems that all require a kernel extension called 'Digital.kext' to communicate between the Pro Tools software & hardware.

For many years now, it's been standard practice to test new O.S revisions on an external drive, before rolling out updates on multiple machines.

It seems that this great practice is now blocked by Apple, alongside the possibility of having a bootable external drive ready to go, in case of internal drive failure.

Can this be fixed?

Thanks

kmutil fails when booted into OS on external drive
 
 
Q