macOS、カーネル機能拡張(.kext)の削除方法

macOS Catalinaにアップグレードしたぐらいから、再起動の度に以下のようなレガシーシステム機能拡張に対する警告が表示され、煩わしく感じていました。カーネル機能拡張は/Library/StagedExtensions/Library/Extensionsなどに配置されているのですが、この.kextの削除方法について備忘も兼ねて書いておきます。

"Mattias Nissler"によって署名された機能拡張がお使いのシステムにあるソフトウェアによって読み込まれました。これは将来のmacOSのバージョンに対応していません。開発元にお問い合わせください。

この警告表示をみて、”Mattias Nissler”ってなんだ?って話なんですが、調べたところ2015年ごろにVPN接続のために入れたTunTapの開発者の方の名前でした。TunTapに原因があると分かったところで、さてどうするか…なんですが、カーネル機能拡張は「/Library/StagedExtensions/Library/Extensions」あたりに配置されているようです。

/Library/StagedExtensions/Library/Extensionsに配置されたファイルは、セーフブートでも削除できず、SIPを無効にしなければ削除はできませんでした。

SIPを無効化する方法

macOSの起動時に「⌘command + r」をAppleマークが出るまで押し続けて、リカバリモードで起動します。
リカバリモードで起動したら、ユーティティメニューからターミナルを選択して、以下を入力して、SIPを無効にします。

% csrutil disable

SIPの状態を確認するには、以下コマンドで確認が可能です。

% csrutil status

SIPを有効にする方法は以下です。カーネル機能拡張の削除後はSIPを有効に戻しましょう。

% csrutil enable

カーネル機能拡張(.kext)を削除

SIPを無効にしたら、再起動して不要なカーネル機能拡張を削除します。
今回のケースでは以下のような感じです。

% sudo rm -fr /Library/StagedExtensions/Library/Extensions/tun.kext
% sudo rm -fr /Library/StagedExtensions/Library/Extensions/tap.kext