Kerneluitbreidingen in OS X laden en verwijderen

Kernel-uitbreidingen, kortweg kext genoemd, zijn codemodules die rechtstreeks in de kernelruimte van OS X worden geladen en die op een laag niveau kunnen worden uitgevoerd om verschillende taken uit te voeren. De meeste kexts maken deel uit van de kern Mac OS X-systeemsoftware, meestal stuurprogramma's voor hardwareapparaten, maar sommige apps van derden zullen ook een kext installeren.

Soms moeten geavanceerde Mac-gebruikers en systeembeheerders een kernelextensie handmatig laden of verwijderen. Omdat kernelextensies vaak kritieke componenten van OS X zijn, is dit alleen geschikt voor gebruikers die een specifieke reden hebben om te wijzigen of een kext wordt geladen of verwijderd in de OS X-kernelruimte. Ongepaste wijziging van kext-gedrag kan Mac-hardware nutteloos of ontoegankelijk maken en kan ook voorkomen dat OS X helemaal functioneert, dus probeer geen kernel-extensie te veranderen zonder een dwingende reden en begrip van wat het gebruik ervan is.

Een kernel-extensie in OS X laden met kextload

Om een ​​kernelextensie in OS X te laden, moet je de opdrachtregel kextload gebruiken. De syntaxis is verder eenvoudig genoeg, waardoor sudo nodig is voor administratieve toegang om de actie uit te voeren:

sudo kextload /path/to/kext.kext

U kunt ook de bundel-ID (die vaak het doelwit zijn van standaardopdrachten) gebruiken met de vlag -b:

sudo kextload -b com.apple.driver.ExampleBundle

Hoe dan ook, druk op Return en met de invoer van het beheerderswachtwoord wordt de kernelextensie in OS X geladen.

U kunt bevestigen dat een kernel is geladen door hem op te geven met kextstat, met behulp van grep om naar de opgegeven naam te zoeken, zoals:

$ kextstat |grep com.apple.driver.ExampleBundle
125 0 0xdddddd7f23351040 0x5000 0x5000 com.apple.driver.ExampleBundle (1) 12 8 7 5 4 2 1

Dit kan handig zijn na het handmatig installeren van een kernelextensie in OS X, omdat het in sommige situaties de noodzaak zal voorkomen om de Mac opnieuw op te starten.

Moderne versies van Mac OS X laten ook het laden van kerneluitbreidingen toe met de opdracht kextutil, die een beetje vollediger is voor foutopsporingsredenen, maar is verder hetzelfde voor het laden van een kext.

Een kerneluitbreiding ontladen met kextunload

Het ontladen van een kernelextensie van OS X is in feite exact hetzelfde als het laden van een kext, behalve dat je het kextunload-hulpprogramma met sudo als volgt zult gebruiken:

sudo kextunload -b com.apple.driver.ExampleBundle

Of door rechtstreeks naar het kernel-uitbreidingspad te gaan:

sudo kextunload /System/Library/Extensions/ThirdPartyMystery.kext

Nogmaals, je kunt bevestigen dat de kernelextensie is verwijderd door kextstat en grep te gebruiken, waar het niets zou moeten retourneren.