FrontPage | changes | index | create | search | preferences |

VMware3

Last-Modified: Tue Sep 16 10:18; by KM
edit | copy | diff | rlog | raw
  1. 準備
  2. インストール
    1. vmnetの設定
  3. ipnat.rules
  4. ライセンスについて
  5. ゲストOSのインストール
    1. Windows
      1. Sambaによるファイルとプリンタの共有
      2. Samba3の場合
  6. その他
    1. emulators/rtc関連
  7. コメント
  8. 関連情報

FreeBSD 5.3にVMware Workstation 3.2.1をインストールした際のメモです。

準備

 カーネルのコンフィギュレーションファイルに、

 options        VFS_AIO
 options        NET_WITH_GIANT

を追加してaio(4)をカーネルに組み込むか、もしくは、/boot/loader.confに、

 aio_load="YES"
 debug.mpsafenet="0"

を追加して、モジュールを起動時に読み込むことにする(こちらの方が楽なのでおすすめ)。

 この例では、ipnatを使うので、カーネルのコンフィギュレーションファイルに、

 options        IPFILTER
 options        IPFILTER_LOG

を追加して、カーネルを再構築。

 VMwareは、linprocfs(5)を使用するので、/etc/fstabに、

 linproc     /compat/linux/proc    linprocfs    rw      0       0

を追加して、起動時、linprocfsを/compat/linux/procにマウントさせるようにする。

 /etc/sysctl.confに次の一行を加える。

 kern.ipc.shm_allow_removed=1

で、再起動。

インストール

 インストールは、いつも通り、

 cd /usr/ports/emulators/vmware3
 make install

とする。ただし、ネットワークのセットアップが次のように聞かれる。

vmnetの設定

画面説明
Do you want to configure vmnet interface? ホスト側と仮想PCをつなぐネットワークであるvmnetを設定するのでYesを選択。
Do you want use netgraph bridging? ブリッジ接続は使用しないのでNoを選択(こうすると、ホストマシンとしか通信が出来なくなるが、後でipnatを利用して外に出るようにするので問題なし)。
What will be the IP address of your host on your private network? vmnet内でのホストマシンのIPアドレスは、デフォルトの192.168.254.1で問題はないのでOKを押して次に進む。
What will be the netmask of your private network? サブネットマスクも、デフォルトの255.255.255.0でOK。
Are the following options correct? 確認画面に間違いが無ければ、Yesを選択してネットワークの設定を終了。

 これで、vmnetという仮想ネットワークのインタフェースが追加され、起動時、上記の設定で呼び出される。

ipnat.rules

 vmnetでは、host onlyを選択したので、ホストと仮想マシンの間でしか通信ができない。外に出れないと、困る場合があるので、ipnatを利用する。

 既にカーネルには、IPFILTERのオプションを付けているので、後は、/etc/ipnat.rulesを編集(無ければ作成)し、

 map fxp0 192.168.254.0/24 -> 0/32 proxy port ftp ftp/tcp
 map fxp0 192.168.254.0/24 -> 0/32 portmap tcp/udp auto
 map fxp0 192.168.254.0/24 -> 0/32

の様に書き加える*1。 この他、例えば、ホストマシン(IPアドレス192.168.0.2と想定)のポート1234にやって来たTCP接続を、vmnetの仮想マシン(IPアドレス192.168.254.2)のポート1234に転送したければ、

 rdr fxp0 192.168.0.2/24 port 1234 -> 192.168.254.2 port 1234 tcp

の様に書き加えれば良い。 詳細は、ipnat(5)を参照。

 以上の設定は、/etc/rc.confに

 gateway_enable="YES"
 ipnat_enable="YES"

を追加することにより、起動時、/etc/rc.d/ipnatのコマンドスクリプトが実行され、上記ルールが読み込まれる。

*1一行目はactive FTP(passive FTPではない方)を使いたい場合のルールで任意に記述して良い。proxyは、portmapよりも先に持ってこなければならない事に注意。2行目と3行目の記述は必須。2行目は、TCPもしくはUDPの接続の場合に適用され、3行目は、それ以外の接続に適用される。

ライセンスについて

 VMwareを起動すると、最初は、ダイアログ画面が立上り、シリアル番号を求められるので、適宜入力する必要がある*2FreeBSDLinuxエミュレーション機能で動作するVMwareでは、当然、Linux版のシリアル番号が必要である。Windows版とLinux版は、別ライセンスであることに注意。

*2ただし、現在は、VMware 3.xの取扱いは終了した模様で、体験版も含めて3.xバージョンのシリアル番号は入手できなくなっている。もしかすると、新たに入手するのは困難なのかも知れない。

ゲストOSのインストール

  • 仮想マシンを準備するため、ウィザードを使用したい場合は、VMwareGUIの画面から進むと、linuxのbashがcoreを吐いてウィザードを起動できないので、そういう場合は、「/usr/local/lib/vmware/bin/vmware-wizard」を直接実行する。
  • 何かをインストール中、異様に時間がかかるようであれば、メニューから、Settings→Miscと進み、Disable acceleationにチェックを入れてみると改善される場合がある。

