VMwareとBochsを使ってみる

YAMAMORI Takenori ●yamamori
●BochsにWindows 95をインストールしてみる

BochsのゲストOSとして,Windows 95をインストールしてみましょう. なお,ここではホストOSとしてLinuxを用いています. ドキュメントによると,BochsではWindows 95が動作するとなっています. ただdocs-html/Windows95.htmlは, フロッピーディスク版のWindows 95のインストール説明になっています. これは,通常とは違う1.68MBという特殊なフォーマットのフロッピーディスクの イメージを吸い出し,その多数のイメージファイルを入れ換えながら インストールを行なうという,かなり根気のいる作業になっています.

Bochsは,LinuxにおいてはCD-ROMに対応していますので, まずは通常のWindows 95のインストールと同じように, CD-ROMからインストールしてみることにしました.

Bochsに限らず,CD-ROMからWindows 95をインストールするには 起動フロッピーディスクを用意する必要があります. その中には,DOSの16bit版のCD-ROMドライバとmscdex.exeが含まれていて, DOS上でCD-ROMを認識できるようになっていなければなりません.

また,config.sysの中にjdisp.sysなどの日本語関係のドライバがあると, Bochsはpanicして終了してしまいます. そこで,これらのドライバはすべて外す必要があります. このためDOSは英語モードで立ち上がることになります.

筆者は実際にVMwareや生のPC上で正常にCD-ROMを認識できる DOSの起動フロッピーディスクを作成しています. ところが,そのフロッピーをもとにBochsをブートしてみたところ, BochsではCD-ROMを認識できませんでした. 後述のように,Bochs上にVine 1.1をインストールする場合は, Bochs上で動いているインストーラがちゃんとCD-ROMを認識するため, BochsとCD-ROMドライバとの間の微妙な相性問題があるのだと思われます.

このようにDOSレベルでCD-ROMが認識できなかったため, CD-ROM内のwin95ディレクトリ以下を, いったん仮想ハードディスクにコピーする方法をとることにしました.

この方法についてはdocs-html/OldWindows95.htmlに記述があります. こちらでは,Windows 95のCD-ROMのwin95ディレクトリ以下の内容を 仮想ハードディスク内にコピーするために, mtoolsを用いる方法が書かれていますが, 筆者はmtoolsではなく,/dev/loop*を用いてマウントする方法をとりました.

CD-ROMのコピーの前に仮想ハードディスクをfdisk/formatしなければなりません. これは,Bochsを“./bochs boot:a”としてDOSの起動フロッピーイメージでブートし, そのエミュレートされたDOS環境内で行ないます. 前述のとおり,config.sys内のjdisp.sysなどのドライバははずしているため, DOSは英語モードで立ち上がります. fdiskでは,全領域を1つのDOSパーティションとして確保します. ここで再起動が必要ですので,Bochs自体を再度起動します. そして次に“format c:”を実行すればOKです.

ここからはホストOSであるLinux上での操作になります.

bochsの仮想ハードディスクはVMwareとは違って ハードディスクのイメージそのままです. したがって,以下のようにしてループバックマウントできます.

# mount -t vfat -o loop,offset=32256 504M /mnt/tmp
                               ===== 63*512

ここで,マウントオプションとしてoffsetを指定しているのは, MBRのある最初のトラックをスキップするためです. この実際の値は,1トラック分のバイト数となります. 今回の仮想ハードディスク場合, (63セクタ/トラック)×(512バイト/セクタ)=32256バイトの オフセットをとればよいことになります. あらかじめfdiskで全領域をDOSパーティションとして確保しているため, このオフセットを越えたところからFATのファイルシステムが始まります. あとは,以下のようにLinux上でのファイルのコピーになります.

# mount /mnt/cdrom     ← Windows 95のCD-ROMをマウント
# cd /mnt/tmp
# cp -pr /mnt/cdrom/win95 .
# cd /
# umount /mnt/tmp

これでインストールメディアの仮想ハードディスクへのコピーは完了です. 再度“./bochs boot:a”で起動します. あとは以下のように,通常のWindows 95のインストールと同様に, win95ディレクトリに移動してsetup.exeを実行するだけです. docs-html/Windows95.htmlによると,“setup /c”として, smartdrv.exeを読み込まない方がよいようです.

A:\>c:
C:\>cd win95
C:\WIN95>setup /c

setup.exeの実行直後,scandiskや,いくつかのメッセージが 日本語でコンソール画面に出力され,これらはすべて文字化けして読めませんが, これは仕方ありません. この部分はインストーラを勘で進めます.

●Bochs内で文字化けしているscandiskの画面
bochs-win95-inst-s.gif

このあとかなり時間がかかってキーボードタイプの判定の画面まで進みますが, ここでキー入力後,固まってしまいます. 一度はここであきらめましたが,再度Bochsを起動し, 以下のようにして強引に進めてみました.

A:\>c:
C:\>cd wininst0.400
C:\WININST0.400>dosx

インストーラによって作成された一時的なディレクトリwininst0.400の下にある, dosx.exeを直接実行するのです.

すると,はじめてGUIモードのインストーラが立ち上がり, 日本語も正常に表示されました. しかし喜んだのもつかの間,このすぐあと, 以下のようにエラーが出てそれ以上は進みませんでした.

●GUIモードまでこぎ着けたがここまでか
bochs-win95-inst-err-s.gif

Windows 95については,残念ですがここまででした.


To 『VMwareとBochsを使ってみる』index


このページは、技術評論社 「すみからすみまでLinux〜テクニカル編」および SoftwareDesign 2000年8月号、『VMwareとBochsを使ってみる』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 with Linux/FreeBSD [Home]
yamamori