Ipad

Mac OS Xでカーネル拡張機能をロードおよびアンロードする方法

Mac OS Xでカーネル拡張機能をロードおよびアンロードする方法

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 の読み込みと同じです。

Mac OS X でのカーネル拡張機能のロードとアンロード

kextunload によるカーネル拡張機能のアンロード

Mac OS X からカーネル拡張機能をアンロードする方法は、基本的に kext をロードする方法とまったく同じですが、次のように sudo で kextunload ユーティリティを使用する点が異なります。

sudo kextunload -b com.apple.driver.ExampleBundle

または、カーネル拡張パスを直接指定することもできます。

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

ここでも、何も返されないはずの kextstat と grep を使用して、カーネル拡張機能がアンロードされたことを確認できます。