Sådan læses og aflæses kerneludvidelser i OS X

Kerneludvidelser, kaldet kext for short, er moduler af kode, der indlæses direkte i kernelrummet i OS X, som kan køre på et lavt niveau for at udføre en række opgaver. De fleste kex er en del af den centrale Mac OS X-systemsoftware, typisk hardwaredriverdrivere, men nogle tredjepartsapps installerer også en kext.

Nogle gange kan avancerede Mac-brugere og systemadministratorer manuelt indlæse eller aflæse en kerneludvidelse. Fordi kerneudvidelser ofte er kritiske komponenter i OS X, er dette kun passende for brugere, der har en specifik grund til at ændre, om en kext er indlæst eller loset i OS X-kerneområdet. Uhensigtsmæssig ændring af kextadfærd kan gøre Mac-hardware ubrugelig eller utilgængelig og kan også forhindre OS X i at fungere overhovedet, så forsøg ikke at ændre kerneforlængelse uden en overbevisende årsag og forståelse for, hvad det er brugen af.

Indlæser en kerneforlængelse i OS X med kextload

For at indlæse en kerneforlængelse i OS X skal du bruge kommandolinjeprogrammet. Syntaxen er ellers simpel nok, hvilket kræver sudo for administrativ adgang til at udføre handlingen:

sudo kextload /path/to/kext.kext

Du kan også bruge bundleidentifikatoren (som ofte er målene for standardkommandoer) med -b-flag:

sudo kextload -b com.apple.driver.ExampleBundle

Uanset hvad du skal, skal du vende tilbage, og med adgangen til administratoradgangskoden bliver kerneludvidelsen indlæst i OS X.

Du kan bekræfte, at en kerne er blevet indlæst ved at notere den med kextstat, ved hjælp af grep for at søge efter det givne navn som sådan:

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

Dette kan være nyttigt, når du manuelt installerer en kerneforlængelse i OS X, da det i nogle situationer forhindrer behovet for at genstarte Mac.

Moderne versioner af Mac OS X tillader også, at kerneudvidelsesindlæsning skal udfyldes med kommandoen kextutil, som er lidt mere udvalgt til fejlfinding, men er ellers den samme for at indlæse en kext.

Aflæsning af en kerneforlængelse med kextunload

Aflæsning af en kerneforlængelse fra OS X er stort set den samme som at indlæse en kext, medmindre du bruger værktøjet kextunload med sudo som følger:

sudo kextunload -b com.apple.driver.ExampleBundle

Eller ved at pege direkte på kerneforlængelsesstien:

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

Igen kan du bekræfte, at kerneforlængelsen er blevet aflæst ved at bruge kextstat og grep, hvor den ikke skal returnere noget.