DOSでCD-ROMを使う方法

最終更新: 2003.4.6


はじめに

本稿では、MS-DOSでCD-ROMを使えるようにするための、 デバイスドライバの組み込み方等について解説します。 対象機種は主にPC/AT互換機ですが、PC-9800シリーズでも基本的には同じです。

MS-DOSは古いOSであるため、CD-ROMは標準ではサポートされておらず、 デバイスドライバ等を組み込む必要があります。 さらに、SCSIの場合は(特にAT互換機では)ASPIを利用するため、やや複雑になります。 MS-DOS/Windows 3.xが主流であった時代にはごく普通に行われていたことですが、 Windows 95からのユーザーは、インストールやトラブルシューティングなどの際、 DOSからCD-ROMを使う方法がわからなくて困る場合が少なくないようです。 そこで、本稿では主にこうしたユーザーのために、 DOSでCD-ROMを使う方法とその仕組みに関して解説していきます。


概要

DOSでCD-ROMを使えるようにするには、 CONFIG.SYSで少なくとも一つのデバイスドライバを組み込み、 AUTOEXEC.BATで一つのTSR(MSCDEX.EXE)を組み込む必要があります。

デバイスドライバは、CD-ROMドライブを制御してCD-ROMを読みとるために必要です。 IDE(ATAPI) CD-ROMや、独自インタフェース(昔のSoundBlasterなど)のCD-ROMでは、 必要なデバイスドライバは一つです。 しかし、SCSIの場合、通常は二つ必要になります。 これは、SCSIカードの制御法がカードによってまちまちなため、 SCSIカードを制御するドライバ(ASPIマネージャー)とCD-ROMドライブを制御するドライバが分離されていて、 組み合わせて使うようになっているためです(この仕組みをASPIといいます)。 ただし、古いSCSIカードや、PC-9800シリーズの場合は、分離されていない(ASPI対応でない)ものもあり、 この場合はデバイスドライバは一つで済みます。

実際にCD-ROMを使うためには、デバイスドライバだけでは不十分です。 CD-ROMのファイルシステム(ISO 9660)は、 ハードディスクやフロッピーディスクで使われている通常のFATファイルシステムとは違うため、 CD-ROMファイルシステムを扱えるようにMS-DOSを拡張する必要があります。 これを担当するのがMSCDEXです。

デバイスドライバとMSCDEXの間の連係をとるために、 /D:デバイス名 というスイッチを両方につけます。 デバイス名は8文字(8バイト)以内の名前なら何でもかまいません。 ただし、CONなどの標準のデバイス名と同様、 ここでつけたデバイス名はファイル名としては使えなくなるので、 ファイル名と衝突しないような名前にしましょう。

各構成要素の関係を図示すると以下のようになります。


デバイスドライバ等の入手方法

IDE CD-ROM

IDE CD-ROMのデバイスドライバは、 CD-ROMドライブかマザーボードに付属しています。 PC-9800シリーズの場合は、NEC MS-DOS 6.2にも付属しています。 ジャンク品などで付属していない場合は、 メーカーのWWW/ftpサイトを調べてみるとよいでしょう。

また、ASPI対応CD-ROMドライバがあれば、 ATAPI-ASPI変換プログラムを利用して、 SCSI CD-ROMと同様の方法で組み込むことも可能です。

SCSI CD-ROM

SCSIの場合は、通常、SCSIカードを制御するASPIマネージャーと、 CD-ROMドライブのデバイスドライバ(ASPI対応)の二つが必要です。

