Macbookの移行でVMware Fusionの仮想マシンが動かなくなった話
新しいMacbook Proが届いたのでテンション高めに移行して、アプリの起動確認をしていたときに遭遇. Fusionは起動するもののVM起動時に以下のようなメッセージのダイアログが出て起動中止に陥る.
cannot open /dev/vmmon. (snip) make sure load ... (snip)
ざっと調べてみたところ, kextのload時にエラーが起きていた. 調査方法はこのブログを参考にした. ありがたや
blog link : Vmware Kext | @sskaje
以下調査時のコマンドログ(一部抜粋)
% sudo /Applications/VMware\ Fusion.app/Contents/Library/services/services.sh --start Installing files from /Library/Preferences/VMware Fusion/thnuclnt mkdir: /etc/thnuclnt: File exists Copying .thnumod to /etc/thnuclnt Copying thnuclnt.conf to /etc/thnuclnt Copying thnuclnt.convs to /private/etc/cups Copying thnuclnt.types to /private/etc/cups Copying thnucups to /usr/libexec/cups/filter Restarting printing services No matching processes were found /Applications/VMware Fusion.app/Contents/Library/kexts/vmmon.kext failed to load - System policy prevents loading the kernel extension.
System policy preventsらしい. このへんで調べてみたらKarabinerのissueで似たようなのがあった. 止めているのはmacOSのSecure Kernel Extension Loadingって機能で, 手っ取り早い解決方法は
- System Preferences > Security & Privacy > Privacy > Accessbility でVMware Fusionにチェック
- System Preferences > Security & Privacy > General で VMware Inc. を Allow
することらしい. 私の場合は「チェック入れてる」「Allowボタン出てこんぞ」という, もうちょいめんどい状況だった. というわけで別の解決方法探しの旅に出る.
さて, どうやって探したもんか, というところで以下の 2 点を考えた.
- 上記のカーネル拡張ファイルのロードエラーは, 許可された開発者 or アプリのものでないextを読み込もうとしたから発生している
- Allow ボタンで開発者 or アプリの識別子をどっかのplistに除外対象として登録している(はず)
というわけでマニュアルで解決するなら「(開発者 or アプリの)識別子登録ボタンに対応するコマンドを打ち込む」もしくは「Kernel拡張の読み込み許可リストに識別子を直接書き込む」なので, 適当にmac kernel extension approval
とかそんな感じの英語でググった. 結果, MITのknowledge baseがヒットした
Troubleshootingのところを試してみる
- Startup the Mac in recovery mode.
- Click the Utilities menu and select Terminal.
- Enter the following command:
- /usr/sbin/spctl kext-consent add TEAMID
- Press Enter
- e.g. for Sophos the command would be: /usr/sbin/spctl kext-consent add 2H5GFH3774
- Close the Terminal app and restart
今回はVMwareなのでもうちょっと下にあるVMwareのTeam ID(EG7KH642X6)を打ち込んだ. ここは鵜呑みにするんじゃなくて念のためVMware Fusionのplistを確認しとけばよかったと思った(小並感).
Recovery modeで上記のコマンドを入力後, VMware Fusionを再起動して無事解決.
この件で2時間近くも使ってしまった. 移行でハマるとほんとしんどい.