VMware Serverのコンフィグ時の警告について

先日のブログに書いたVMware Server 2.0.2をLinux 2.6.24-25にインストールすると警告がでるというは話(VMware Server 2.0.2がリリースされた、しかし...)。vsockモジュールのコンパイルで次の様な警告(WARNING)が出る件。

WARNING: "VMCIDatagram_CreateHnd" [/tmp/vmware-config0/vsock-only/vsock.ko] undefined!
WARNING: "VMCIDatagram_DestroyHnd" [/tmp/vmware-config0/vsock-only/vsock.ko] undefined!
WARNING: "VMCI_GetContextID" [/tmp/vmware-config0/vsock-only/vsock.ko] undefined!
WARNING: "VMCIDatagram_Send" [/tmp/vmware-config0/vsock-only/vsock.ko] undefined!

幾つか勘違いがあった。

  1. Linux 2.6.24-25やVMware Server 2.0.2から出ているわけではなく、以前のバージョンでも発生していた。
  2. 警告はvsockモジュールをコンパイル途中のもので、最終的にはカーネルに組み込まれているため問題はない(と思われる)。

先日ブログを書いた後、“いつから警告が出るようになったのだろう”と疑問を持ち、7月位に使っていたルート・ファイルシステムのイメージ(2.6.24-24)をHDDに戻して再度VMware Server 2.0.1を再コンフィグしたところ全く同様の警告がでていた。記憶では、最初にVMware Server 2.0をインストールした時には警告すら出ていなかったような気がしていたのだが、どうも記憶が怪しい。

次に“警告”が何故出るのか調べてみた。
問題のvsockモジュールには同じくVMware Serverのモジュールであるvmciモジュールの中にある関数を呼び出してる。そのためvsockモジュール単体の状態でオブジェクトを作成してもリンク先の関数が無いので“警告”という形でメッセージが出ているようだ。

実際にカーネルに組み込まれた状態ではどうだろうか。例えば警告が出ている“VMCIDatagram_CreateHnd”という関数で調べると、

root@vmhost:~# cat /proc/kallsyms | grep ' VMCIDatagram_CreateHnd'
ffffffff8856e980 u VMCIDatagram_CreateHnd       [vsock]
ffffffff8856e940 t VMCIDatagram_CreateHndPriv   [vmci]
ffffffff8856e980 T VMCIDatagram_CreateHnd       [vmci]
root@vmhost:~#

ちゃんとリンクされているので問題ないことが分かる。

ということで、早速 Ubuntu 8.04 Serverのカーネルを最新の 2.6.24-25へバージョンアップし、VMware Serverも 2.0.2へバージョンアップした。