ATAPI CD-R ドライブの使い方
手元のファイルを整理していたら,だいぶ前に書いた ATAPI CD-R の使い方という文書が見つかったので Web に載せておきます.書いたのが 2000 年の夏ごろとかなり古いので,現在では多少状況が変っている可能性もあります.
・Plamo Linux での ATAPI CD-R ドライブの使い方
最近は ATAPI 接続の安価な CD-R ドライブが普及していますが、Linux の標
準的な CD-R 書き込みソフトである cdrecord は SCSI 接続の CD-R ドライブ
を利用するように設計されており、そのままでは ATAPI 接続の CD-R ドライ
ブを利用することはできません。Linux では、この種の問題を解決するために、
カーネルに「IDE-SCSI エミュレーション」という機能が用意されており、
ATAPI 接続のCD-R ドライブを、アプリケーション(cdrecord)には SCSI デバ
イスのように見せかけることが可能になっています。カーネルのこの機能を利
用することで ATAPI 接続の CD-R ドライブも cdrecord 等から利用するこ
とが可能になります。
実際のところ、ATAPI は SCSI を参考にして作られた規格なので、コマンド
体系はよく似ているそうです。また、SCSI 接続の CD-R ドライブでは機種
ごとのコマンドがあり、cdrecord が対応している機種しか利用できません
でしたが、ATAPI の場合は比較的最近の(4 倍速以上くらいかな?)の CD-R
ドライブは機種を問わず利用できるようです。
CD から WAV データを取り出す cdda2wav も、ATAPI 接続の CD ドライブの
場合は SCSI エミュレーション経由で利用します。
この文書では、手元で使っている Panasonic LK-RW7585T という CD-R/RW ド
ライブ(CD-R 8 倍速/CD-RW 4 倍速)を例に、Linux から ATAPI CD-R ドライブ
を使う方法について説明します。
・カーネルの再構築
Linux 2.2 系では SCSI エミュレーション機能はカーネルに組み込むか
ide-scsi.o というモジュールドライバとして用意されています。また、
cdrecord は CD-R ドライブを generic SCSI(sg.o) デバイスとしてアクセス
しますので、"SCSI generic" 機能も組み込んでおく必要があります。
Plamo 2.0 では必要なドライバはあらかじめ用意していますが、カーネルを再
構築する必要がある場合などは、make menuconfig で
Block devices => SCSI emulation
SCSI support => SCSI generic support
の 2 点について、カーネルに組み込む("*")か、モジュールドライバにする
("M") という指定でカーネルを再構築してください。
カーネルの再構築が終了すれば、make bzlilo 等を実行して新しく作成したカー
ネルが利用されるように設定してください。モジュールドライバを利用する場
合は make modules_install を実行してモジュールドライバをインストールす
ることをお忘れなく。
・起動時パラメータの設定
SCSI エミュレーション機能を使う際は、どのデバイスを SCSI エミュレーショ
ン経由で利用するかをあらかじめ指定しておく必要があります。具体的には、
カーネルの起動時パラメータで hd=ide-scsi と指定します(は実際に
CD-R デバイスが接続しているデバイス名になります)。lilo を使っている場
合は、/etc/lilo.conf の append 行に
append="hdc=ide-scsi"
のように指定します。このように指定すると /dev/hdc はハードウェア的には
検出されるものの、通常の IDE デバイスとしては認識されなくなります。
手元のマシンでは /dev/hda が HDD(primary master)、/dev/hdc(secondary
master)が CD-R ドライブ、/dev/hdd(secondary slave) にはノーブランドの
CD ドライブが接続されており、上記パラメータを指定した場合、起動時のメッ
セージは以下のようになります。
1: hda: Maxtor 92049U4, ATA DISK drive
2: hdc: MATSHITA CD-RW CW-7585, ATAPI CDROM drive
3: hdd: 44X CD-ROM, ATAPI CDROM drive
4: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
5: ide1 at 0x170-0x177,0x376 on irq 15
6: hda: Maxtor 92049U4, 19541MB w/2048kB Cache, CHS=2491/255/63
7: hdd: ATAPI 40X CD-ROM drive, 128kB Cache
8: Uniform CDROM driver Revision: 2.56
9: scsi : 0 hosts.
10: scsi : detected total.
2 行目で hdc として認識されている CW-7585 が ide デバイス上では認識さ
れていない(6 行目と 7 行目)に注意してください。
なお、この例では SCSI エミュレーション機能はモジュール(ide-scsi.o)とし
て利用しているため、起動時には SCSI デバイスが認識されていません(9,10
行目)
SCSI エミュレーション機能(と SCSI CD-ROM 機能)をモジュールではなくカー
ネル組み込みにすると、起動時に以下のようなメッセージが出力されます。
# この例では /etc/lilo.conf の append 行に "hdc=ide-scsi hdd=ide-scsi"
# と設定し、/dev/hdc, /dev/hdd の双方を SCSI エミュレーション経由で利
# 用するようにしています。
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: Maxtor 92049U4, 19541MB w/2048kB Cache, CHS=2491/255/63
scsi0 : SCSI host adapter emulation for IDE ATAPI devices
scsi : 1 host.
Vendor: MATSHITA Model: CD-RW CW-7585 Rev: 1.01
Type: CD-ROM ANSI SCSI revision: 02
Detected scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
Vendor: MATSHITA Model: CD-RW CW-7585 Rev: 1.01
Type: CD-ROM ANSI SCSI revision: 02
Detected scsi CD-ROM sr1 at scsi0, channel 0, id 0, lun 1
Vendor: MATSHITA Model: CD-RW CW-7585 Rev: 1.01
Type: CD-ROM ANSI SCSI revision: 02
Detected scsi CD-ROM sr2 at scsi0, channel 0, id 0, lun 2
Vendor: MATSHITA Model: CD-RW CW-7585 Rev: 1.01
Type: CD-ROM ANSI SCSI revision: 02
...(snip)...
Detected scsi CD-ROM sr7 at scsi0, channel 0, id 0, lun 7
Vendor: Model: 44X CD-ROM Rev: 5.3A
Type: CD-ROM ANSI SCSI revision: 02
Detected scsi CD-ROM sr8 at scsi0, channel 0, id 1, lun 0
Vendor: Model: 44X CD-ROM Rev: 5.3A
Type: CD-ROM ANSI SCSI revision: 02
Detected scsi CD-ROM sr9 at scsi0, channel 0, id 1, lun 1
Vendor: Model: 44X CD-ROM Rev: 5.3A
Type: CD-ROM ANSI SCSI revision: 02
...(snip)....
Detected scsi CD-ROM sr15 at scsi0, channel 0, id 1, lun 7
scsi : detected 16 SCSI cdroms total.
sr0: scsi3-mmc drive: 8x/32x writer cd/rw xa/form2 cdda tray
Uniform CDROM driver Revision: 2.56
sr1: scsi3-mmc drive: 8x/32x writer cd/rw xa/form2 cdda tray
sr2: scsi3-mmc drive: 8x/32x writer cd/rw xa/form2 cdda tray
...(snip)...
sr7: scsi3-mmc drive: 8x/32x writer cd/rw xa/form2 cdda tray
sr8: scsi3-mmc drive: 4x/40x cd/rw xa/form2 cdda tray
sr9: scsi3-mmc drive: 4x/40x cd/rw xa/form2 cdda tray
...(snip)..
sr15: scsi3-mmc drive: 4x/40x cd/rw xa/form2 cdda tray
この例ではカーネル構築時に "Probe all LUNs on each SCSI device" を指定
しているため、一つの IDE デバイスが LUN に対する問い合わせの全てに反応
するようになっています。そのため /dev/hdc のドライブが /dev/scd[0-7],
/dev/hdd のドライブが /dev/scd[8-15] に割りあてられることになります。
複数の IDE デバイスを SCSI エミュレーション経由で利用する場合は、デバ
イス番号に注意してください。
・cdrecord でデバイスの確認
cdrecord は CD-R ライタを generic SCSI(/dev/sgN)デバイス経由で利用しま
す(N はデバイス番号)。generic SCSI 機能はカーネルの再構築メニューのう
ち SCSI support の中に独立して指定する項目として存在するので、忘れずに
組み込むようにしておいてください。
/dev/sgN が利用できる場合、cdrecord で -scanbus オプションを指定すると、
利用可能な generic SCSI デバイスが一覧表示されます。
bash# cdrecord -scanbus
Cdrecord 1.8.1a07 (i686-pc-linux-gnu) Copyright (C) 1995-2000 Jg Schilling
Using libscg version 'schily-0.1'
scsibus0:
0,0,0 0) 'MATSHITA' 'CD-RW CW-7585 ' '1.01' Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
この例では "0,0,0" デバイスが CD-R デバイスとして認識されています。
ちなみに、cdrecord や cdda2wav では SCSI デバイスを /dev/sda や
/dev/scd0 のようなデバイス名ではなく、0,0,0 のような 3 桁の数字で指定
します。この数字は (SCSI アダプタ番号、SCSI ID, LUN 番号) という指定に
なります。
cdrecord では、書き込み先のデバイスは dev= オプションで指定するので、
この例では、書き出したい CD イメージを CD.iso とすると、
# cdrecord -v dev=0,0 speed=8 CD.iso
という指定になります。
CD.iso という CD イメージは mkhybrid 等のコマンドで作成します。
・参考 URL
cdrecord のページ
http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html
CD-R ドライブ動作機種リスト(ただし海外の情報)
http://www.fadden.com/cdrfaq/faq05.html
国内 CD-R ドライブの OEM 関係情報
http://www.cdr.ne.jp/hard-index.html