VMwareとBochsを使ってみる |
YAMAMORI Takenori ●yamamori |
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を起動し, 以下のようにして強引に進めてみました.
A:\>c: C:\>cd wininst0.400 C:\WININST0.400>dosx
インストーラによって作成された一時的なディレクトリwininst0.400の下にある, dosx.exeを直接実行するのです.
すると,はじめてGUIモードのインストーラが立ち上がり, 日本語も正常に表示されました. しかし喜んだのもつかの間,このすぐあと, 以下のようにエラーが出てそれ以上は進みませんでした.
Windows 95については,残念ですがここまででした.