vmware player から vmware ESXi に移植

まあ余りレビューするものでも無いっていうか、おんなじ技術使ってるんだから行けて当然だよねーと言われて終わりの気がしますが。
vmware player 3.1.2 build-301548 上で動作している Windows XP を vmware ESXi 4.1.0 へ移植してみました。といってもライブマイグレーションは使えないので、コールドコピーになります(これだけでこの記事の価値が半減しそう)

vSphere Client 上で「サマリ」->「データストア」のHDD上で右クリックして、「データストアの参照」をクリック。【データストアブラウザ】が起動したら、フォルダのアップロードからインポートしたい vmware player のフォルダをインポートします。だいたいは、「マイドキュメント」の中に「Virtual Machines」というフォルダがあって、その中にOS毎にフォルダができているはずなので、このOSフォルダ毎アップロードすればいいです。

そうしたら、vSphere Client から 「ファイル」 -> 「新規」 -> 「仮想マシン」 と選択、「カスタム」を選択してそのまま進みます。データストアはどこでもいいですが、名前を付ける際に先程インポートしたフォルダと同名にしてしまうと厄介なので、別の名前にします。ゲストOSは、インポートするOSと同様に。今回は 「Windows XP Professional (32-bit)」を選択。

「ディスクの選択」までは次へでかまいません。

「ディスクの選択」は「既存の仮想ディスクを使用」にし、参照から先程インポートしたフォルダに移動します。すると1つだけ選択できるファイル(****.vmdk)があるはずなので、それを選択してください。

以上です。
vmdk が分割していても大丈夫です。(vmdk自身に分割情報が書かれているので)

vmware player 自身のvmx設定ファイル使う方法もあるんですが、面倒なので割愛。
vmdkがそのまま移行できて、何も編集しないで ESXi に持っていけるだけでも楽だと思います。

Windows2008 で .NET Framework 3 を入れる

windows 2008 をテストしていて、.NET Framework をインストールしようとし、Microsoftのページからダウンロードして実行したところ…

「インストールするにはロール管理ツールを使用するかまたは…」

と表示されてインストールできませんでした。
今後も使いそうというか、また同じネタで引っかからないようにインストール方法。

「スタート」 -> 「全てのプログラム」 -> 「管理ツール」 -> 「サーバーマネージャー」

サーバーマネージャーの画面が表示されたら、「役割」で右クリックして「役割の追加」を選択。次の画面で「アプリケーションサーバー」という項目にチェックを入れて、後は進んでいけば入りました。

単純に SQL Server 2008 をインストールしようとしたら、.NET Framework が必要って言われたのです。まさかこんなに手間だとは思いませんでした。

vmware ESXi 4.1.0 で NIC が認識しない!ので対応してみた

知人より頂いた ASUS P5B Deluxe 折角なので、 vmware の実験でもしようと思って USB にインストールして Boot させてみた。

ま、ネットの情報に有象無象あるように、オンボードのネットワークカードが認識しない。これは想定の範囲。で、とりあえずぐぐってみたところ…だいたいが Intel PRO/1000 (安価なのだと PWLA8391GT )買ったとか、ESXi内のデータストアへ入れるとか無茶難題ばかり。
データストアに入れるまで持っていけないんじゃ!というわけで、何とか手持ちの Linux だけでできないか試してみた。

とりあえず、USBメモリの中身を 確認してみる。自分は microUSB 2GB を 100円ショップで買ってきたアダプタに差して使っているので参考にどうぞ。

Device Boot Start End Blocks Id System
/dev/sdc1 5 900 917504 5 Extended
/dev/sdc4 * 1 4 4080 4 FAT16 <32M
/dev/sdc5 5 254 255984 6 FAT16
/dev/sdc6 255 504 255984 6 FAT16
/dev/sdc7 505 614 112624 fc VMware VMKCORE
/dev/sdc8 615 900 292848 6 FAT16

で、肝心の mount 場所は /dev/sdc5
というわけで、そこをマウントする。めんどくさいので、 /mnt に入れてしまった。
その前にmymod-network.new2.tgz をダウンロードしておく事。自分は /tmp に置いておいた。

mount -t vfat /dev/sdc5 /mnt
cd /mnt
cp /tmp/mymod-network.new2.tgz ./

はい、終了。 umount して USB メモリから boot する。vmware ESXi が起動したら、コンソールモードでコンソールログインする。[Alt]+[F1] で入れる。administrator で何ちゃらと表示されたら、 [F2]の設定画面の TroubleShooting Configure の一番上のなんとかって項目を Enable にする。

cd /vmfs/volumes/Hypervisor1/
cp ./mymod-network.new2.tgz ./oem.tgz
reboot

これで普通は大丈夫。

だが、自分のところではコレでは認識しなかった…ネットで更に情報を調べてみるとVMware ESXiでMarvellのNICを使えるようにするという情報があり参考させていただく事に。

さっきと同じ様に

mount -t vfat /dev/sdc5 /mnt
cd /mnt
wget http://www.kernelcrash.com/blog/wp-content/sky2-and-skge-for-esxi4-0.02.tar.gz