ASPIマネージャーは、SCSIカードに付属しています。 ASPI対応のCD-ROMデバイスドライバは、 SCSIカードやCD-ROMドライブに付属しています。 ジャンク品などで付属していない場合は、メーカーのWWW/ftpサイトを調べてみるとよいでしょう。 ただし、最近のAdaptecのSCSIカードでは、元々DOS用のドライバが付属していないものがあり、 そういう場合は別途EZ-SCSIを購入する必要があります。 PC-9800シリーズの場合、NEC純正SCSIカード(PC-9801-55/92/100)用のASPIマネージャーが別売りで提供されています。 また、PC-9801-55/92互換ボード用のASPIマネージャーは、 フリーソフトとして出回っている他、 各種SCSI機器に付属していることもあります。 ASPI対応CD-ROMデバイスドライバも、 フリーソフトで存在します。

なお、古いSCSIカードやCD-ROMドライブでは、 ASPI非対応のCD-ROMデバイスドライバが付属していることがあります。 PC-9800シリーズの場合は、NEC MS-DOS 6.2にも付属しています。 この場合、ASPIマネージャーは必要ありませんが、 使用できるSCSIカードやCD-ROMドライブが限られることがあります。

独自インタフェースCD-ROM

昔のSoundBlaster(Panasonic)やミツミ・ソニーなどの独自インタフェースのドライブの場合は、 CD-ROMドライブかインタフェースカードにドライバがついているはずです。 不幸にしてついていない場合は、メーカーのWWW/ftpで探してみましょう。

MSCDEX

MSCDEXは、以前は別売りでしたが、 最近のMS-DOSやWindows 95/98に付属しています。 また、マイクロソフトからダウンロードすることもできます。

なお、バージョン2.22までのMSCDEXでは、 $や-などの記号を含むファイル名を正しく扱えないことがあるそうなので、 できれば最新の2.23がよいでしょう (本来このような記号は CD-ROMのファイル名としては使えないのですが、 そうも言っていられないこともあるでしょう)。

ちなみに、Caldera DR-DOS(や、その前身のDR-DOS/Novell DOS)には、 MSCDEXと同様の機能をもつNWCDEXというモジュールが含まれています。 ただし、これは若干バグがあるようなので、 できればMicrosoftのMSCDEXを使うことをお勧めします。


デバイスドライバの組み込み

IDE/独自インタフェースCD-ROM

IDE CD-ROMや独自インタフェースCD-ROMの場合は、 デバイスドライバが一つですむので、比較的簡単です。 ここではミツミのドライバMTMCDAI.SYSを例にとります。 まずCONFIG.SYSでデバイスドライバを組み込みます。 以下の行をCONFIG.SYSに書き加えます。 書き加える位置はどこでもかまいませんが、 DEVICE=は他のDEVICE=の後が無難でしょう。

LASTDRIVE=Z
   :
DEVICE=MTMCDAI.SYS /D:MSCD001

UMBがある場合は、DEVICE=の代わりにDEVICEHIGH=を使うこともできます。 デバイス名はMSCD001としましたが、他の名前でもかまいません。 また、ドライバがサブディレクトリにある場合は、 MTMCDAI.SYSの前に適宜ディレクトリ名を付加してください。 /D以外にも各種のスイッチを指定できる場合がありますが、 ドライバによって異なりますので、マニュアルやドキュメントを参照してください。

SCSI CD-ROM

SCSI CD-ROMの場合は、通常二つのデバイスドライバ (ASPIマネージャーとASPI対応CD-ROMドライバ)が必要です。 ここでは、SCSIカードとしてAdaptec AHA-2940を使う例を示します。

LASTDRIVE=Z
   :
DEVICE=ASPI8DOS.SYS		(ASPIマネージャー)
DEVICE=ASPICD.SYS /D:MSCD001	(ASPI CD-ROMドライバ)

ASPI8DOS.SYSは、SCSIカードの制御を担当するASPIマネージャーです。 ASPICD.SYSは、ASPIマネージャーを介して、CD-ROMドライブの制御を担当します。 /DスイッチはCD-ROMドライバのほうにつけます。 なお、ここではSCSIカードに付属のASPICD.SYSを使いましたが、 CD-ROMドライブにASPI対応ドライバが付属している場合は、 ASPICD.SYSの代わりにそれを使ったほうがよいかもしれません。

