VMwareとVirtualBox上のDOSでSCSIデバイスを接続する。

仮想PCソフトの仮想デバイスでSCSIデバイスを扱いたい。SCSI搭載は高性能ワークステーションの証。当時のSCSIは接続台数、高速転送、バスマスタDMA、コマンドキューイングどれをとってもパラレルIDEを上回る性能だった。その後パソコンレベルではパラレルIDEもDMA対応になって速度も上がりSCSIの優位性は無くなった。パソコンではUSBの普及もありSCSI接続のデバイスを全く見かけなくなったが、高性能サーバは今もSCSI系のSAS接続が多い。

今の仮想PCソフトの二大巨頭VMware Workstation/PlayerとVirtualBoxはどちらもSCSIデバイスの仮想化をサポートしていて、どちらもBusLogic、LSILogicのSCSIホストアダプタをモデルとしている。Socket7/Slot1時代のパソコンではAdaptecのAHA-1540とか2940とかのシリーズを好んで使っていて、BusLogicのSCSIホストアダプタは使ったことがないが、基本的にはSCSIホストアダプタのデバイスドライバでASPI(Advanced SCSI Programming Interface)マネージャを動かすことができればどのアダプタでも同じはず。ASPIマネージャのほかにSCSI BIOSで接続されるHDD以外のSCSI機器を動かす場合はASPIを通してデバイスを動かすASPIドライバを用意する必要がある。

VMwareもVirtualBoxも比較的新しいBusLogicをエミュレートしているようで古いデバイスドライバだと認識しない。いろいろ探した結果、手っ取り早いのは手元にあるWindows98/Meの起動ディスクに含まれるASPIマネージャのBTDOSM.SYSがうまく動くことが分かった。各仮想PCソフトでSCSIデバイスを追加する方法は次の通り。

・VMware Workstation
CD 設定の詳細でIDEをSCSIに変更。
HDD ハードディスクを追加し、仮想ディスクタイプでSCSIを選択する。

・VirtualBox
ストレージ→コントローラの追加でBusLogic(SCSI)を追加する。
コントローラーBusLogicでHDD、CDを追加する。

デバイスを追加したらゲストのDOS設定を行う。Windows 98/Meの起動FDからBTDOSM.SYS、BTCDROM.SYSをC:の適当なディレクトリ(例 C:\BUSLOGIC)にコピーしてCONFIG.SYS、AUTOEXEC.BATを編集。この設定はVMware Workstation/Player、VirtualBox共通。

CONFIG.SYS

BUFFERS=20
FILES=30
LASTDRIVE=H
STACKS=9,256
DOS=HIGH,UMB
DOSDATA=UMB
COUNTRY=081,932,C:\DOS\COUNTRY.SYS
SHELL=C:\DOS\COMMAND.COM /P /E:512 /H
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE RAM
DEVICEHIGH=C:\DOS\SETVER.EXE
DEVICEHIGH=C:\DOS\$FONT.SYS
DEVICEHIGH=C:\DOS\$DISP.SYS /HS=OFF
DEVICEHIGH=C:\DOS\$IAS.SYS
DEVICEHIGH=C:\DOS\ANSI.SYS /X
DEVICEHIGH=C:\DOS\POWER.EXE 
DEVICEHIGH=C:\BUSLOGIC\BTDOSM.SYS
DEVICEHIGH=C:\BUSLOGIC\BTCDROM.SYS /D:CDROM1
rem DEVICEHIGH=C:\BUSLOGIC\BTMDISK.SYS
INSTALLHIGH=C:\DOS\IBMMKKV.EXE /M=S /Z=4 /C /L /J=90 /S=C:\DOS\MULTDICT.PRO /U=C:\$USRDICT.DCT

AUTOEXEC.BAT

@ECHO OFF
PROMPT $P$G
PATH C:\WINDOWS;C:\DOS;C:\UTY
SET COMSPEC=C:\DOS\COMMAND.COM
SET TEMP=C:\TEMP
SET TMP=C:\TEMP
LH C:\DOS\KEYB.COM JP,932,C:\DOS\KEYBOARD.SYS
LH C:\DOS\DOSKEY.COM /INSERT
LH C:\DOS\MSCDEX.EXE /D:CDROM1
LH C:\DOS\SMARTDRV.EXE
LH C:\DOS\MOUSE.COM

うまく設定ができるとSCSI接続でHDDとCD-ROMドライブが使えるようになる。HDDはSCSI BIOSが接続してくれるのでASPIデバイスドライバは要らないが、各種ユーティリティがASPI経由で動くのでASPIマネージャのBTDOSM.SYSを組み込んでおく。パーティション分割ユーティリティはBusLogicのBTFDISK.EXEもあるが、ここでは当時のSCSIカードに付いていたAdaptecのEZ-SCSI 5.0を使った。SCSI接続のHDDを使う作法に従い物理フォーマット→パーティション分割→論理フォーマットの手順を踏む。実際には仮想PCソフトを使う場合は物理フォーマットは不要だし、VirtualBoxはエラーでフォーマッタが動かない。

CD-ROMドライブはASPIデバイスドライバのBTCDROM.SYSとMSCDEX.EXEがドライブとして扱えるように接続してくれる。パフォーマンスが上がるとか取り立てて良いことがあるわけではないが、Windows 98/Meの起動ディスクで使われているATAPI CD-ROMドライバのOAKCDROM.SYSとMSCDEX.EXEの組み合わせより若干メモリ使用量が少ない。

今回は起動ドライブ(C:)はIDE接続のままにして増設のD:ドライブがSCSI接続になっているが、C:のHDDもSCSI接続にするほうがすっきりする。

VMware workstationだと汎用SCSIデバイスとしてホストのデバイスを直結できるからもっといろいろできそうだけど、MOドライブとかのSCSI接続のリムーバブルドライブを持っていないからBTMDISK.SYSやASPIDISK.SYSの動作は未確認。SCSI接続のHDDはSCSI BIOSがBIOS接続のディスクとして見せかけてくれるからDOSで使う場合はASPIドライバが要らない。PC/AT互換機のBIOSがMOドライブを一般的にはサポートしていないからASPIドライバで接続する必要がある。



SCSI関連はできるだけ定番と呼ばれるものを使った方が良い。AdaptecのSCSIアダプタを買う前にメルコのSCSIアダプタと悪名高いオリンパスのMOを買ってひどい目に遭った。MOを使うためには「ASPIドライバ」が必要になるのだけど、メルコのSCSIアダプタには「ドライブに付属のASPIドライバを使ってください」て書いてあって、オリンパスのMOドライブには「SCSIホストアダプタに付属のASPIドライバ」を使ってください、って書いてあった。したがってどちらにもASPIドライバが無いのでMOをDOSのドライブとして扱えないわけでハマった。結局ラトックシステムのSCSIアダプタを買ってきてMOドライブをDOS上で使えるようにしたら、今度はMLD LinuxでSCSIアダプタを認識しなくなってしまった。最初からAdaptecの製品版AHA-1540CPとかAHA-2940Jと富士通のMOを使っておけば何の問題もなかったわけで、安物買いの何とか。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中