Come caricare e scaricare estensioni del kernel in OS X

Le estensioni del kernel, chiamate in breve kext, sono moduli di codice che vengono caricati direttamente nello spazio del kernel di OS X, in grado di essere eseguiti a basso livello per eseguire una serie di attività. La maggior parte dei kex fa parte del software di sistema principale di Mac OS X, in genere driver di periferica hardware, ma alcune app di terze parti installeranno anche un kext.

A volte, gli utenti Mac avanzati e gli amministratori di sistema potrebbero dover caricare o scaricare manualmente un'estensione del kernel. Poiché le estensioni del kernel sono spesso componenti critiche di OS X, questo è appropriato solo per gli utenti che hanno una ragione specifica per modificare se un kext viene caricato o scaricato nello spazio del kernel di OS X. La modifica inappropriata del comportamento di kext può rendere l'hardware Mac inutilizzabile o inaccessibile e può anche impedire a OS X di funzionare, quindi non tentare di modificare alcuna estensione del kernel senza un motivo valido e la comprensione di quale sia il suo utilizzo.

Caricamento di un'estensione del kernel in OS X con kextload

Per caricare un'estensione del kernel in OS X, è necessario utilizzare l'utilità kextload della riga di comando. La sintassi è altrimenti abbastanza semplice, richiedendo sudo per l'accesso amministrativo per eseguire l'azione:

sudo kextload /path/to/kext.kext

Puoi anche usare l'identificatore del bundle (che sono spesso i bersagli dei comandi di default) con l'opzione -b:

sudo kextload -b com.apple.driver.ExampleBundle

In ogni caso, premi Invio e con la voce della password dell'amministratore l'estensione del kernel verrà caricata in OS X.

Puoi confermare che un kernel è stato caricato elencandolo con kextstat, usando grep per cercare il nome dato in questo modo:

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

Questo può essere utile dopo aver installato manualmente un'estensione del kernel in OS X in quanto in alcune situazioni impedisce la necessità di riavviare il Mac.

Le versioni moderne di Mac OS X consentono anche il completamento dell'estensione del kernel con il comando kextutil, che è un po 'più completo per ragioni di debug, ma è lo stesso per il caricamento di un kext.

Scaricamento di un'estensione del kernel con kextunload

Lo scaricamento di un'estensione del kernel da OS X è fondamentalmente lo stesso del caricamento di un kext, eccetto che userete l'utility kextunload con sudo come segue:

sudo kextunload -b com.apple.driver.ExampleBundle

O puntando direttamente al percorso delle estensioni del kernel:

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

Di nuovo, puoi confermare che l'estensione del kernel è stata scaricata usando kextstat e grep, dove non dovrebbe restituire nulla.