Windows

Sambaによるファイルとプリンタの共有

 ゲストOSにWindows系のOSをインストールした場合、ホスト側とファイルやプリンタをネットワーク共有できるようにするためSambaをインストールしておくと便利です*3

 # cd /usr/ports/japanese/samba
 # make install

 インストールしたら、/usr/local/etc/smb.confの[global]のセクション内で、

 hosts allow = 192.168.0.0/24 192.168.254.0/24 127.0.0.1

などと書き換え、vmnet内(192.168.254.0/24)からの接続を、smbdに許可しておく必要があります。 そして、workgroupの名前をゲストOSとSambaで、同じものに統一します。

 もし、ホスト側のユーザのホームディレクトリを共有する場合、[homes]のセクションで、

 valid users  = %S

とした方がセキュリティ上、良いかも知れません。

 そして、smbdに接続するためのユーザとパスワードの設定を、smbpasswd(8)を使って行い、/etc/rc.confに

 samba_enable="YES"

を追加すればSambaを開始する事が出来ます。

 あと、もし、プリンタを使用する際、ホスト側ではなく、仮想マシンのWindows用のプリンタドライバを使用したい場合は、/usr/local/etc/smb.confの[printers]のセクションで、

 use client driver = yes

を追加し、仮想マシンの方にドライバをインストールすれば良いでしょう*4

Samba3の場合

japanese/samba3の場合は、/usr/local/etc/smb.confに、

 # charset settings
   display charset = CP932
   unix charset = EUCJP
   dos charset = CP932

のように設定しておく事が必要です*5

*3WindowsサーバのNTFS同様に、より細かく柔軟性を持ったアクセス制御を実現したい場合は、Sambaを「WITH_ACL_SUPPORT=yes」付きでコンパイルすると可能です。そうすることで、UFS2がサポートするようになったACL(Access Control List - アクセス制御リスト)を利用することができます(※利用するためにはtunefs(8)でACL有効化フラグをオンにしている必要があります)。詳細は、ONLamp.com: Using FreeBSD's ACLs参照。

*4これで、ゲストOSから、ネットワークを介して、対応プリンタから、プリンタブルCDにラベルを印刷するといった特殊な印刷も出来るようになりました。

*5ホスト側の日本語ファイル名をja_JP.eucJPとして管理している場合の設定。もし、converters/libiconvをWITH_EXTRA_PATCHESのオプションを付けてビルドしてあるのなら、EUCJP-MSのcharsetも使える。こちらの方が問題が起こる可能性は少なくなると考えられる。

その他

emulators/rtc関連

 VMwareを起動していると、demsg(8)のログに、

 rtc: 100 > kern.hz: Timing will be inaccurate, please increase hz.

と延々と繰り返されており、鬱陶しい。この警告は、/boot/loader.confに

 kern.hz="1000"

と書いて、再起動すれば、ある程度止むようです*6*7

 ちなみに、余談になりますが、OSの内部タイマーをデフォルトの100Hzから1000Hzに変更すると*8FreeBSDの場合でも、NetcraftでUptimeを取得する事が出来なくなります。

*6しかし、そうした場合、私の環境では、VMwareを全画面表示にすると、OSごと落ちてしまう…。

*7と思ってたら、emulators/rtc/files/rtc.c - Revison 1.17の変更で「kern.hz」を1000以上に設定すると警告されなくなった模様です。なお、FreeBSD 6.xからは、kern.hzはデフォルトで1000に設定されています。

*810ミリ秒に1回の割り込み(毎秒100回)→1ミリ秒に1回の割り込み(毎秒1000回)

コメント

Mon Jan 03 21:54 2005 KM: 先日、cvsupでportsを更新したら、linux_baseのデフォルトが7から8に上がっていたので、それに依存しているものをビルドし直しました。その際、emulators/vmware3の方が、vmnetが正常に機能しない等、おかしな事になっているようです。これは、/usr/ports/emulators/vmware3/Makefileの最後にある、

 .if exists(${WRKDIR}/Makefile.inc.net)
 .include "${WRKDIR}/Makefile.inc.net"
 .endif
 
 .include <bsd.port.post.mk>

 .include <bsd.port.post.mk>
 
 .if exists(${WRKDIR}/Makefile.inc.net)
 .include "${WRKDIR}/Makefile.inc.net"
 .endif

とする事で回避できます。

Thu Feb 17 02:55 2005 KM: 現時点の5.3-STABLEでは、PR:76644と同じ症状で、こちらの環境でもOSが落ちました…。VMware4.5.xのportingに取り組んでいるようです。

Sat Jul 02 21:04 2005 KM: 5.4-RELEASEでも駄目でした。

Fri Oct 14 20:45 2005 KM: Mon Jan 03 21:54 2005に書いた問題は、emulators/vmware3/Makefile - Revision 1.88で修正されたようです。

関連情報

  • FreeBSD - このWikiフォーラム内におけるFreeBSDに関係するものの目次です。 ...