VMware ESXiでMarvellのNICを使えるようにする

| コメント(0) | トラックバック(0) |

現在、仮免許試験に無事通過しまして、ホットしているところです。ちょっとハンドルがもたついて、S字の出口でふらつきましたが、結果は大丈夫でした。エンストもなく、そこそこな出来だったと思ってます。


はい、本題に入ります。

VMware ESXi 4は、仮想サーバを構築するためのOSです。かなり高機能なのですが、対応しているハードウェアが少ないというデメリットがあります。独自OSですから仕方ないですね。

さて、家のサーバには、2つのNICが刺さっています。一つは、Intel製、もう一つはMarvell製です。ESXiでは、Intel製のNICしか認識できなく、Marvell製のNICは動作しませんでした。

ちょっとESXiのShellで調べてみたところ、どうやら認識はしているようです。(lspci コマンドで確認できます) ですが、動作はしていないようです。dmesg コマンドで確認したところ、ドライバが正常に動作していないみたいです。

インターネットで調べたところ、Marvell製のNICは、sky2というカーネルモジュールが必要と言うことがわかりました。sky2は、ESXiに導入されていますが、ステータスが間違っているようです。なので、VMware ESXiのソースからコンパイルし直せば、動作するはずです。しかし、そんな難しいことはよくわからないので、海外サイトにその情報とコンパイル済みのモジュールがあったので、リンクを張っておきます。

Using a Marvell LAN card with ESXi 4

このサイトから、ドライバデータを引っ張ってきて、インストールすることにします。このサイトの情報を読めば大体わかるのですが、英語が苦手なので、自分自身で適当にハックしてインストールしてみました。

次のコマンドを打ち込めば、完了します。

wget http://www.kernelcrash.com/blog/wp-content/sky2-and-skge-for-esxi4-0.02.tar.gz # モジュールを参考サイトからダウンロードする
tar zxvf sky2-and-skge-for-esxi4-0.02.tar.gz # ファイルを展開する
rm -rf vmware-oss # ソースコードは要らないので削除する
cd vmtest # モジュールが入っているディレクトリに移動する
tar zcvf /vmfs/volumes/Hypervisor1/oem.tgz * # モジュールを書き込む
cd ..
rm -rf vmtest # コピーしたので不要なデータを削除する
reboot # 再起動する

これで無事にMarvell製のNICを認識することができます。ただし、すべてのMarvell製のNICで動作するかわかりません。あくまで自己責任でお願いします。

 

補足説明

VMware ESXiは、起動時にすべてのデータをメモリに転送し、そのファイルシステムでOSを起動させています。要するに、RAMディスクを構築しているわけです。当然、RAMディスクなので、どれだけ書き込んでも再起動すれば元通りになります。書き換えるには、起動時に読み込むファイルを変える必要があります。それが、/vmfs/volumes/Hypervisor1/*.tgz ファイル群です。

読み込む順序が設定されており、もしちがうtgzファイルに同じファイルがあれば、あとのファイルが優先されるようになっています。(優先順位は、ブートローダの設定に書いてあります。また、書き換えると、起動しなくなる可能性があります。)

独自で用意したファイルを使用したいときは、/vmfs/volumes/Hypervisor1/oem.tgzを書き換えます。初期状態では、空のアーカイブファイルになっています。ここに、カーネルモジュールや設定ファイルを置いておけば、再起動してもデータが消えることはありません。

今回は、oem.tgzにファイルを追加して読み込むようにしました。すでに、モジュールファイルが存在していますが、先ほど述べたように、読み込む順位が後の方に指定されているので、こちらが優先されます。このようにして、改造することができます。

トラックバック(0)

トラックバックURL: https://www.letstryit.net/mt/mt-tb.cgi/182

コメントする

アーカイブ

カウンタ

Total
Today
Yesterday

IPv6 Ready

Powered by Movable Type 7.0