Hi,
I want to use the S.M.A.R.T Driver for external USB drives, but I'm not able to load this driver on my Thunderbolt Main System.
On a Clean internal Monterey the SATSMARTDriver.kext is loading after install, but not on my full migrated System on my Thunderbolt drive
There's a few things at work here.
First, as of macOS 11, there is no dynamic loading of KEXTs. They must be loaded at boot time. All third party KEXTs must be merged into the "Auxiliary Kernel Collection" or AuxKC. kmutil does this by copying the KEXT to a special location and "measuring" it (taking a cryptographic signature and storing it in your Mac's Secure Enclave) so that it can be checked for potential tampering at boot time.
The next piece is that special location. On Apple Silicon Macs, all KEXTs must be placed somewhere in the Preboot APFS volume. This is a special hidden volume in your operating system's APFS container which has everything required to start the Darwin kernel (including the kernel binary itself, plus all KEXTs).
But when you introduce booting from an external drive, there's a huge complication: the Preboot volume MUST live on the internal SSD. This is because Apple Silicon firmware is deliberately radically simplified for security purposes, so it has no idea how to talk to any disk other than the internal SSD. It doesn't even know how to access a USB mass storage device.
When you install macOS on an external, or update that installation, something in Apple's install process handles syncing the external drive's Preboot to a distinct location on the internal SSD's Preboot so the external install can boot. However, kmutil seemingly does not handle this case - it doesn't know how to install third party KEXTs to a different disk than the currently booted OS.
I have not heard of a workaround for this. Apple supposedly knows about the bug but has not done anything about it yet. For now, if you actually need SATSMARTDriver (or any other third party KEXT), you will have to boot from the internal SSD.
What are you using SATSMARTDriver for? You may be able to use other methods, depending on what you need.