macOSでデバイスドライバを手動削除する方法

macOSデバイスドライバ(機能拡張)を手動で削除する方法です

SIP(System Integrity Protection )というシステム保護機能を一旦無効にして作業する必要があるため,少々煩雑な手順になります

手順1 リカバリーモードに入る

再起動して,リカバリーモードに入ります.
古いmac(cpuがintel製)と,新しいmac(M1やM2)で手順が異なります.

古いmac(cpuがintel製)

  1. システムをシャットダウンして一度電源が切れた状態にします
  2. 「Command」キーと「R」キーを同時押して,電源を入れます

新しいmac(M1やM2)

  1. システムをシャットダウンして一度電源が切れた状態にします
  2. touch ID(電源ボタン)を30秒ぐらい長押し続けます

手順2 リカバリーモードに入る

リカバリーモードを選択,管理者権限のアカウントでログインします

手順3 SIPを無効にする

1. 画面上部のメニューからターミナルを起動します
2. ターミナル上で以下のコマンドを実行します

csrutil disable

3. 確認のメッセージが表示されるので y を入力

Turning off System Integrity Protection requires modifying system security.
Allow booting unsigned operating systems and any kernel extensions for
 [y/n]:

4. 以下のメッセージが表示されれば成功です

System Integrity Protection is off.
Restart the machine for the changes to take effect

5. 再起動します

reboot

手順4 通常モードでログイン

再起動します.

SIPが無効状態になっているか確認します

csrutil status

SIPが有効の場合は以下の表示になります
System Integrity Protection status: enabled.

SIPが無効の場合は以下の表示になります
System Integrity Protection status: disabled.


以下の作業はSIPが無効状態,つまり
System Integrity Protection status: disabled.
である必要があります

手順5 デバイスドライバ(機能拡張)のインストール状況確認

sudo systemextensionsctl list

ドライバの名称,teamID,bundleID の一覧が表示されます

手順6 デバイスドライバ(機能拡張)の手動アンインストール

sudo systemextensionsctl uninstall  <teamID> <bundleID>

teamIDとbundleIDは,削除したいデバイスドライバのteamIDとbundleIDそれぞれ指定します

手順7 キャッシュの更新

念の為,手動でドライバのキャッシュを再作成します

sudo kextcache -i /

手順8 不要ファイルの手動削除

/Library/Extensions/ 以下にファイルがあれば手動削除します

手順9 再起動&動作確認

再起動して,デバイスドライバが消えたかどうか確認します

手順10 SIP再有効化

再びリカバリーモードに入り,SIPを有効に戻しておきます

csrutil enable