macOS Big Sur 11以降でドライバ(KEXT)の許可を取り消す方法

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をインストールした直後と同じ状態になります。

投稿者プロフィール

林 晃
林 晃macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者
アールケー開発代表。macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者。ObjC/Swift/C++使い。豊富な開発実務経験を基に、教育コンテンツ開発、技術書執筆、技術指導、技術セミナー講師、企業内研修講師、行政・自治体職員研修講師も行います。

基礎から学ぶMetal


「基礎から学ぶMetal」を執筆しました。本書はMetalを使ってGPUプログラミングを行うための最初のステップを解説するMetalの解説書です。

私が初めてGPUプログラミングを行ったとき、どこから手をつけて、学んでいけば良いのか分からず呆然としました。もし、あのとき、これを教えてくれればという部分を解説しました。本書で解説している部分はMetalの基礎となる部分で、Metalを使うときに必ず触れることになる部分です。

詳細

基礎から学ぶSwiftUI


「基礎から学ぶ SwiftUI」というタイトルの本を執筆しました。

SwiftUIの入門書です。

SwiftUIのコンセプトは「ユーザーインターフェイスを作るための最短パスを提供する」「一度学べば(Appleのプラットフォームの)どこにでも適用できる」です。

SwiftUIの概要から始まって、一つ一つのテクノロジートピックに注目しながらSwiftUIとは何か?どんなことができるのか?どのようなコードを書けば良いのかなどを丸々一冊使って解説しています。

詳細

関連記事

  1. Cのバイナリデータを確保する処理をSwiftで書く

  2. SwiftでCのポインタのインクリメント・デクリメントのコードを書き換…

  3. M1 Mac への JDK のセットアップ

  4. 【2020/2/10更新】UIWebViewは廃止

  5. Notarization Service の条件の緩和終了

  6. SwiftとObjective-Cを共存させるならObjective-…

最近の著書

  1. 基礎から学ぶ SwiftUI

最近の記事