2012/01/26

Linux-3.3-rc1 で Hyper-V drivers が標準ドライバーに!?

GPLv2 版の Linux Integration Services for Hyper-V (Linux IS) である Microsoft Hyper-V drivers が、次期 Linux カーネル Linux 3.3 では、Staging ツリーから標準ドライバーのツリーに格上げされるようです。

gihyo.jp > 2012年1月17日 AndroidにHyper-V,USB 3.0サポートも ─Linux 3.3の注目ポイント [2012/01/17]


2012年1月19日に linux-3.3-rc1 が公開されたので、確認してみました。


以前、Debian 6 (squeeze) 上で linux-2.6.39.1 カーネルを再構築して、Microsoft Hyper-V drivers を組み込んだカーネルを作りましたが、同じ手順でやってみました。


参考:
Hyper-V の Linux ゲストで KVP が動いた!! (hv_kvp_daemon で) [2011/06/27]
http://yamanxworld.blogspot.com/2011/06/hyper-v-linux-kvp-hvkvpdaemon.html
最新の安定版 Linux Kernel 2.6.39.1 に Hyper-V ドライバーの新機能が... [2011/06/15]
http://yamanxworld.blogspot.com/2011/06/linux-kernel-26391-hyper-v.html
Linux kernel 2.6.32 以降には Hyper-V Linux ICs が組み込み済み [2010/03/18]
http://yamanxworld.blogspot.com/2010/03/linux-kernel-2632-hyper-v-linux-ics.html

レガシーネットワークを追加したHyper-Vの仮想マシンに、Debian 6(2.6.32-5-amd64)をクリーンインストールして、起動します。Debianは、「グラフィカルデスクトップ環境」と「標準システムユーティリテ」を選択して、あとは既定のオプションでインストールしたものです。


カーネルのビルド用のコンポーネント(build-essential。ncureses-dev、kernel-ackage、fakeroot、linux-headers、linux-souce)をインストールします。

# apt-get update
# aptitude update
# apt-get install build-essential
# apt-get install ncurses-dev kernel-package fakeroot
# apt-get install linux-headers-2.6.32-5-amd64
# apt-get install linux-source-2.6.32



www.kernel.org から linux-3.3-rc1.tar.bz2 をダウンロードして、/usr/src にソースを展開します。

# cd /usr/src
/usr/src# wget -c http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.3-rc1.tar.bz2
/usr/src# bzip2 -d linux-3.3-rc1.tar.bz2
/usr/src# tar xf linux-3.3-rc1.tar



make menuconfig を実行して、.config を作成します。

/usr/src# cd linux-3.3-rc1
/usr/src/linux-3.3-rc1# cp /boot/config-2.6.32-5-amd64 ./.config
/usr/src/linux-3.3-rc1# make menuconfig

まず、Device Drivers の中にある Microsoft Hyper-V guest support を開き、Microsoft Hyper-V client drivers (hv_vmbus 改め hid_hyperv) と Microsoft Hyper-V Utilities driver (hv_utils) を選択します。


実は、これだけじゃ足りないんです。次の場所に、Microsoft Hyper-V virtual network driver (hv_netvsc)、Microsoft Hyper-V mouse driver (hv_mouse)、Microsoft Hyper-V virtual storage driver (hv_storvsc) があるので、すべて有効化します。hv_storvsc だけ、Staging ツリーにまだ残っています。そのほかは、Staging ツリーから外れたのはいいですが、場所が分かりにくいです。

Device Drivers
    Network device support
        Microsoft Hyper-V virtual network driver
    HID Devices
        Special HDI drivers
            Microsoft Hyper-V mouse driver
    Microsoft Hyper-V guest support
        Microsoft Hyper-V client drivers
        Microsoft Hyper-V Utilities driver
    Staging drivers
       
Microsoft Hyper-V virtual storage driver

fakerootとmake-kpkgでカーネルをビルドし、debパッケージを作成します。2時間くらいかかります。


完成したdebパッケージ(2つ)をインストールして、再起動し、linux-3.3-rc1カーネルを起動します。

/usr/src/linux-3.3-rc1# cd ..
/usr/src# dpkg -i *.deb
/usr/src# reboot



linux-3.3-rc1 カーネルで起動します。


lsmod でモジュールの読み込み状態を確認。統合サービスのマウス統合、ハートビート、シャットダウン連携は機能しました。時刻同期が機能するには、adjtimex が必要かもしれません (たぶん)。

# apt-get install adjtimex


linux-3.3-rc1/tools/hv_kvp_daemon.c をコンパイルして動かすと、ホストとの KVP データ交換も動きます。

1 件のコメント:

山市 良 さんのコメント...

1/31 に linux-3.3-rc2 が出ましたが、hv_storvsc はまだ Staging のままでした。