はい、終了。 さっきと同じように umount して USB メモリから boot する。vmware ESXi が起動したら、コンソールモードでコンソールログイン。

mkdir /tmp/work ; cd /tmp/work
cp /vmfs/volumes/Hypervisor1/sky2-and-skge-for-esxi4-0.02.tar.gz ./
tar zxvf sky2-and-skge-for-esxi4-0.02.tar.gz
cd vmtest
tar zcvf /vmfs/volumes/Hypervisor1/oem.tgz *
cd /tmp ; rm -rf work
reboot

以上終了。oem.tgz を書き換えたので Marvell Yukon (sky2.o) 利用するサーバでしか動作しないけど、ひとまずこれで大丈夫。

というわけで動作写真。 ここ  で NIC に振られているMACアドレスが検索できるので、001A92で検索すれば ASUSTek COMPUTER INC. に割り当てられていると確認可。

[FYI] freebsd 8.1 + apache 2.2 の起動時に ‘httpready’ エラー

freebsd 8.1 の環境で、 apache 2.2 を source compile してインストールし起動しようとすると、以下のようなエラーを吐く。

[warn] (2)No such file or directory: Failed to enable the ‘httpready’ Accept Filter

そんなフィルターを入れろって事らしい。結論から言うと、次の様にすれば良い。

# vi /boot/loader.conf
accf_http_load=”YES” ← 追加

# vi /etc/rc.conf
apache22_http_accept_enable=”YES” ← 追加

これで再起動すれば apache 起動時のエラーは回避できる。httpready って freebsd の kernel モジュールで CPU 負荷軽減するものらしい。ちなみに、エラーを気にしなければ、それはそれで良いみたい。

pecl:ssh2 on freebsd 8.1 インストール方法

pecl:ssh2 は freebsd で動作させる場合、現時点では ver 0.11.0 じゃないとエラーが起こるようだ。

ver 0.11.2 の場合、こんな感じ。

# make
/bin/sh /usr/local/src/libtool –mode=compile gcc -I. -I/usr/local/src -DPHP_ATOM_INC -I/usr/local/src/include -I/usr/local/src/main -I/usr/local/src -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/include -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/ssh2.c -o ssh2.lo
gcc -I. -I/usr/local/src -DPHP_ATOM_INC -I/usr/local/src/include -I/usr/local/src/main -I/usr/local/src -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/include -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/ssh2.c -fPIC -DPIC -o ssh2.lo
/usr/local/src/ssh2.c:50: error: expected ‘)’ before numeric constant
/usr/local/src/ssh2.c: In function ‘php_ssh2_session_connect’:
/usr/local/src/ssh2.c:352: error: ‘php_ssh2_alloc_cb’ undeclared (first use in this function)
/usr/local/src/ssh2.c:352: error: (Each undeclared identifier is reported only once
/usr/local/src/ssh2.c:352: error: for each function it appears in.)
/usr/local/src/ssh2.c: In function ‘zif_ssh2_methods_negotiated’:
/usr/local/src/ssh2.c:498: warning: passing argument 4 of ‘add_assoc_string_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:499: warning: passing argument 4 of ‘add_assoc_string_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:503: warning: passing argument 4 of ‘add_assoc_string_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:504: warning: passing argument 4 of ‘add_assoc_string_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:505: warning: passing argument 4 of ‘add_assoc_string_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:506: warning: passing argument 4 of ‘add_assoc_string_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:511: warning: passing argument 4 of ‘add_assoc_string_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:512: warning: passing argument 4 of ‘add_assoc_string_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:513: warning: passing argument 4 of ‘add_assoc_string_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:514: warning: passing argument 4 of ‘add_assoc_string_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c: In function ‘zif_ssh2_fingerprint’:
/usr/local/src/ssh2.c:553: warning: initialization discards qualifiers from pointer target type
/usr/local/src/ssh2.c: In function ‘zif_ssh2_publickey_add’:
/usr/local/src/ssh2.c:1040: warning: passing argument 1 of ‘_efree’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c: In function ‘zif_ssh2_publickey_list’:
/usr/local/src/ssh2.c:1099: warning: passing argument 4 of ‘add_assoc_stringl_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:1100: warning: passing argument 4 of ‘add_assoc_stringl_ex’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c:1108: warning: initialization discards qualifiers from pointer target type
/usr/local/src/ssh2.c:1109: warning: passing argument 2 of ‘zend_hash_add_or_update’ discards qualifiers from pointer target type
/usr/local/src/ssh2.c: At top level:
/usr/local/src/ssh2.c:1297: error: ‘php_ssh2_first_arg_force_ref’ undeclared here (not in a function)
*** Error code 1

Stop in /usr/local/src.

なので、

cd /usr/ports/security/libssh2
make install

http://pecl.php.net/get/ssh2-0.11.0.tgz
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make ; make install

これでインストールできる。
後は php.ini に ssh2.so を 書いてあげればいい。
phpize のパスはセットアップする方法によって変わるから注意。