(2001.01.09/2006.08.16upd)
BASEDEV=OS2ASPI.DMD /ALL DEVICE=D:\OS2\BOOT\ASPIROUT.SYSまた、ATAPIの場合は次のようにする。
REM BASEDEV=CMDATAPI.FLT ... BASEDEV=DANIATAP.FLT ←本来はDANIATAPI.FLTだが8文字に切り詰め BASEDEV=OS2ASPI.DMD /ALL DEVICE=D:\OS2\BOOT\ASPIROUT.SYSここで、重要なポイントが二点ある。一つは、OS/2の標準ドライバであるCMDATAPI.FLTを必ず無効にして、DANIATAPI.FLTを組み込むこと。もう一つは、「DANIATAPI.FLT」はファイル名が9文字あるため、FAT上では「DANIATAP.FLT」などように切り詰めて使うこと。このとき、CONFIG.SYS内でファイル名を間違うとドツボにはまるので注意。
なお、ドライバの組み込みが成功すれば、CDRecord/2がCD-R/RWドライブを認識できるようになる。
cdrecord -scanbusを実行して、接続したドライブが認識されているかどうかを確認する。このとき、SCSI-IDなどが表示されるが、この情報は後で必要になる。
(1)焼き込むファイルのイメージを作成する → mkisofs.exeを使う (2)イメージファイルをCD-Rに焼きこむ → cdrecord.exeを使う通常のGUI版のCD-R書き込みツールは、この二つのステップを自動的に実行してくれるが、コマンドライン版のCDRecordではそれぞれを手作業で実行する必要がある。しかも、オプションが非常に多いのでかなり面倒だ。焼き込む設定が決まったら、REXXスクリプトで自動化すると便利だろう。
なお、こうした手間を省くためのGUIインターフェース(GUI for CDRecord/2など)も発表されているので、試してみるとよいかもしれない。もっとも、ユーザーインターフェースが直感的でなく、安定性にもかなりの疑問がある。私はやはりREXXで自動化する方が便利だと思う。
以下では例として、マルチセッションのロングファイル名対応のCD-Rを焼く手順を説明する。なお、マルチセッションのCD-Rを焼くというのは、ユーザーにとっては当然のことだが、CDRecordでは決して既定のことではなく、各種のオプションを必要とするので覚悟のこと。
cdrecord -scanbusで入手できる。たとえば、一般的なSCSIカードを使って、SCSI-ID=6にCD-Rが接続されていれば、識別子は「0,6,0」になる。また、ATAPの場合は「0,1,0」となる。この情報がないと、cdrecordによる焼き込みができないのはもちろん、mkisofsによるマルチセッション用のイメージファイルの作成もできない。
mkisofs -o cdimage.raw e:/cdimage/なお、CDRecord/2はデフォルトでロングファイル名に対応していない。そのため、8.3を越えるファイル名は適宜リネームされてしまう。また、この使い方では追記も不可能。
また、イメージファイルの作成時にはディレクトリ構造に関する制限にも注意のこと。よく憶えてないが、ディレクトリの階層数にも、ディレクトリ内のファイル数にも制限があったはず。ファイルが450あるディレクトリを焼こうとしたら、エラーが出てしまったことがある。そこで、250ファイル以内の2つのディレクトリに分割したら問題なく書き込めた。
mkisofs -o cdimage.raw -J e:/cdimage/ unicode 64文字まで mkisofs -o cdimage.raw -joliet-long e:/cdimage/ unicode 103文字まで
もう一つは、ISO 9660に則った拡張。そもそも、ISO 9660はDOSにあわせて8.3ルールを採用していただけで、規格としては31文字までのファイル名が使用可能だった。そこで、規格本来の機能を使用するのが-l(小文字のエル)オプション。これはOS/2でも問題なくロングファイル名表示をできるのだが、jolietに比べると文字数の制限がきついのと、互換性に関する保証がない。一応、OS/2でもWindowsでもロングファイル名が表示できることは確認しているが、多分、DOSでは無理だろう。
mkisofs -o cdimage.raw -l e:/cdimage/ 半角31文字までまた、-allow-lowercaseオプションを併用すると、大文字・小文字センシティブにもできる。hpfsのファイルを保存するときにはこちらが便利。ただし、小文字表記が可能になるだけでなく、大文字とは別物として扱われる。そのため、OS側で判別できずに混乱することもある。両刃の剣。
mkisofs -o cdimage.raw -l -allow-lowercase e:/cdimage/ 大文字・小文字を区別なお、ロングファイル名に関しては、セッション毎に異なる指定が混在していてもよいようだ。たとえば、track1が8.3、track2がjoliet、track3が拡張iso9660なども可能らしい。
このほか、Mac(HFS)やLinux(RockRidge)のファイルシステムに対応したオプションもあるようだが、当面私には無関係なので省略。なお、古いCDrecord/2にはHPFS対応の-hpfsnamesというオプションがあったはずだが、少なくともver 2.0では見当たらないようだ。 |
【構文】mkisofs -o cdimage.raw -C (先頭位置) -M (デバイス識別子) e:/cdimage/ 【用例】mkisofs -o cdimage.raw -C 1,17885 -M 0,1,0 e:/cdimage/このうち、デバイス識別子は前述のcdrecord -scanbusで取得できる。また、先頭位置の方は、使用するCD-Rをドライブにセットして、次のようなコマンドを実行すれば入手できる(デバイス識別子が0,1,0の場合)。
cdrecord -msinfo dev=0,1,0このコマンドで入手できるのは「,」で区切られた二つの整数で、「(前回セッションの先頭),(次回セッションの先頭)」を意味する。デバイス識別子は滅多に変更されないだろうが、この先頭位置情報は、追記のたびに変わる。したがって、追記の度にコマンドを実行して先頭位置情報を取得し、その情報をパラメータとして指定しなければならない。これはかなり面倒だ。そこで、こいつをREXXに任せると…
/* mkisofs */ /* デバイス識別子は0,1,0 */ /* 拡張ISO 9660ロングファイル名対応 */ 'cdrecord -msinfo dev=0,1,0 > nt.dat' nt=linein(nt.dat); rc=stream('nt.dat','C','C'); say 'next track =' nt IF nt='' THEN 'mkisofs -o cdimage.raw -l e:/cdimage/' ELSE 'mkisofs -o cdimage.raw -l -C' nt '-M 0,1,0 e:/cdimage/' exitてな具合になる(ファイルにパラメータを書き出すのはちょっと見苦しいけど)。この方法ならば1回目の書き込みと2回目以降が自動的に判別できて便利。また、イメージファイルは元ファイルとほぼ同じ大きさになるので、HDDに十分な空き領域を確保しておくこと。
-o | 作成するイメージファイルの名前 |
-l | 拡張ISO 9660ロングファイル名(半角31文字まで) |
-allow-lowercase | 大文字と小文字を区別する |
-J | joliet形式(unicode 64文字まで) |
-joliet-long | joliet形式(unicode 103文字まで) |
-C | マルチセッションで追記する場合、書き始め位置を指定 |
-M | マルチセッションで追記する場合、CD-Rのデバイス識別子を指定 |
※注意
【構文】cdrecord -v speed=(書込速度) dev=(デバイス識別子) -multi -eject -data (イメージファイル) 【用例】cdrecord -v speed=2 dev=0,1,0 -multi -eject -data cdimage.rawこれで数分〜数十分後に焼き上がる。
-v | 画面にメッセージを表示する |
speed= | 書き込み速度(倍速指定)。当面は「2」くらいで。 |
dev= | デバイス識別子。ATAPIなら「0,1,0」のことが多い。SCSIの場合は「0,(SCSI-ID),0」となる。 |
-multi | マルチセッションで焼く(必須) |
-eject | 書き込み終了後にディスクをイジェクト(必須) |
-data | データCDを焼く(オーディオCDではない) |
/* CDRecord REXX script */ /* デバイス識別子は0,1,0 */ /* ソースディレクトリはg:\cdimage */ /* 拡張ISO 9660ロングファイル名対応 */ /* 大文字・小文字を区別する */ 'DEL nt.dat' 'DEL cdimage.raw' 'cdrecord -msinfo dev=0,1,0 > nt.dat' nt=linein(nt.dat) rc=stream('nt.dat','C','C'); say 'next track =' nt IF nt='' THEN 'mkisofs -o cdimage.raw -l -allow-lowercase g:/cdimage/' ELSE 'mkisofs -o cdimage.raw -l -allow-lowercase -C' nt '-M 0,1,0 g:/cdimage/' cdrecord -v speed=2 dev=0,1,0 -multi -eject -data cdimage.raw exit