Bochs on Windows(ネットワーク環境構築例)
Bochs(boxを文字ったものでボックスと発音)はPlex86と同様のフリーのx86エミュレータです。
BochsはCPU自体を仮想化しておりx86以外のCPUでもx86をエミュレートできるのが大きな特徴です。
BochsではNE2000互換のネットワークカードをサポートしていますが、Bochs 2.2(2005年5月28リリース版)では
i440FX PCIチップセットのエミュレートを追加サポートし、ゲストOSの中でPCIベースのNE2000互換カードや
VGAカード(Cirrus)も使用できます。
またBochsはインストール不要なので安心して使用できますが、QEMU等に比べるとかなり性能面でのオーバヘッドがあり
あまり実用的ではないようです。
「Bochs on Windows」でネットワークを使用する場合、通常はWinPcapというパケットキャプチャライブラリを使用することで
ゲストOSはホストOSやそのホストOSに接続された他のPC(OS)とも自由にネットワーク接続することができるようになります。
尚、WinPcapを使用しない仮想ネットワーク型(vnet)ではゲストOSのIPアドレスは192.168.10.1でDHCPサーバやDNSサーバは
192.168.10.2となり、ホストOSとのネットワーク接続はかなり制約されたものとなります。
ここではホストOS(Windows XP)にWinPcapと「Bochs on Windows」を導入し、そのBochsにVine Linux 3.1をインストールして
種々のネットワーク接続ができるような環境を構築する例を紹介します。
1.マシン環境
「Bochs on Windows」を動作させるホストマシン環境は以下の通りです。
- CPU:Pentium 4 560J(3.6GHz)
- マザーボード:i925XE ATX
- チップセット:Intel 925XE Express Chipset
- メモリ:2GB
- VGAカード:nVIDIA GeForce 6600(VRAM:128MB)
- LANカード:Marvell Yukon 88E8050 PCI-E ASF Gigabit Ethernet Controller
- HDD:内蔵型S-ATA 250GB(7200rpm)
- ホストOS:Windows XP SP1
- Windows XPのファイルシステム:NTFS
- WinPcap:3.1
2.ゲストOS環境
ゲストOSとしては誰でも手軽に入手できるVine Linux 3.1(Kernel 2.4.27-0vl7)を使用します。
またゲストOSが動作する仮想マシンには1024MBのメモリを割り当てます。
3.Bochsソフトウェア
- Bochs on Windows:2.2.1(2005年7月版)
- ゲストOSインストール用設定ファイル
ゲストOSインストール用設定ファイル(bochsrc)の主な内容は以下の通りです。
display_library: win32
megs: 1024
romimage: file=BIOS-bochs-latest, address=0xf0000
vga: extension=vbe
vgaromimage: file=VGABIOS-lgpl-latest
ata0-master: type=disk, path="xxx.img", mode=flat, cylinders=8322, heads=16, spt=63 ※4096MBのflat型ディスクイメージ
ata0-slave: type=cdrom, path="yyy.img", status=inserted
boot: cdrom
ips: 12000000
clock: sync=realtime, time0=local
#parport1: enabled=1, file="lpt1"
vga_update_interval: 50000
mouse: enabled=0, type=imps2
ne2k: ioaddr=0x240, irq=11, mac=b0:c4:20:00:00:01, ethmod=win32, ethdev=\Device\NPF_{AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE}
※AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEEは「niclist.exe」が表示する値。
i440fxsupport: enabled=1, slot1=ne2k
usb1: enabled=1
#pit: realtime=1
3.BochsへのVine Linux 3.1のインストール手順
- Bochs起動
ここではvl31instpci.bxrcというBochs設定ファイルを使用。
- インストーラ起動オプション設定
boot:プロンプトで「text」を指定します。
グラフィカルモードのインストールでは、インストーラがビデオカードの検出ができずGUI操作のできない画面となるためtextモードでインストールを行います。
- anacondaメッセージ
Running anaconda - please wait...
Probing for video card: Unable to probe
Probing for monitor type: Unable to probe
Probing for mouse type: Generic - 3 Button Wheel Mouse (PS/2)
- 言語選択:Japaneseを選択
- 再びanacondaメッセージ
ビデオカードを検出中: 走査不能
モニタタイプを検出中: 走査不能
マウスタイプを検出中: Generic - 3 Button Wheel Mouse (PS/2)
- キーボードモデル:jp106を選択
- マウス:Generic - 3 Button Wheel Mouse (PS/2)を選択
3 ボタンマウスエミュレートの適用指定も行います。
- インストールの種類:フルインストール
- ディスクパーティション設定:自動パーティション設定
- ブートローダの設定:デフォルトのLILO(MBR)
- ネットワークの設定
PCIのNE2000互換カードが認識されて次のネットワーク設定画面が表示されます。
ネットワーク設定画面ではホストマシンのネットワーク環境にゲストOSを参加させる指定を行います。
IP アドレス:ホストマシンのネットワーク体系のIPアドレス
ネットマスク:255.255.255.0
デフォルトゲートウェイ:ホストマシンでの設定に合わせます
プライマリネームサーバ:ホストマシンでの設定に合わせます
- ホスト名:適当に名称を指定(ここではbxvine31を指定しました)
- タイムゾーン:アジア/東京
- rootパスワード:適当に設定
- ユーザの追加:なし
- ビデオカードの設定
ビデオカードはVESA driver (generic)を選択し、ビデオメモリ容量は4096を選択します。
- ファイルシステムのフォーマット開始
- パッケージのインストール
- モニタの設定
解像度を1027x768に設定します。
- X設定のカスタマイズ
色深度:High Color (16Bit)
解像度:1024x768
標準ログイン:グラフィカル
ここではXのテストはスキップします。
- インストールの完了
- Bochsの終了
インストールが完了するとCD-ROMからのブート指定があってもCD-ROMの自動排出扱いとなって
CD-ROMからのブートエラーとなるため一旦Bochsを終了させます。
- Bochs設定ファイルの変更
ata0-slave: type=cdrom, path="D:", status=inserted
boot: disk
- パッケージの追加とサービス起動
BochsでVine Linux 3.1を起動します。
telnet-serverパッケージを追加インストールし、/etc/inetd.confを編集してproftpd起動及び
inetの再起動を行います。
更にSambaも追加インストールし、/etc/samba/smb.confを編集してsmbd, nmbdを起動します。
※ftp/telnet/sambaサーバはブート時に自動起動する設定も実施しておきます。
- ネットワーク接続テスト
この段階では以下のようになっています。
(1)ゲストOSからホストOSやそのホストOSにLAN接続された他のPC(OS)へのネットワーク接続(http/telnet/ftp接続等)はOK。
(2)ホストOSからゲストOSへのhttp/telnet/ftp接続はNG。但し、ホストOSからゲストOSのSambaアクセスはOK。
(3)そのホストOSにLAN接続された他のPC(Linux)からゲストOSへのhttp/telnet/ftp接続はOK。
- ネットワーク接続問題の対策
ホストOSからゲストOSへのhttp/telnet/ftp接続ができなくなる問題はWinPcapをインストールしてあるホストOS側のネットワークカードのハードウェアチェックサムが有効になっていることに起因しています。
そこでホストOS側のネットワークカードのハードウェアチェックサムを無効にします。
今回の環境ではホストPCのLANカード(Marvell Yukon 88E8050 PCI-E ASF Gigabit Ethernet Controller)のローカルエリア接続のプロパティでの構成における「詳細設定」タブで
「ハードウェアのチェックサム」をオンからオフに変更してホストPCを再起動します。
4.ホストOSからゲストOSへのhttp/telnet/ftp接続確認
「ハードウェアのチェックサム」をオフにすることによって、ホストOSからゲストOSへのhttp/telnet/ftp接続が問題なくできるようになります。
ホストOSにLAN接続された他のPC(Linux)からゲストOSへのhttp/telnet/ftp接続は「ハードウェアのチェックサム」のオン・オフに関係なく行えます。