SCSI PCカード経由のCD-ROM

SCSI PCカードを使用する場合は、そのカードのASPIマネージャー(通常、イネーブラーを兼ねる)だけでなく、 PCカード全般をサポートするためのドライバ(カードサービス、ソケットサービス等)も組み込む必要があります。 ここでは、PCカードソフトCardSoftとSCSI PCカードMIRACLE SCSIを使う例を示します。 なお、CardSoft関連のパラメータ等については、本題から外れますので省略しています。

LASTDRIVE=Z
   :
DEVICE=SS365.EXE		(ソケットサービスドライバ)
DEVICE=CS.EXE			(カードサービスドライバ)
DEVICE=CSALLOC.EXE		(リソースマネージャー)
DEVICE=CARDID.EXE		(コモンイネーブラー)
DEVICE=MPS110.SYS		(イネーブラー兼ASPIマネージャー)
DEVICE=MIRA_CD.SYS /D:MSCD001	(CD-ROMドライバ)

MSCDEXの組み込み

ドライバの組み込みが終わったら、 次にAUTOEXEC.BATでMSCDEXを組み込みます。 以下の行をAUTOEXEC.BATに書き加えます。 これもどこでもかまいません。 ただし、LAN Managerを使用している場合は、 LAN Managerより後にしなくてはなりません。

MSCDEX /D:MSCD001 /L:Q

ここでは、CD-ROMのドライブ名をQ:とするため、/L:Qを指定します。 指定しなければ、空いているドライブ名のうち若いものが使われますが、 固定してしまったほうが使いやすいでしょう。 /Dスイッチには、デバイスドライバで指定したのと同じデバイス名を指定します。 なお、ここでは普通にロードしていますが、 UMBがある場合はLOADHIGH(LH)を使うこともできます。 MSCDEX.EXEがコマンド検索パス以外のディレクトリにある場合は、 適宜ディレクトリ名を付加してください。 MSCDEXのその他のスイッチについては後述します。

以上の設定が終わったら、リセットしてDOSを再起動します。 起動時のデバイスドライバ組み込み時のメッセージに注目してください。 「CD-ROMドライブが見つかりません」「CD-ROM drive not found」などの エラーが表示された場合は、CONFIG.SYSAUTOEXEC.BATを再度見直します。 問題がなければ、CD-ROMがドライブQ:としてアクセスできるようになっているはずです。


MSCDEXの詳細

MSCDEXには、以下のようなスイッチを指定することができます。 /D/Lは通常必須です。 /E/M/Vは必要に応じて指定します。 古いバージョンのMSCDEXでは一部指定できないものがあります。

/D:デバイス名

(Device) CD-ROMデバイスドライバのデバイス名を指定します。 複数のドライバが組み込まれている場合は、 /Dを複数指定することにより、それらのデバイス名を指定することができます。

/L:ドライブ文字

(Letter) CD-ROMに割り当てる(最初の)ドライブ文字を指定します。 省略すると、未使用のドライブ文字のうちもっとも若いものになります。 CONFIG.SYSLASTDRIVEの指定に注意してください。

/E

(EMS) セクタバッファをEMSメモリに確保します。 省略するとメインメモリに確保します。 なるべく指定したほうがいいでしょう。

/M:バッファ数

セクタバッファの数を指定します。省略すると/M:10になります。 バッファを多くするとCD-ROMのアクセスが高速になる可能性がありますが、 別途CD-ROM用キャッシュドライバを使う場合は少なくてもいいでしょう。

/V

(Verbose) 詳細情報を表示します。

/K

(Kanji) 日本語(シフトJIS)サポートを有効にします。 CD-ROMに、ASCIIのファイル名に加えて日本語のファイル名が記録されている場合、 そちらを優先します (日本語ファイル名を記録したディレクトリ階層をもつ副ボリューム記述子がある場合、それを使います)。 実際にはそのようなCD-ROMはまずないので、指定してもほとんど意味はありません。

/S

(Server) MS-Networksサーバー用に最適化された動作をします。 現在、MS-Networksを使うことはまずないでしょうから、 通常指定する必要はありません。

/?

ヘルプを表示します。


DOS/Win95インストール用ブートフロッピーの作成

ここでは、実用的な例として、DOSのブートフロッピーを作り、 そこにCD-ROMドライバを組み込む例を示します。 このフロッピーを使うと、以下のようなことができます。

ここでは以下のような構成を例にとります。

ブートフロッピーの作成 (PC DOS/Vの場合)

  1. フロッピーをフォーマットし、DOSシステムをコピーします。
    FORMAT A: /S
    
  2. DOSの各種ファイルをコピーします。

    起動に必要なファイルや、よく使うコマンド等をコピーします。 DOS/Vの日本語モードを使う場合は、 フォントファイルや日本語表示関係のデバイスドライバも必要です。 PC DOS/Vの場合はおおむね以下のようなファイルがあれば十分でしょう。 これをA:\DOSにコピーします。

    $DISP.SYS	$FONT.SYS	ATTRIB.EXE
    CHEV.EXE	CHKDSK.COM	COUNTRY.SYS
    DEBUG.COM	DOSKEY.COM	DOSV.INI
    E.EX		E.EXE		E.INI
    EHELP.HLP	EMM386.EXE	EV.EX
    EVHELP.HLP	FC.EXE		FDISK.COM
    FDISKUS.COM	FORMAT.COM	HIMEM.SYS
    KEYB.COM	KEYBOARD.SYS	MEM.EXE
    MODE.COM	MORE.COM	MSCDEX.EXE
    QCONFIG.EXE	SYS.COM		XCOPY.EXE
    
  3. CD-ROM関係のデバイスドライバ等をコピーします。

    ここではMTMCDAI.SYSを使いますので、これをたとえばA:\にコピーします。

  4. CONFIG.SYSAUTOEXEC.BATを編集します。

    CONFIG.SYSの例

    LASTDRIVE=Z
    FILES=30
    BUFFERS=20
    COUNTRY=81,932,\DOS\COUNTRY.SYS
    DOS=HIGH,UMB
    DEVICE=\DOS\HIMEM.SYS
    DEVICE=\DOS\EMM386.EXE RAM
    DEVICEHIGH=\DOS\$FONT.SYS
    DEVICEHIGH=\DOS\$DISP.SYS
    DEVICEHIGH=\MTMCDAI.SYS /D:MSCD001
    SHELL=\COMMAMD.COM A:\ /P
    

    AUTOEXEC.BATの例

    @ECHO OFF
    PROMPT $P$G
    PATH A:\DOS
    LH KEYB JP,932,\DOS\KEYBOARD.SYS
    LH MSCDEX /L:Q /D:MSCD001 /V /E
    
  5. 作成したフロッピーでDOSを起動し、CD-ROMドライブが使えることを確認します。

ブートフロッピーの作成 (Windows 95の場合)

  1. Windows 95で起動ディスクを作成します。

    「コントロールパネル」の「アプリケーションの追加と削除」で「起動ディス ク」タブを選びます。プレインストールマシンの場合は「アクセサリ」-「シス テムツール」-「Create System Disks」でもOKです。

  2. CD-ROM関係のデバイスドライバ等をコピーします。

    ここではMTMCDAI.SYSを使いますので、これをたとえばA:\にコピーします。 また、C:\WINDOWS\COMMAND\MSCDEX.EXEもコピーします。

  3. CONFIG.SYSAUTOEXEC.BATを編集します。

    CONFIG.SYSの例

    LASTDRIVE=Z
    FILES=30
    BUFFERS=20
    DEVICE=BILING.SYS
    DEVICE=JFONT.SYS
    DEVICE=JDISP.SYS /HS=LC
    DEVICE=JKEYB.SYS JKEYBRD.SYS
    DEVICE=MTMCDAI.SYS /D:MSCD001
    SHELL=\COMMAMD.COM A:\ /P
    

    AUTOEXEC.BATの例

    @ECHO OFF
    PROMPT $P$G
    PATH A:\
    LH MSCDEX /L:Q /D:MSCD001 /V
    
  4. 作成したフロッピーでMS-DOSモードを起動し、 CD-ROMドライブが使えることを確認します。

Windows 95のインストール

上記で作成したブートフロッピーを用いて、DOSやWindows 3.1をインストールせずに 直接Windows 95をCD-ROMからインストールすることができます。

  1. 作成したブートフロッピーでDOSを起動します。
  2. HDDにパーティションをまだ作っていない場合は、FDISKで基本パーティションを作り、再度DOSを起動します。
  3. 必要に応じてドライブC:をフォーマットします。
  4. CD-ROMドライブにWindows 95のCD-ROMを入れます。
  5. セットアップを起動します。
    A:\>Q:
    Q:\>CD WIN95
    Q:\WIN95>SETUP
    

アップグレード版のWindows 95の場合は、 途中でWindows 3.1のフロッピーまたはCD-ROMを要求されます。 ここで、CD-ROMの場合はQ:\WINDOWSなどとディレクトリを入力する必要があります (指定されたディレクトリのGDI.EX_を確認するそうです)。

OSR2でブートフロッピーを作成した場合、 ドライブC:をFAT32でフォーマットすることが可能です。

なお、インストール中にいったん再起動しますが、ネットワークカードなどがあると、 再起動後にWindows 95がCD-ROMドライブを見失うことがあるそうです。 そのような場合は、前もってCD-ROM関係のデバイスドライバとMSCDEXをドライブC:にコピーし、 それらを組み込むためのCONFIG.SYSAUTOEXEC.BATをC:に作っておいてからインストールを始めるとよいとのことです。

DOSのインストール

DOSは通常フロッピーで供給されますが、最近のDOSはフロッピーの枚数が多く、 インストールにはけっこう時間と手間がかかります。 しかし、DOSのインストールフロッピーの内容をCD-Rに焼くなどすれば、 上記で作成したブートフロッピーを使ってCDからインストールできるようになります。

  1. DOSのインストールフロッピーの内容をCD-Rに焼きます。

    全フロッピーの全ファイルをHDDの一つのディレクトリにコピーし、CD-Rに焼きます。 ここではCD-Rの\PCDOSというディレクトリに収容することにします。 PC DOS/Vの場合は、$を含むファイル名があるため、 焼くときにISO 9660準拠のファイル名に変換されないように注意します。 また、PC DOS J7.0/Vの場合は、 同名のファイルがあるため単にコピーしてもうまくいかないので、 SETUP /Aを使うのが簡単です。

  2. 作成したブートフロッピーでDOSを起動します。
  3. 作成したDOSのCDをCD-ROMドライブに入れます。
  4. DOSのファイルがあるディレクトリに移動し、インストーラーを起動します。
    A:\>Q:
    Q:\>CD PCDOS
    Q:\PCDOS>SETUP
    

ここではCD-Rを使いましたが、MOなどを使うことももちろんできます。 この場合、CD-ROMのデバイスドライバの代わりに、 SCSIディスクのデバイスドライバを組み込みます。

なお、NECのDOSのインストーラーは、 インストールフロッピーから起動した場合でないと動かないようです。


応用〜複数のCD-ROMドライブへの対応

MSCDEXは、一つで複数のCD-ROMドライブに対応できます。 連装CD-ROMドライブや、一つのインタフェースに複数のCD-ROMドライブが接続されている場合はもちろん、 複数のインタフェースにそれぞれCD-ROMドライブが接続されている場合にも対応できます。

異なるドライブの同時サポート

ここでは、極端な例ですが、 1台のマシンに以下の4台のCD-ROMドライブが接続されていると仮定し、 これらを同時にサポートすることにします。

