概要

手元のmacOSをBigSurからMontereyへアップグレードしたところ、Karabiner-Elementesで deactivate driver のポップアップが何度も出てしまい再起動しても変わらず、動かなくなってしまいました。
調べてみると、どうも古いドライバーを削除して新しいドライバーに変更しようとしているようですが、古いドライバーが削除できていないようでした。
ターミナルで下記を実行して、 org.pqrs.Karabiner-DriverKit-VirtualHIDDevice のバージョンが 1.0.0 だと該当します。最新版は 1.5.0 です。

systemextensionsctl list

そのうち解決されるとは思いますが、ワークアラウンドで解決したのでその解決方法を記録しておきます。

環境

  • macOS 12.0.1 Intel Chip
  • Karabiner-Elements to 14.2

手順概要

SIPというmacOSのセキュリティの仕組みにより、ドライバー削除に失敗します。
SIPとは、

「システム整合性保護」(System Integrity Protection:SIP、「rootless」とも)は「OS X El Capitan」以降で採用されているセキュリティ技術で、管理者(root)アカウントのファイルアクセス権限に強い制約を課す。たとえ管理者であってもシステムの重要な部分に触れられないようにすることで、マルウェアがシステムを改竄したり、誤操作でシステムを破壊するリスクからユーザーを守る。

だそうです。

引用元:https://forest.watch.impress.co.jp/docs/news/1362672.html

端的に言うと、これを一時的に無効化してあげれば、uninstallができるようになります。

下記でシステム拡張で読み込まれている一覧を確認します。

systemextensionsctl list

対象のドライバーを下記でアンインストールします。ここでSIPのために失敗することがあるようです。(私の場合)

systemextensionsctl uninstall G43BCU2T37 org.pqrs.Karabiner-DriverKit-VirtualHIDDevice

流れとしては下記の手順になります。

  1. karabiner-Elementsをアンインストールします。ただしここではドライバーが削除されていません。
  2. ここで一回シャットダウン
  3. リカバリーモードでSIPを無効化します。(起動時に電源+Cmd+Rを長押し。うまくいかないことが多いので、林檎マークが出たあたりでCmd+Rを離してすぐに再度Cmd+Rを押下するとうまくいきやすい)
  4. ターミナルを表示して systemextensionsctl uninstall G43BCU2T37 org.pqrs.Karabiner-DriverKit-VirtualHIDDevice を実行します。SIPが有効なままだと実行できませんが、SIPを無効化すると実行できます。
  5. 再起動します。
  6. Karaviner-Elementsをインストールします。systemextensionsctl listで確認できるドライバーのバージョンが 1.5.0 になっていれば解決していると思います。あとは、いつもどおりシステム環境設定のセキュリティとプライバシーで許可してあげます。
  7. シャットダウンします
  8. 最後に改めてリカバリーモードでSIPを有効化します。

SIPの無効化手順
https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection

カテゴリー: Mac