macOSではドライバ(KEXT)は、ユーザーが許可しないとロードされません。ドライバと通信するアプリを開発中のときなど、ユーザーが許可していない状況や、ドライバをインストールする前の状態を作り出したいときがあります。
この記事ではそのようなときに役に立つ、ドライバの許可を取り消す方法を解説します。
ドライバの実行許可など、macOSでのドライバの読み込み判断フローについては以下の記事で解説しています。そちらも参考にしてください。
許可の取り消し
(1) 開発中のKEXTなど、デバッグ対象のKEXTを削除する。
$ sudo rm -Rf /Library/Extensions/Example.kext
(2) リカバリーモードで起動する
システムを終了します。M1 Macの場合は、パワーオンボタンを押し続け、「起動オプションを表示するには押し続けてください」と表示され、「起動オプションを読み込み中」と表示されたら、指を離します。
Intel Macの場合は、CommandキーとRキーを押しながら起動します。
(3) 起動オプションが表示されたら「オプション」を選択し、「続ける」をクリックします。
(4) ユーザー確認が表示されたら、ユーザーを選択し、パスワードを入力します。
(5) 復旧オプションが表示されたら、「ユーティリティ」メニューから「ターミナル」を選択します。
(6) kmutil
を使ってKEXTの許可を取り消します。
$ kmutil trigger-panic-medic --volume-root /
Triggering Panic Medic to enable booting into: /
Panic Medic done. All third party kexts have been unapproved and uninstalled from /
(7) reboot
を実行して再起動します。
$ reboot
インストール済みKEXTの許可
(1) 再起動すると、「パニック修復ブート」というメッセージが表示されるので「OK」をクリックして閉じます。
(2) そのまま、再起動します。
(3) 再起動後、今度は「システム機能拡張エラー」というメッセージが表示されるので、「”セキュリティ”環境設定を開く」をクリックします。
(4) セキュリティとプライバシー設定が表示され、Appleのシステムソフトウェアの許可確認メッセージが表示されているので、ロックを解除して、「許可」をクリックします。OSのバージョンやマシンによって、このステップは不要(Apple Inc.の追加許可が不要)な場合もあります。
(5) 再起動が必要と表示されるので、「再起動」をクリックします。
(6) システムキャッシュの更新が開始され、完了後に再起動します。このとき、再起動は複数回実行されることがあります。また、ログイン後の読み込み時間や常駐プログラムの起動時間が通常よりも長くなります。次回以降は通常の時間に戻ります。
上記の手順でOSをインストールした直後と同じ状態になります。