Linuxなどのメモ書き

vsock.o コンパイル (VMWare)


Rev.1を表示中。最新版はこちら

概要

Fedora Core4上にVMWare Workstation 6.5をインストールした時の対応作業メモ。

現象

VMWare Workstation 6.5をインストール後、vmwareを起動すると初回はカーネルモジュールをコンパイルしようとするが、VMCI Sockets(vsock.o)のコンパイルに失敗する。

エラーメッセージ

Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-root/modules/vsock-only'
make -C /lib/modules/2.6.11-1.1369_FC4smp/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/kernels/2.6.11-1.1369_FC4-smp-i686'
  CC [M]  /tmp/vmware-root/modules/vsock-only/linux/af_vsock.o
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:331: error: unknown field ‘slab_obj_size’ specified in initializer
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:331: 警告: 初期化子のまわりのブレースを欠いています
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:331: 警告: (near initialization for ‘vsockVmciProto.name’)
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:331: 警告: 暗黙の定数変換でオーバーフローしました
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c: In function ‘__VSockVmciCreate’:
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:2414: error: ‘struct proto’ has no member named ‘slab_obj_size’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:2414: 警告: passing argument 4 of ‘sk_alloc’ makes integer from pointer without a cast
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c: In function ‘VSockVmciRegisterProto’:
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:2704: 警告: implicit declaration of function ‘sk_alloc_slab’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:2706: 警告: implicit declaration of function ‘sk_alloc_slab_error’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c: In function ‘VSockVmciUnregisterProto’:
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:2741: 警告: implicit declaration of function ‘sk_free_slab’
make[2]: *** [/tmp/vmware-root/modules/vsock-only/linux/af_vsock.o] エラー 1
make[1]: *** [_module_/tmp/vmware-root/modules/vsock-only] エラー 2
make[1]: Leaving directory `/usr/src/kernels/2.6.11-1.1369_FC4-smp-i686'
make: *** [vsock.ko] エラー 2
make: Leaving directory `/tmp/vmware-root/modules/vsock-only'

エラーの原因

VMCI Socketsのソースコードは/usr/lib/vmware/modules/source/vsock.tarにインストールされており、エラーが発生しているファイルはtarファイル内のad_vsock.cファイル。この中で以下のようにカーネルのバージョン毎に処理を分けている処理がいくつか存在する(下記)。

カーネルバージョン依存部分の例
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 9)
#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12)
   .slab_obj_size = sizeof (VSockVmciSock),
#else
   .obj_size = sizeof (VSockVmciSock),
#endif

Fedora Core4(2.6.11-1.1369_FC4smp)はKernel 2.6.11がベースなのだが、今回の関連部分は独自に修正されており、Kernel2.6.12以降の処理に流してやる必要があった。




最終更新 2008/09/30 20:44:19 - kztomita
(2008/09/30 20:44:19 作成)


リンク

その他のWiki
Linuxメモ
Xnuメモ

会社
(有)ビットハイブ
受託開発やってます。

よくやる仕事

・Webシステム開発(LAMP環境)
・Linuxサーバー設定関連
サーバー移転作業代行

開発事例にデジタルカタログ/マンガビューワーを追加しました。

draggable.jsのスマホ対応版デモページを追加しました。説明はこちら

検索

Adsense
最近のコメント