Comment charger et décharger des extensions de noyau dans OS X

Les extensions du noyau, appelées en abrégé kext, sont des modules de code chargés directement dans l'espace noyau d'OS X, capables de s'exécuter à un niveau bas pour effectuer une variété de tâches. La plupart des kexts font partie du logiciel système principal de Mac OS X, généralement des pilotes de périphériques matériels, mais certaines applications tierces installent également un kext.

Parfois, les utilisateurs Mac avancés et les administrateurs système peuvent avoir besoin de charger ou de décharger manuellement une extension de noyau. Les extensions de noyau étant souvent des composants critiques d'OS X, cela n'est approprié que pour les utilisateurs qui ont une raison particulière de modifier si un fichier kext est chargé ou déchargé dans l'espace noyau OS X. Une modification inappropriée du comportement de kext peut rendre le matériel Mac inutilisable ou inaccessible, et peut également empêcher le fonctionnement d'OS X. N'essayez donc pas de modifier une extension de noyau sans une raison impérieuse et une compréhension de son utilisation.

Chargement d'une extension de noyau sous OS X avec kextload

Pour charger une extension de noyau dans OS X, vous devez utiliser l'utilitaire kextload de la ligne de commande. La syntaxe est par ailleurs assez simple, nécessitant sudo pour l'accès administratif pour effectuer l'action:

sudo kextload /path/to/kext.kext

Vous pouvez également utiliser l'identificateur de bundle (qui sont fréquemment les cibles des commandes defaults) avec l'indicateur -b:

sudo kextload -b com.apple.driver.ExampleBundle

De toute façon, appuyez sur Entrée et avec l'entrée du mot de passe administrateur, l'extension du noyau sera chargée dans OS X.

Vous pouvez confirmer qu'un noyau a été chargé en le listant avec kextstat, en utilisant grep pour rechercher le nom donné comme ceci:

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

Cela peut être utile après l'installation manuelle d'une extension de noyau dans OS X car, dans certains cas, cela évite d'avoir à redémarrer le Mac.

Les versions modernes de Mac OS X permettent également de compléter le chargement de l'extension du noyau avec la commande kextutil, qui est un peu plus complète pour des raisons de débogage, mais qui est par ailleurs la même pour le chargement d'un kext.

Déchargement d'une extension de noyau avec kextunload

Le déchargement d'une extension de noyau à partir d'OS X est fondamentalement identique au chargement d'un fichier kext, sauf que vous utiliserez l'utilitaire kextunload avec sudo comme suit:

sudo kextunload -b com.apple.driver.ExampleBundle

Ou en pointant directement sur le chemin des extensions du noyau:

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

Encore une fois, vous pouvez confirmer que l'extension du noyau a été déchargée en utilisant kextstat et grep, où il ne devrait rien retourner.