まずCONFIG.SYSで以下のように必要なデバイスドライバを組み込みます。

LASTDRIVE=Z
   :
DEVICE=MTMCDAI.SYS /D:IDECD1	(ミツミCD-ROMドライバ)
DEVICE=SBCD.SYS /D:SBCD1	(SoundBlaster CD-ROMドライバ)
DEVICE=ASPI8DOS.SYS		(AHA-2940用ASPIマネージャー)
DEVICE=ASPI.SYS			(DC-390用ASPIマネージャー)
DEVICE=ASPICD.SYS /D:ASPICD1	(ASPI対応CD-ROMドライバ)

そしてAUTOEXEC.BATでMSCDEXを組み込みます。

   :
MSCDEX /D:IDECD1 /D:SBCD1 /D:ASPICD1 /L:Q /V
   :

ここで以下の点に注目してください。

各構成要素の関係は下図のようになります。

                     MSCDEX.EXE
                         |
                         |
    +---------------+----+---------------+
    |               |                    |
    | /D:IDECD1     | /D:SBCD1           | /D:ASPICD1
    |               |                    |
    |               |                ASPICD.SYS
    |               |                    |
    |               |                    | ASPI
    |               |                    |
MTMCDAI.SYS     SBCD.SYS          +------+------+
    |               |             |             |
    |               |        ASPI8DOS.SYS   ASPI.SYS
    |               |             |             |
    |               |             |             |
 IDE I/F       SoundBlaster   AHA-2940       DC-390
    |               |             |             |
    |               |             |             |
IDE CD-ROM      SB CD-ROM    SCSI CD-ROM   SCSI CD-ROM

異なるドライブの選択サポート

上の例のような多数のドライブが1台のマシンにつながっていることは実際にはないでしょうが、 マシンが複数あってそれぞれCD-ROMドライブのインタフェースが違うような場合には、 このように全部のドライバを組み込んだブートフロッピーを作っておくと、 1枚でどのマシンにでも対応できるので便利です。 その場合、該当しないドライバはふつうエラーになって組み込まれないので害はありませんが、 CONFIG.SYSのメニュー機能などを利用して、 必要なドライバだけを選んでロードできるようにすると、 ロード時間が短縮できてさらに便利になります。

CONFIG.SYSの例

LASTDRIVE=Z
FILES=30
BUFFERS=20
COUNTRY=81,932,\DOS\COUNTRY.SYS
DOS=HIGH,UMB
DEVICE=\DOS\HIMEM.SYS
DEVICE=\DOS\EMM386.EXE RAM
DEVICEHIGH=\DOS\$FONT.SYS
DEVICEHIGH=\DOS\$DISP.SYS

[MENU]
MENUCOLOR=7,0
MENUITEM=NOCD,No CD-ROM
MENUITEM=IDE,Mitsumi IDE CD-ROM
MENUITEM=SB,SoundBlaster CD-ROM
MENUITEM=AHA2940,Adaptec AHA-2940 SCSI CD-ROM
MENUITEM=DC390,Tekram DC-390 SCSI CD-ROM
MENUDEFAULT=NOCD

[IDE]
DEVICE=MTMCDAI.SYS /D:IDECD1

[SB]
DEVICE=SBCD.SYS /D:SBCD1

[AHA2940]
DEVICE=ASPI8DOS.SYS
DEVICE=ASPICD.SYS /D:ASPICD1

[DC390]
DEVICE=ASPI.SYS
DEVICE=ASPICD.SYS /D:ASPICD1

[NOCD]

[COMMON]
SHELL=\COMMAMD.COM A:\ /P

AUTOEXEC.BATの例

    :
IF NOT "%CONFIG%"=="NOCD" MSCDEX /D:IDECD1 /D:SBCD1 /D:ASPICD1 /L:Q /V /E
    :

Copyright (C) 1998-1999 ITO Takayuki, All rights reserved.

伊藤隆幸のホームページ