Kernel/VM Advent Calendar 54日目: LinuxICをCentOSに入れる


LinuxIC = Linux Integration Components

ご存じの方も多いかと思う。正式には

Linux Integration Services v2.1 for Windows Server 2008 Hyper-V R2

そう、Hyper-VのゲストOSとしてLinuxを使用する際に必要なツールだ。

Linux一筋な人にはさりげなく関係がない話になってしまう。(Hyper-Vは当然WindowsベースのVMなので)

Hyper-Vを運用したことがある人は、Hyper-Vのネットワークアダプターが二種類あることに少し疑問をいだいたことがあるかもしれない。

「ネットワーク アダプター」

「レガシ ネットワーク アダプター」

実際のコンソールではどうなっているか

ネットワークアダプターの説明は

ゲスト オペレーティング システムに統合サービスをインストールする場合、ネットワークアダプターにはインストール済みのドライバーが必要です。

一方、レガシネットワークアダプターは

ゲスト オペレーティング システムのネットワークベース インストールを実行する場合、または統合サービスがゲスト オペレーティング システムにインストールされていない場合は、レガシ ネットワーク アダプターを使用してください。

いっちゃえば、普通のNICの様に動くのがレガシネットワークアダプター、Hyper-V独特の動きをするのがネットワークアダプターだ。

これだけ見れば、わざわざ統合サービスを入れてまで、ネットワークアダプターを使う必要は無いように思える。

しかし、レガシネットワークアダプターは100Mbpsでの通信しかできないため、ギガビット通信ができないのだ。

本格的にネットワーク通信を行う際は相当ネックとなる。

おまけに、ネットワークアダプターと比べて、オーバーヘッドが大きいので、同じ量の通信でも、より大きなCPUや内部IOを使ってしまう。

そして、統合サービスはこのHyper-V管理ツールからゲストオペレーティングシステムにインストールできる。

ただしWindowsに限る

(なお、Windows7、Windows Server 2008 R2には標準でインストールされているので、これすら不要です)

じゃあLinuxはだめなのか!

さすがのMicrosoftもそんなことはしない

Hyper-V におけるゲスト オペレーティング システムのサポート

ちゃんと、SUSE、RHELのx86とx64の両方に対応している。

CentOSはRHELとほぼ同じなので、保証はされていないが動くということだ

とりあえず、インストールしよう

http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=eee39325-898b-4522-9b4c-f4b5b9b64551

ここからLinuxIC v2.1をダウンロード!

Windowsバイナリが落ちてくるので、それを実行すると、isoが出てくるので、対象のLinuxが入ったVMにマウント

/media/CDROM

にデフォルトではマウントされるので

rootになって

mkdir /opt/LinuxIC

cp -rf /media/CDROM/* /opt/LinuxIC

などでコピー

で、コンパイラなどなどいれてないかもしれないので、入れる

yum groupinstall “Development Tools”

で、LinuxICのディレクトリでmake

make

make install

インストール自体はこれで終了

再起動すれば、ネットワークアダプターが動きます

めでたしめでたし・・・・と言いたいところだが、とある時、カーネルアップデートをして、再起動したらKernel panic!!!!!!!!!

Oh…..どうした

とまあ、LinuxICはkernel-develなどの内容と共にビルドされるので、当然カーネルが変わったらビルドしなおさないといけません。

うひゃあ。とりあえず、起動しないとことが始まらない

まだ、アップデートしたあと、再起動してないのなら/boot/grub/grub.confを開く、もし再起動してpanicしてるひとは、grubでエディタを起動して、編集

対象のブートパラメータのkernelの部分

kernel /vmlinuz-2.6.18-194.32.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet notsc divider=10 hda=noprobe hdb=noprobe

とかなっている部分の「hda=noprobe hdb=noprobe」を削除してから、起動する

そうすると、LinuxICは読み込まれないので、ネットワークアダプターは動きませんが、panicにはなりません

で、もう一度LinuxICを同じ手順でビルドすると、LinuxICも正常に入り、grubのパラメータも修正されるので、再起動すればOKです!

ついでに、 hda=noprobe の意味は/dev/hda、つまりプライマリIDE HDDのドライバを自動検索しないという意味。LinuxICがこれをつけないと読み込まれないということは・・・・・おっと、僕の知識ではこれ以上はわからない。

だれか詳しい人、助言を頼む

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください