2007/05/14(月)Borland C++ Builder 5をユーザー権限で使う

BDE5 は、管理者権限(Adminstrator)でインストール後、実ユーザー(一般ユーザー権限)で使用しようとすると、コンポーネント(ボタンなど)が一切表示されず(エラーになり)使い物になりません。

これは、BDEインストーラーが、ソフトウェアの設定をユーザー個人のレジストリに保存するためです。これを解消するには次のようにします。

  1. インストールーしたユーザーのレジストリを開き、HKEY_CURRENT_USER\Software\Borland 以下をすべて保存する。
  2. BDEを使用したいユーザーでログインし、保存したレジストリを挿入する

2007/04/17(火)VMware player に ethernet を占有させる

LANカードを1枚余計にさして、ホストマシンでは使用せずに VMware 上の仮想マシンに占有させるために格闘してみました。

VMWare のネットワークの仕組

VMware3.0 の Network の設定方法というサイトにネットワークの仕組が書かれています。要するに、VMware内のネットワークはすべて仮想的なネットワークであるVMnetを経由して外部に接続されます。VMnet1やVMnet8などは、仮想的なネットワークの個別の名前です。そういう名前の「HUBがある」と思えば分かりやすいかもしれません。

VMnet0ブリッジ用のネットワーク
VMnet1hostonlyホストオンリー用(仮想マシンとホスト間のみで通信できるネットワーク)
VMnet8natネットワーク用(仮想マシンから、ホストをNATとして外部に通信)

この他、VMnet2~VMnet7は自由に使うことができます。自由というのがくせもので、きちんと設定してあげる必要があります。ホストOS(VMwareが動くOS)上の物理イーサネットをどのVMnet*に割り当てるかは設定ツールが存在します。

Windows ならば c:\program files\vmware\vmware player\vmnetcfg.exe(vmplayerの場合)、Linux ならば vmware-config.pl というスクリプトがあります。この設定は重要です。例えば、VMnet2 に特定のインターフェイスカードをブリッジとして割り付けます。

vmxファイルの設定

続いて、仮想マシン上の ethernet を、特定の VMnet に結びつけます。vmx を次のように設定します。ethernet1 を特定インターフェイスに割り付けます。

ethernet0.present = "true"
ethernet0.connectionType = "bridged"

ethernet1.present = "true"
ethernet1.connectionType = "custom"
ethernet1.vnet = "VMnet2"

ゲストOS(VMware上のOS)がLinuxならば、eth0 が通常の bridge共有、eth1 が占有インターフェイス(Bridge扱い)となります。

ホスト側がWindowsのときの設定

VMwareのホストに占有させたいネットワークカードのプロパティを開き、VMware brigde 以外のプロトコルのチェックを外します。これで占有になりますが、このままではネットワークの接続検出に失敗することがあるようなので、その場合は TCP/IP と適当な IP だけ設定しておきましょう。

2007/01/27(土)VMware player (vmplayer)のハマりどころ(on ubuntu)

vmware のうち VMware Player(無償版) について

vmplayer とは、vmware のうち仮想マシン実行環境のコア部分のみを無償で提供しているものです。VMware Workstation などは使ったことがないので比較は難しいですか、仮想マシンを利用する上での便利機能などが削られ、単純に仮想マシンを使うのみとなるようです。

ubuntu の上にインストールしてみたのですが、色々ハマリどころ(や疑問に思った点)があったので、記事にまとめておきます。

なお、vmware (vmplayer) が動作するOSをホストOS、vmware の上にインストールするOSをゲストOSと言います。(vmwareを調べていると)よく出てくる言葉なので覚えておきましょう。

vmxファイルを作る方法がない

vmplayer には、仮想マシンの定義ファイルである、拡張子 vmx のファイルを作成する機能が付いていません。このファイルはただのテキストファイルですので手書き可能ですが、一般の方にはややハードルが高いと言わざる得ないでしょう。適宜覚書はてな異本というサイトで、作成ツールが紹介されていますので参考にしてみてください。

vmdk を作ることができない

vmplayer には仮想HDDのイメージファイルである vmdk を作成する機能がありません。ベタファイルを仮想HDDとみなしてマウントすることは不可能ですqemuというフリーのエミュレーターを利用し、次のようにイメージファイルを作成します。

$ qemu-img create -f vmdk disk-img.vmdk 4G

強調部分はそれぞれファイル名、HDD容量となっています。ランレングスか何かで圧縮されているらしく、どんな容量のディスクイメージを作っても中身を使わない限り小さなファイルとなるのが特徴です。

vmware-toolsが必要

Linux や Windows などのゲストOSをより快適に動作させるためには、VMware用のドライバをインストールする必要があります。これらを vmware-tools と言います。vmplayer には vmware-tools は付属していないので、まず vmware-server などをダウンロードします(使用制限はありますがダウンロードは誰でもできます)。

そしたら、tools-key.pub というファイルのあるディレクトリを探してください。その中に、各OS用のデバイスドライバが ISOファイル(CDのイメージファイル)として格納されています。これらを、各OSにインストールします。VMware Workstation などではボタン操作一発でインストールされたりするようですが*1、vmplayer では地道に手動でインストールする必要があります。

VMware Shared Foldersについて

VMwareにはゲストOS上でホストOS上のファイルシステムを直接操作する機能があります。それを[gShared Folder]といい、vmxファイルで次のように指定します。

sharedFolder.option = "alwaysEnabled"
sharedFolder.maxNum = "1"
sharedFolder0.present = "TRUE"
sharedFolder0.enabled = "TRUE"
sharedFolder0.readAccess = "TRUE"
sharedFolder0.writeAccess = "TRUE"
sharedFolder0.hostPath = "/data"
sharedFolder0.hostName = "host"
sharedFolder0.guestName = "share"
sharedFolder0.expiration = "never"

ゲストOSがWindows 2000/XPなどの場合、ネットワーク全体の中身に「VMware Shared Folders」というフォルダが確認できますが、ダブルクリックすると「ネットワークを参照できません。ネットワークが存在しないか、起動されていません」と表示されます。結構ハマったのですが、結論としては「VMware Player 1.0.x(vmplayer)では Shared Folders は利用出来ない」ということになります。

これが利用出来るのは、VMware ServerやVMware Workstationのみのようです。sharedFolder0 の設定がエラーもなく読み込まれるので一瞬動くと勘違いするのですが、動きません。……警告ぐらい出してほしいところですけどね。

VMware Player 2.0からSharedFolderが利用できるようになりました。vmplayer のメニューに設定項目がありますので、そこから設定する方が楽でしょう。

ホストOSとゲストOS間の通信のみが異様に遅い

ホストOSがLinux等のときに発生するようですが、Samba や ftp などの通信が異様なほど遅くなることがあります。しかも、ゲストOS←→外部ネットワークはなんの問題もなく、何十Mbps も出るにもかかわらず、ホストOSとの通信のみが遅くなります。

この現象の解説と解決策は、VMware on AMD Athlon 64 X2のブリッジ接続時の通信性能に書かれていますが、VMware起動前に次のコマンドを実行してください(すでに起動済ならば、vmplayer の再起動でokです)。

# ethtool -K eth0 tso off

いちいち実行するのが面倒ならば、rc.localなどに書いてしまってもよいでしょう。この現象はかなり意味不明で、ものすごくハマりました。

アンダースコア(_) が入力出来ない

ホストOSがLinux等のときに発生するようですが、アンダースコアキーを押しても全く反応がありません。これを解決するには、~/.vmware/config というファイルを作成し、次の設定を書き込んでください。

xkeymap.keycode.211 = 0x073

*1 : 過去にそんな光景を見た気がする