Linux Kernel 5.16環境でVMware Playerを使う

先日、諸事情によりメインPCのDebianをStableからTestingに更新した。
それに伴ってKernelが5.10から5.16に変わったことで、VMware関連モジュールのインストールに失敗するようになってしまった。

エラー

<省略>
make[2]: *** [/usr/src/linux-headers-5.16.0-4-common/scripts/Makefile.build:292: /tmp/modconfig-4A7C8F/vmnet-only/driver.o] エラー 1
make[2]: *** 未完了のジョブを待っています....
make[2]: *** [/usr/src/linux-headers-5.16.0-4-common/scripts/Makefile.build:292: /tmp/modconfig-4A7C8F/vmnet-only/userif.o] エラー 1
In file included from /tmp/modconfig-4A7C8F/vmnet-only/vm_atomic.h:49,
                 from /tmp/modconfig-4A7C8F/vmnet-only/vnet.h:28,
                 from /tmp/modconfig-4A7C8F/vmnet-only/vnetInt.h:24,
                 from /tmp/modconfig-4A7C8F/vmnet-only/netif.c:43:
/tmp/modconfig-4A7C8F/vmnet-only/vm_assert.h:43:10: fatal error: stdarg.h: そのようなファイルやディレクトリはありません
   43 | #include <stdarg.h>
      |          ^~~~~~~~~~
compilation terminated.
make[2]: *** [/usr/src/linux-headers-5.16.0-4-common/scripts/Makefile.build:292: /tmp/modconfig-4A7C8F/vmnet-only/hub.o] エラー 1
make[2]: *** [/usr/src/linux-headers-5.16.0-4-common/scripts/Makefile.build:292: /tmp/modconfig-4A7C8F/vmnet-only/netif.o] エラー 1
make[1]: *** [/usr/src/linux-headers-5.16.0-4-common/Makefile:1870/tmp/modconfig-4A7C8F/vmnet-only] エラー 2
make[1]: ディレクトリ '/usr/src/linux-headers-5.16.0-4-amd64' から出ます
make: *** [Makefile:117: vmnet.ko] エラー 2
make: ディレクトリ '/tmp/modconfig-4A7C8F/vmnet-only' から出ます
<省略>


エラーをみるとstdarg.hヘッダーファイルが読み込めていない様子。
フォルダ階層が変わったのだろうか…

対応方法

対象のヘッダーファイルが存在していることは確認できた。

$ ll /usr/src/linux-headers-5.16.0-4-common/include/linux/ | grep std
-rw-r--r--  1 root root 140473  3月  2 19:51 zstd_lib.h
-rw-r--r--  1 root root   3167  3月  2 19:51 zstd_errors.h
-rw-r--r--  1 root root  17522  3月  2 19:51 zstd.h
-rw-r--r--  1 root root   3353  3月  2 19:51 stddef.h
-rw-r--r--  1 root root    313  3月  2 19:51 stdarg.h

以下のコマンドでヘッダーファイルの所在を指定して、モジュールのインストールが可能。

$ sudo CPATH=/usr/src/linux-headers-5.16.0-4-common/include/linux/ vmware-modconfig --console --install-all

参考

この記事が気に入ったらサポートをしてみませんか?