しばらく前より、Ubuntuの定例アップデートでカーネルがアップデートされたとき、VMWareのカーネルモジュールvmmonとvmnetが新Linuxカーネルに追従アップデートされず、VMWareが起動できなくなる不具合が続いている
- vmmon.koとvmnet.koのコンパイルに失敗するのを修正
- vmware-authdlauncherサービスが起動しない
この2つの不具合を解消する方法を、一旦ここでまとめてメモしておく
vmmon.koとvmnet.koのコンパイルに失敗するのを修正
コンパイルのログファイルには、次のようなメッセージが見られる。#includeが失敗しているので、このあたりに問題があると思われるのだが...
カーネルモジュールのコンパイルログの抜粋例 /tmp/vmware-vm/vmware-4724.log
〜 略 〜
2023-08-31T07:16:42.231Z In(05) host-4724 /tmp/modconfig-xb1RZf/vmmon-only/./include/vm_basic_defs.h:54:12: fatal error: stddef.h: そのようなファイルやディレクトリはありません
2023-08-31T07:16:42.231Z In(05) host-4724 54 | # include <stddef.h>
2023-08-31T07:16:42.231Z In(05) host-4724 | ^~~~~~~~~~
2023-08-31T07:16:42.231Z In(05) host-4724 compilation terminated.
〜 略 〜
2023-08-31T07:16:42.231Z In(05) host-4724 /tmp/modconfig-xb1RZf/vmmon-only/./include/vm_assert.h:43:10: fatal error: stdarg.h: そのようなファイルやディレクトリはありません
2023-08-31T07:16:42.231Z In(05) host-4724 43 | #include <stdarg.h>
2023-08-31T07:16:42.231Z In(05) host-4724 | ^~~~~~~~~~
2023-08-31T07:16:42.231Z In(05) host-4724 compilation terminated.
〜 略 〜
2023-08-31T07:16:42.231Z In(05) host-4724 make: *** [Makefile:117: vmmon.ko] エラー 2
〜 略 〜
2023-08-31T07:16:42.231Z In(05) host-4724 make: *** [Makefile:117: vmnet.ko] エラー 2
2023-08-31T07:16:42.231Z In(05) host-4724 Unable to install all modules. See log for details.
エラーログを読んでみると、stddef.hとstdarg.hが存在しないのが原因のようにも見える。これらはC言語のデフォルトで使われるものだが、ちゃんとincludeパスに含まれているか念のため確認する
$ gcc -x c++ -v -E /dev/null
Using built-in specs.
COLLECT_GCC=gcc
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
〜 略 〜
#include <...> search starts here:
/usr/include/c++/11
/usr/include/x86_64-linux-gnu/c++/11
/usr/include/c++/11/backward
/usr/lib/gcc/x86_64-linux-gnu/11/include
/usr/local/include
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
〜 略 〜
$ find /usr/ -name 'stddef.h' -print
/usr/include/linux/stddef.h
/usr/src/linux-hwe-6.2-headers-6.2.0-26/include/uapi/linux/stddef.h
/usr/src/linux-hwe-6.2-headers-6.2.0-26/include/linux/stddef.h
/usr/src/linux-hwe-6.2-headers-6.2.0-31/include/uapi/linux/stddef.h
/usr/src/linux-hwe-6.2-headers-6.2.0-31/include/linux/stddef.h
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h
$ find /usr/ -name 'stdarg.h' -print
/usr/include/c++/11/tr1/stdarg.h
/usr/src/linux-hwe-6.2-headers-6.2.0-26/include/linux/stdarg.h
/usr/src/linux-hwe-6.2-headers-6.2.0-31/include/linux/stdarg.h
/usr/lib/gcc/x86_64-linux-gnu/11/include/stdarg.h
黄色で着色した部分で分かるよう、確かに2つのインクルードファイルは検索パス上にある
解決方法
解決方法はVMWareのサポート掲示板に掲載されいてる
・Compiling vmmon module fails on linux kernel 5.16.0-arch1-1 (VMware Technology Network )
・mkubecek / vmware-host-modules (GitHub)
This repository tracks patches needed to build VMware (Player and Workstation) host modules against recent kernels. As it focuses on recent kernels (older ones do not need patching), only vmmon and vmnet modules are currently handled as the rest has been upstreamed for some time.
https://github.com/mkubecek/vmware-host-modules
省略された記事の残りの部分を表示する (Continue to read rest of this topic) »