Catalina と不具合の Mojave 用 kext を使えるようにしてみる
macOS Mojave のため構築された一部の Kext ドライバー(カーネル機能拡張ドライバー)は古い KPI で構築され、macOS Catalina とそれ以降の macOS と互換性の問題が生じてしまう:Kext を(kextload
経由)システムに再登録不能。特に「移行アシスタント」で macOS をバックアップから回復・あるいは新しい mac パソコンに移行するたびに、Kext の再登録が必要とされ、故に上記の互換性問題が生じてしまうことになる。
臨時対応方法
支障のある Kext がそれぞれの開発元に(Catalina 向けの)更新を行われるまで、根本的な解決策は有りませんが、パソコンずつ設定して使えることができます。
【ステップ1】Kext のそれぞれのチーム ID をメモしておく
『Mac のシステム情報について』により:
システム情報を直接開くには、「option」キーを押しながら Apple メニュー >「システム情報」の順に選択します。
あるいは Spotlight で System Information.app
を実行。
その後、「システム情報」のウィンドウに「ソフトウェア」→「機能拡張」の画面を見て、作動不能な Kext の情報を見て、下記のような項目に注目して、「チーム ID」をメモしておくこと:
Developer ID Application: 開発元の名前 (チーム ID), Developer ID Certification Authority, Apple Root CA
そして、「システム情報」のウィンドウに「ソフトウェア」→「使用停止されたソフトウェア」の画面を見て、ここでのあらゆるすべての項目のタイトルの冒頭には「チーム ID」が記されているから、メモしておくこと。
(ここまでのメモに重複された「チーム ID」は後で一回だけ使って十分。)
【ステップ2】macOS 復元モードでパソコンを再起動
『macOS 復元について』によって、ステップ4まで行ってください。とりあえず、ユーティリティウインドウが表示されたまで。
その後、メニューバーの「ユーティリティ」メニューで、ターミナルを起動して、下記のコマンドを実行すること。
1 | spctl kext-consent add 「チーム ID」 |
例えば Matt Ingalls 氏に署名とアップル公証された Soundflower の Kext を使いたい場合、下記のターミナル指令を実行すると、このチーム ID に関する全ての Kext は使えるようになります(Apple に個別ブロックされた Kext は例外):
1 | spctl kext-consent add 3G47DU9NXM |
複数の「チーム ID」をメモした場合、一つずつを使って上記のターミナル指令を個別実行してください。
全部実行完了したあと、普通のようにパソコンを再起動すること。
【ステップ3】Kext を分別登録
普通のように macOS にログインしたあとの話。
【注意】上記の手順を実行しなければ、利用者(ユーザー)側だけでブロックされた Kext を使うのはほぼ不可能です。上記の手順を実行完了すると、すぐ使えることでなく、「利用者(ユーザー)側でだけでブロックされた Kext を使うことができる」ことです。面倒くさいと思えば、別の方法もあります:『Mac で NVRAM または PRAM をリセットする』に記された手順で NVRAM をリセットして済むことです。
既にシステムにインストールされた Kext ファイルは下記のターミナル指令で使えるようになるはず(例えば Soundflower):
1 | sudo kextload /Library/Extension/Soundflower.kext |
あるいは Kext を再インストールしてみること。
そのときに、『Macの「セキュリティとプライバシー」の「一般」環境設定を変更する』に記された「ブロックされたシステムソフトウェア」の部分の説明によって、Kext を個別「使えるように設定する」ことです。
参考した資料
『macOS High Sierra のカーネル機能拡張の変更点について準備を進める』の「MDM を使わない場合の User Approved Kernel Extension Loading」その部分。
$ EOF.