Managing kernel extensions (KEXT) has evolved over recent years as Apple works to phase them out in favour for more modern approaches like System Extensions which execute in the reduced privileged user-space as opposed to the elevated privilege of running in kernel-space. The reason for this change is part of Apple's push to make the Mac as much an appliance as possible and to keep the core operating system as stable as possible by keeping the contents of the system to Apple-only code.


To that end, the method in which KEXTs are managed (loaded, unloaded, installed, etc...) has evolved. What hasn't been updated to keep pace with these changes are the KEXT installers. This means we're finding more cases of KEXT installers not succeeding in leaving the system able to successfully load the newly installed KEXT.


Below is a list of OS version specific code to assist with allowing the KEXT to load successfully at the next boot time. Run the appropriate commands for your macOS version and then reboot, this process has succeeded in assisting several customers with issues where the SymplyPRO (Desktop and Rack) and SymplyDIT and products appear to fail to connect to their Mac systems.


macOS Mojave


sudo kextload /Library/Extensions/<KEXT_NAME>.kext
sudo kextcache -i / -f
Generic


macOS Catalina


sudo kextcache -prune-staging
sudo kextload /Library/Extensions/<KEXT_NAME>.kext
sudo kextcache -i / -f
Generic



macOS Big Sur and above


sudo kmutil clear-staging
sudo kmutil load -–load-style start-and-match -p /Library/Extensions/<KEXT_NAME>.kext
sudo kmutil install --force
Generic



Dealing with persistent load failures at boot time


We have come across a number of customers who seem to be unable to get the ATTO driver to load at boot time no matter how many times they run the above commands or re-run the installer. In these cases we have a workaround using a launchd daemon (attached). This .plist needs to be copied to /Library/LaunchDaemons/ and then the following commands run in Terminal to set the permissions and load the launchd item correctly.


sudo chmod 0755 /Library/LaunchDaemons/com.symply.loadatto.plist
sudo chown 0:0 /Library/LaunchDaemons/com.symply.loadatto.plist
sudo launchctl bootstrap system /Library/LaunchDaemons/com.symply.loadatto.plist
Generic

 

If you have any questions please submit a [support ticket]