2011/06/27

Hyper-V の Linux ゲストで KVP が動いた!! (hv_kvp_daemon で)

先日の投稿「最新の安定版 Linux Kernel 2.6.39.1 に Hyper-V ドライバーの新機能が...」において、最新の Linux Kernel 2.6.32.1 を使用して、GPLv2 版 Linux IS をビルトインした Debian 6.0.1 向けカーネルを再構築しました。その際、Linux Kernel 2.6.32.1 に含まれる GPLv2 版 Linux IS のソース コードに、マウス連携 (hv_mouse) とデータ交換 (KVP) サービスの実装を見つけたとお伝えしました。

KVP は、Hyper-V ホストに対して仮想マシンのゲスト OS の情報を提供する(ネットワークを使用せずに) もので、Windows ゲスト向けの統合サービスでは標準で利用できます。GPLv2 版 Linux IS の KVP の実装については前回、「Unknown key: Guest timed out」と一度だけ答えて、お亡くなりになるという状態でしたが、その後、ちゃんと (!?) 動きましたのでご報告を。


Linux Kernel 2.6.32.1 にマージされた GPLv2 版 Linux IS のソース コード (/usr/src/linux-2.6.39.1/drivers/staging/hv/) をさらに調べてみると、tools というサブ ディレクトリに hv_kvp_daemon.c というソース コードを発見しました。これをコンパイルして実行してみると...

#  cd /usr/src/linux-2.6.39.1/drivers/staging/hv/tools
#  gcc hv_kvp_daemon.c -o hv_kvp_daemon
#  ./hv_kvp_daemon &


hv_kvp_daemon を実行した状態で、Hyper-V ホスト側から hvvminfo.vbs (KVP から情報を取得するこのスクリプトについてはこちらを参照) を実行したところ、めでたく Linux ゲストの情報 (FQDN や IP アドレスなど) を取得することができました。Windows ゲストよりも情報は少ないです。



 これで hv_kvp_daemon を自動起動するようにしておけば、常に KVP を利用できるようになります。/usr/local/bin など適当な場所にコピーして、/etc/rc.local にコマンドラインを記述しておけばよいでしょう。

ただし、冒頭の画像にもあるとおり、GPLv2 版 Linux IS は、WITHOUT ANY WARRANTY だということをお忘れなく。例えば、このデーモンが悪さをしているのかどうか、確定はできていませんが、このデーモンが動いている仮想マシンのプロパティを SCVMM で更新しようとすると、VMM サーバーとコンソールの接続がリセットされるようになってしまいました。Refresh-VM が完了できないようです。

2011/07/29 追記) → この問題は、http://support.microsoft.com/kb/2586286 と同じだと思います。

マウス連携 (hv_mouse) のほうは、相変わらず動きません。正式版 Linux IS v2.1 とともに動作する Citrix Project Satori (inputvsc) も、SLES 11 以降だと動かないなどディストリビューションによっては動かないので、hv_mouse については (Debian では) これ以上踏み込まないことにします。

0 件のコメント: