kextのアクセス権修復とキャッシュリビルド(クリア)方法

Macでkextのアクセス権修復・キャッシュをリビルド(再構築/クリア)する方法のまとめ。

macOS Big Surではレガシー機能拡張(Kernel Extensions - kext)の一部が廃止され、kextを利用するアプリケーションやドライバで動作がおかしくなる場合もあるため、そう言った場合に本記事の方法を試すと改善する可能性がある。

kext アクセス権修復とキャッシュリビルド方法

下記にまとめたコマンドは実行したら再起動しよう。

キャッシュリビルド(再構築)

下記コマンドをターミナルで実行しkextキャッシュのリビルド(再構築)。

sudo kextcache -i /

「kmutil done」と出たら終了。

カーネルキャッシュ更新とリビルド(再構築)

下記二つのコマンドは仕様変更に伴いmacOS Big Sur以降では意味がない(無効)。

sudo kextcache -system-caches
sudo kextcache -system-prelinked-kernel

アクセス権修復

下記コマンドでSystem/Library/Extensionsのkextのアクセス権を修復。

sudo chmod -Rf 755 /S*/L*/E*
sudo chmod -Rf 755 /L*/E*
sudo chown -Rf 0:0 /S*/L*/E*
sudo chown -Rf 0:0 /L*/E*

コマンドは一つずつ実行。

存在しない場所にあるステージング領域のkextクリア

下記コマンドで存在しない場所にある(削除された場合など)ステージング領域のkextをクリア。

sudo kextcache -prune-staging

ステージング領域のkextクリア

下記コマンドでステージング領域にあるkextをすべてクリア。

sudo kextcache -clear-staging

まとめ

kextのキャッシュリビルドやアクセス権修復は通常macOSを利用する上でほぼ必要ないが、macOS Big Surでレガシー機能拡張が無効化されたため、macOS Catalina以前からアップデートした際にレガシー機能拡張が残滓のように残ってしまった際は本記事のコマンドを試してみるといいかもしれない。

また、macOS High Sierra以前のmacOSでGeForceをeGPUとして無理やり使うといった場合にも上記のコマンドが多用されているのを見かける。