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」を動作させるホストマシン環境は以下の通りです。



2.ゲストOS環境

ゲストOSとしては誰でも手軽に入手できるVine Linux 3.1(Kernel 2.4.27-0vl7)を使用します。
またゲストOSが動作する仮想マシンには1024MBのメモリを割り当てます。


3.Bochsソフトウェア



3.BochsへのVine Linux 3.1のインストール手順

  1. Bochs起動
    ここではvl31instpci.bxrcというBochs設定ファイルを使用。



  2. インストーラ起動オプション設定
    boot:プロンプトで「text」を指定します。
    グラフィカルモードのインストールでは、インストーラがビデオカードの検出ができずGUI操作のできない画面となるためtextモードでインストールを行います。



  3. 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)

  4. 言語選択:Japaneseを選択

  5. 再びanacondaメッセージ
    ビデオカードを検出中: 走査不能
    モニタタイプを検出中: 走査不能
    マウスタイプを検出中: Generic - 3 Button Wheel Mouse (PS/2)

  6. キーボードモデル:jp106を選択

  7. マウス:Generic - 3 Button Wheel Mouse (PS/2)を選択
    3 ボタンマウスエミュレートの適用指定も行います。

  8. インストールの種類:フルインストール

  9. ディスクパーティション設定:自動パーティション設定

  10. ブートローダの設定:デフォルトのLILO(MBR)

  11. ネットワークの設定
    PCIのNE2000互換カードが認識されて次のネットワーク設定画面が表示されます。



    ネットワーク設定画面ではホストマシンのネットワーク環境にゲストOSを参加させる指定を行います。
    IP アドレス:ホストマシンのネットワーク体系のIPアドレス
    ネットマスク:255.255.255.0
    デフォルトゲートウェイ:ホストマシンでの設定に合わせます
    プライマリネームサーバ:ホストマシンでの設定に合わせます

  12. ホスト名:適当に名称を指定(ここではbxvine31を指定しました)

  13. タイムゾーン:アジア/東京

  14. rootパスワード:適当に設定

  15. ユーザの追加:なし

  16. ビデオカードの設定
    ビデオカードはVESA driver (generic)を選択し、ビデオメモリ容量は4096を選択します。



  17. ファイルシステムのフォーマット開始

  18. パッケージのインストール



  19. モニタの設定
    解像度を1027x768に設定します。



  20. X設定のカスタマイズ
    色深度:High Color (16Bit)
    解像度:1024x768
    標準ログイン:グラフィカル



    ここではXのテストはスキップします。

  21. インストールの完了

  22. Bochsの終了
    インストールが完了するとCD-ROMからのブート指定があってもCD-ROMの自動排出扱いとなって
    CD-ROMからのブートエラーとなるため一旦Bochsを終了させます。

  23. Bochs設定ファイルの変更
    ata0-slave: type=cdrom, path="D:", status=inserted
    boot: disk

  24. パッケージの追加とサービス起動
    BochsでVine Linux 3.1を起動します。
    telnet-serverパッケージを追加インストールし、/etc/inetd.confを編集してproftpd起動及び
    inetの再起動を行います。
    更にSambaも追加インストールし、/etc/samba/smb.confを編集してsmbd, nmbdを起動します。
    ※ftp/telnet/sambaサーバはブート時に自動起動する設定も実施しておきます。

  25. ネットワーク接続テスト
    この段階では以下のようになっています。
    (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。

  26. ネットワーク接続問題の対策
    ホスト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接続は「ハードウェアのチェックサム」のオン・オフに関係なく行えます。