VMware ESXi 4 のカスタム oem.tgz を作成する
ESXi 4.0.0 Update1 に標準の Broadcom ドライバ(tg3.o)は、Broadcom NetLink BCM57780 に未対応なため、VMware Open Source と Broadcom の最新のドライバのソースコードから ESXi 用のドライバをビルドし、カスタム oem.tgz を作成する。
目次 |
必要なもの
VMware Open Source
Broadcom NetLink BCM57780 ドライバのソースコード
USB メモリブートする VMware ESXi 4
ESXi 4 用に Broadcom NetLink BCM57780 ドライバをビルドする
ビルド環境
CentOS 5.5 x86_64
- ESXi 4 が 64bit なので x86_64 環境が必要。
gcc
- CentOS インストール時に、パッケージグループのベースシステム - ベースのみインストールし、インストール後
yum -y install gcc
しただけの環境でドライバのビルドができる。
ビルド手順
VMware-esx-public-source-4.0-208249.tar.gz と linux-3.105h.zip をホームディレクトリにコピーする。
VMware-esx-public-source-4.0-208249.tar.gz を、作成した vmware-oss ディレクトリ内に解凍する。
cd ~ mkdir vmware-oss cd vmware-oss tar -xzf ~/VMware-esx-public-source-4.0-208249.tar.gz
解凍してできた vmkdrivers-gpl.tgz を drivers ディレクトリに解凍し、tg3 ドライバのソースを全て削除する。
mkdir drivers cd drivers tar xzf ../vmkdrivers-gpl.tgz rm -f vmkdrivers/src26/drivers/net/tg3/*
linux-3.105h.zip を解凍後、ドライバのソースコードを vmware-oss 内の tg3 ディレクトリにコピーする。
cd ~ unzip -jp linux-3.105h.zip Server/Linux/Driver/tg3-3.105h.tar.gz | tar -xzf - cp tg3-3.105h/* vmware-oss/drivers/vmkdrivers/src26/drivers/net/tg3/
vmware-oss 内の tg3 ディレクトリに移動し、tg3_flags.h を作成後、tg3_flags.h に #define VMWARE_ESX_40_DDK の行を追加する。
cd ~/vmware-oss/drivers/vmkdrivers/src26/drivers/net/tg3/ ./makeflags.sh ~/vmware-oss/drivers/vmkdrivers/src26/ > tg3_flags.h vi tg3_flags.h
このままビルドしてもエラーになるため、tg3.c を下記のように修正する。[1][2]
--- tg3-3.105h/tg3.c 2010-02-05 09:35:28.000000000 +0900
+++ vmware-oss/drivers/vmkdrivers/src26/drivers/net/tg3/tg3.c 2010-05-29 10:19:00.000000000 +0900
@@ -15310,7 +15310,11 @@
#ifdef BCM_HAS_NEW_INIT_WORK
INIT_WORK(&tp->reset_task, tg3_reset_task);
#else
+#if 0
INIT_WORK(&tp->reset_task, tg3_reset_task, tp);
+#else
+ INIT_WORK(&tp->reset_task, tg3_reset_task);
+#endif
#endif
tp->regs = pci_ioremap_bar(pdev, BAR_0);
build-vmkdrivers.sh スクリプトを使い、ドライバをビルドする。
cd ~/vmware-oss/drivers/ ./build-vmkdrivers.sh
ドライバファイル(tg3.o)は、ディレクトリ ~/vmware-oss/drivers/bora/build/scons/build/vmkdriver-tg3.o/release/vmkernel64/ 内にできるので、コピーして利用する。
oem.tgz を作成する
oem.tgz は、ESXi が起動する時に自動的に展開され、展開したディレクトリ構成のまま ESXi のシステムを上書きする。 |
NIC の情報を取得する
あらかじめ、USB メモリブートする VMware ESXi 4 を用意し、USB メモリでブートする。
NIC が未対応だと起動途中で止まるので、unsupported
とタイプし(画面に表示されないので注意) Tech Support Mode に切り替える。
Password: は、デフォルトでは空白なので、設定していなければ何も入力しない。
手動で Tech Support Mode に切り替えるには、起動途中(黄色と黒の画面の時)に |
Tech Support Mode ではシェルが使えるようになる。
該当する NIC の情報を lspci
と hwinfo
コマンドを使い取得する。
hwinfo -p
は、赤文字の部分をキーにすることで判別する。
~ # lspci -v 01:00:00 Ethernet controller Network controller: Broadcom Corporation Class 0200: 14e4:1692
~ # hwinfo -p
01:00:00 14e4:1692 10cf:1533 10/ 10/0x79 A V
simple.map と pci.ids をコピーする
oem.tgz を作成するために必要な simple.map と pci.ids をブートした USB メモリにコピーする。
- この simple.map と pci.ids に NIC の情報を追記し oem.tgz を作成することになる。
cp /etc/vmware/simple.map /bootbank/ cp /etc/vmware/pci.ids /bootbank/
/bootbank ディレクトリは、ESXi の USB メモリを Windows や Mac に接続したときに見える Hypervisor1 ボリュームと一致する。 |
reboot
コマンドで、ESXi を終了する。(/sbin/shutdown.sh でも終了するかもしれない。)
~ # reboot
simple.map と pci.ids を編集する
simple.map と pci.ids を適当なテキストエディタで編集する。[3]
simple.map に下記行を追記する。
14e4:1692 10cf:1533 network tg3.o
pci.ids に下記行を追記する。
14e4 Broadcom Corporation 省略 1684 NetXtreme BCM5764M Gigabit Ethernet PCIe 1692 NetLink BCM57780 Gigabit Ethernet PCIe ←この行を追加する 1693 NetXtreme BCM5787M Gigabit Ethernet 省略
oem.tgz を作成する
編集作業後の pci.ids と simple.map、ビルドした tg3.o ファイルを、下記のようなディレクトリ構成を作り、配置する。
oem |-- etc | `-- vmware | |-- pci.ids | `-- simple.map `-- usr `-- lib `-- vmware `-- vmkmod `-- tg3.o
例えば /tmp とかに作る。
mkdir -p /tmp/oem/etc/vmware mkdir -p /tmp/oem/usr/lib/vmware/vmkmod
oem.tgz のディレクトリ構成は、起動中の ESXi のディレクトリ構成と同じ。 ESXi のディレクトリ構成を確認する方法としては、
|
etc と usr ディレクトリを oem.tgz というファイル名で固める。(ディレクトリやファイルのパーミッションをいろいろと編集しなくても問題なく動く。)
cd /tmp/oem tar czf oem.tgz etc usr
固めた oem.tgz を Hypervisor1 ボリュームにコピーして完成。
USB メモリからブートし、vSphere Client のネットワークアダプタで確認。
Download
今回作った oem.tgz vmware-esxi4-BCM57780-oem.tgz (721KB)
脚注
- ↑
diff -u tg3-3.105h/tg3.c vmware-oss/drivers/vmkdrivers/src26/drivers/net/tg3/tg3.c
- ↑ http://imarginal.wordpress.com/2010/05/19/dell-のマグロを鯖にする/
- ↑ ここからの手順は Mac OS X でも問題なくできる。
参考ページ
VMware 関連のページ
- USB メモリブートする VMware ESXi 3.5 を作成する . . カテゴリ: USBメモリ | VMware
- VMware ESXi 3.5 update 2 の仮想マシンが起動しなくなるバグ . . カテゴリ: VMware
- VMware ESXi 3.5 ホストの ssh サーバを有効にする方法 . . カテゴリ: SSH | VMware
- VMware ESXi で容量可変の仮想ディスクを作成/変換する . . カテゴリ: VMware | ディスク管理