
Mac OS Xでカーネル拡張機能をロードおよびアンロードする方法
カーネル拡張機能(略してkext)は、Mac OS Xのカーネル空間に直接ロードされるコードモジュールであり、低レベルで実行することで様々なタスクを実行できます。ほとんどのkextはMac OS Xのコアシステムソフトウェア(通常はハードウェアデバイスドライバ)の一部ですが、サードパーティ製のアプリでもkextがインストールされる場合があります。
上級Macユーザーやシステム管理者は、カーネル拡張を手動でロードまたはアンロードする必要がある場合があります。カーネル拡張はMacOSの重要なコンポーネントであることが多いため、これは特別な理由があってkextをMacOS Xカーネル空間にロードまたはアンロードするかどうかを変更する必要がある場合に限ります。kextの動作を不適切に変更すると、Macのハードウェアが使用不能になったり、アクセスできなくなったりするだけでなく、Mac OS Xが全く動作しなくなる可能性があります。そのため、正当な理由がなく、その用途を理解していない限り、カーネル拡張を変更しないでください。
kextload を使用して Mac OS X にカーネル拡張機能をロードする
Mac OS Xにカーネル拡張機能をロードするには、コマンドラインのkextloadユーティリティを使用する必要があります。構文はシンプルですが、この操作を実行するには管理者権限(sudo)が必要です。
sudo kextload /path/to/kext.kext
-b フラグを使用して、バンドル ID (これは多くの場合、defaults コマンドのターゲットになります) を使用することもできます。
sudo kextload -b com.apple.driver.ExampleBundle
どちらの場合でも、Return キーを押し、管理者パスワードを入力すると、カーネル拡張機能が Mac OS X に読み込まれます。
次のように grep を使用して特定の名前を検索し、kextstat でカーネルをリストすることで、カーネルがロードされたことを確認できます。
$ kextstat |grep com.apple.driver.ExampleBundle
125 0 0xdddddd7f23351040 0x5000 0x5000 com.apple.driver.ExampleBundle (1) 12 8 7 5 4 2 1
これは、カーネル拡張機能を Mac OS X に手動でインストールした後、状況によっては Mac を再起動する必要がなくなるため役立ちます。
Mac OS X の最新バージョンでは、カーネル拡張機能の読み込みを kextutil コマンドで完了することもできます。このコマンドはデバッグの目的で機能が少し充実していますが、それ以外は kext の読み込みと同じです。
kextunload によるカーネル拡張機能のアンロード
Mac OS X からカーネル拡張機能をアンロードする方法は、基本的に kext をロードする方法とまったく同じですが、次のように sudo で kextunload ユーティリティを使用する点が異なります。
sudo kextunload -b com.apple.driver.ExampleBundle
または、カーネル拡張パスを直接指定することもできます。
sudo kextunload /System/Library/Extensions/ThirdPartyMystery.kext
ここでも、何も返されないはずの kextstat と grep を使用して、カーネル拡張機能がアンロードされたことを確認できます。