次のページ 前のページ 目次へ

2. CD-ROM を焼くための Linux の設定

この章は全ての種類の CD ライタに適用できます.これには SCSI, IDE/ATAPI, パラレルポート用のデバイスが含まれます.後ろの 2 つの種類の デバイスは互換ドライバを必要とします.このドライバはこれらのデバイスを 本物の SCSI デバイスのように見せかけます.ある面では,このような統一化 (「全てのデバイスが SCSI である」)は簡単です.なぜなら,アプリケーショ ンレベルでは CD ライタの種類に関わらず他のユーザと知識を共有できるから です.その反面,ドライバ名の変更を反映させるために CD プレイヤーのよう なアプリケーションや,マウントユーティリティの再設定を行わなければなり ません.例えば今まではデバイスファイル /dev/hdc 経由で ATAPI 接続の CD ライタにアクセスしていても,SCSI 互換ドライバを有効にした後は /dev/scd0 経由でアクセスしなければならなくなります.

一度ハードウェアとその他の Linux システムの設定がうまくできれば, cdrecord -scanbus コマンドの実行により SCSI バスに接続されているデバイ スの一覧が表示されます.この章の目的は,最終的に次のような出力が得られ るように Linux システムを設定する手伝いをすることです:

shell> cdrecord -scanbus
Cdrecord release 1.7a1 Copyright (C) 1995-1998 Jo"rg Schilling
scsibus0:
          0) 'Quantum ' 'XP34300         ' 'F76D' Disk
          1) 'SEAGATE ' 'ST11200N        ' '8334' Disk
          2) *
          3) 'TOSHIBA ' 'MK537FB/        ' '6258' Disk
          4) 'WANGTEK ' '5150ES SCSI 36  ' 'ESB6' Removable Tape
          5) 'EXABYTE ' 'EXB-8500-85QUE  ' '0428' Removable Tape
          6) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Removable CD-ROM
          7) *
scsibus1:
        100) 'Quantum ' 'XP31070W        ' 'L912' Disk
        101) *
        102) *
        103) 'TEAC    ' 'CD-R55S         ' '1.0H' Removable CD-ROM
        104) 'MATSHITA' 'CD-R   CW-7502  ' '4.02' Removable CD-ROM
        105) *
        106) 'YAMAHA  ' 'CDR400t         ' '1.0d' Removable CD-ROM
        107) *
リスト: SCSI バスでのデバイスの検出

この例は Jo"rg Schilling さんから頂いたもので,全部で 4 つの CD ライタ が表示されています.-scanbus オプションは他のデバイス(例えば普通の CD-ROM やハードディスク)も表示するので注意してください.各デバイスにつ いての最後のカラムは,どんな SCSI デバイスかを説明したものです.この項 目では普通の CD-ROM ドライブと CD を焼く機能を持った CD-ROM ドライブをはっきりとは区別 できません.しかし 製品識別文字列(真ん中の項目)を見れば,機能に関するヒントが R, -R, -RW といった形で 得られることがよくあります.

2.1 Linux カーネルの設定

Linux カーネルはさまざまな機能のためのドライバを装備しています.ドライ バはカーネルイメージに静的に組み込むか,動的ロードできるモジュールとし て組み込むことができます.Linux システムを動かすために本質的でないドラ イバは後者の方法がいいでしょう.なぜならカーネルが小さくなり,したがっ て高速になるからです.しかし,一部のドライバはシステムを立ち上げるため に必ず必要であり,モジュールとして組み込むべきではありません.例えば,システ ムが IDE ハードディスク上にある場合には,IDE ハードディスク用のドライ バはカーネル内になければならず,モジュールにはできません.

CD ライタには異なる 3 種類のものがあります.すなわち SCSI, IDE/ATAPI のライタと,パラレルポート経由で動作する外付けライタです.それぞれのハー ドウェアについて Linux カーネルをどのように設定すればよいかを表に示します.表の最初 のカラムはカーネル設定メニューでのセクションです.ここに設定があると思 います.2 番目のカラムはカーネルの機能の説明です(これもカーネル設定メ ニューからの引用です).3 番目のカラムは,できるモジュールの名前です. SCSI, IDE, PP というカラムは,対応するハードウェアにとって必要なオプショ ンです(PP はパラレルポートのことです).

セクション 説明                    モジュール SCSI  IDE   PP
------------------------------------------------------------
BLOCK  Enhanced IDE/MFM/RLL...                     Y      
BLOCK  IDE/ATAPI CDROM             ide-cd          M     
BLOCK  SCSI hostadaptor emulation  ide-scsi        M      
BLOCK  Loopback device             loop       M    M     M

PARIDE Parallel port IDE device    paride               Y/M
PARIDE Parallel port ATAPI CD-ROMs                       M
PARIDE Parallel port generic ATAPI                       M
PARIDE (select a low-level driver)                       Y

SCSI   SCSI support                scsi_mod  Y/M  Y/M    
SCSI   SCSI CD-ROM support         sr_mod    Y/M  Y/M     
SCSI     Enable vendor-specific               Y    Y      
SCSI   SCSI generic support        sg        Y/M  Y/M     
SCSI   (select a low-level driver)            Y

FS     ISO 9660 CDROM filesystem   iso9660    Y    Y     Y
FS     Microsoft Joliet cdrom...   joliet    M/Y  M/Y   M/Y
表: 各種ライタ用のドライバ選択

Y は 'yes' を表し,カーネルに組み込むべきであることを示します. M は 'module(モジュール)' を表し,その機能はモジュールとしてコンパイル すべき,あるいはコンパイルしなければならないことを示します.Y/M ならば どちらかを選ぶことができます(問題が起こる可能性が小さい方を選びましょう). 空の部分は変更する必要がないことを表します.このような設定は変えない方 が,作ったカーネルが動作する可能性が高いでしょう(前に動いた実績があれ ば…).特に,SCSI デバイスと ATAPI デバイスが混在している環境では,ほ とんどのものをモジュールとして作成する方がよいでしょう.

ループバックデバイスはコンパイルしなくてもかまいません.このデバイスを 使うと,イメージをメディアに書き込む前にテストすることができます. CD-ROM を読み取りたければ,ISO 9660 ファイル システムをサポートする必要があります.このドライバは自動的に RockRidge 拡張を含みます.Microsoft Joliet 拡張は,明示的に ISO 9660 ファイルシ ステムに追加しなければなりません.いずれの場合にも,ハードウェアに対応し た低レベルドライバが必要です.低レベルドライバとは,直接ハードウェアと 通信するドライバのことです.SCSI やパラレルポートの場合には,たくさん の低レベルドライバがあります.

モジュールをロードするためには,これらを /etc/modules といった設定 ファイルに列挙するか,kerneld や kmod といったデーモンを動作させなけれ ばなりません.kerneld と kmod はどちらも,カーネルが必要とした時にモジュー ルを自動的にロードします.モジュールを楽に扱うため には,以下の設定を /etc/conf.modules に追加するといいでしょう:

alias   scd0 sr_mod                  # scd0 にアクセスがあれば sr_mod をロード
alias   scsi_hostadapter ide-scsi    # SCSI ホストアダプタのエミュレーション
options ide-cd ignore=hdb            # /dev/hdb が CD ライタならば設定すること
IDE/ATAPI ライタを使うための設定例

alias は一つのモジュールに別名を付けるもので,本質的なものではありませ ん.options は,モジュールをロードする際のオプションを(モジュールを modprobe/insmod で正常に使えた後に)ずっと有効にするためのものです. 様々なモジュールのオプションについて知りたいならこの先 を読んでください.

説明                                        コマンド
--------------------------------------------------------------
有効なドライバを表示                        cat /proc/devices
有効なモジュールの一覧                      cat /proc/modules
利用可能なモジュールの一覧                  modprobe -l
モジュールの削除                            modprobe -r
モジュールの手動ロード                      modprobe
起動時にモジュールをロード                  モジュールを /etc/modules に記述
                         (お使いのディストリビューションの文書を見てください)
必要に応じてモジュールをロード              kmod か kerneld を使用
表: カーネルモジュールとドライバを扱うコマンド

システムで使えるようになっていないモジュールが必要な場合には,カーネル の再コンパイルと再インストールが必要です.その詳細については Kernel-HOWTO をご覧ください.カーネルモジュールの扱いについての最新情 報は Module-HOWTO に書かれています.必要なモジュールがうまく構築できた か,あるいは見つかった場合には,その名前を /etc/modules に追加するか,モジュール の自動ロード機能(kmod, kerneld)を使う設定を行いましょう.よくわからな ければ,お使いのディストリビューションに付属している文書を調べましょう.

自分自身のマシンをお使いであれば,ディストリビューションに付属している 「Linux カーネルソース」というパッケージをインストールするだけです. その後で以下のコマンドを実行します:

cd /usr/src/linux
make menuconfig  # 説明とメニューに従います
make dep
make zImage      # または "make bzImage"
# 先に進む前にフロッピーディスクを挿入します
dd if=arch/i386/boot/zImage of=/dev/fd0
make modules
make modules_install
表: 起動可能なフロッピーディスクの作成

これによって起動可能なフロッピーディスクができます.この作業全体が本当 にわからないのであれば,システムをぐちゃぐちゃにしてしまう前に Kernel HOWTO といった他の文書を読むか,友達の助けを求めるべきでしょう.カーネ ルがシステムの中心部分であることを忘れてはいけません.

バージョン 2.2.9 までのカーネルについての特別ヒント

ATAPI 接続の CD ライタを持っている人は注意してください.システムの起動 時に CD ライタが ATAPI デバイスとして検出されてしまうと,Linux 上でそ のデバイスを CD ライタとして使うことができなくなってしまいます.一度 IDE/ATAPI ドライバがデバイスを握ってしまうと,SCSI ドライバ(ホストアダ プタエミュレーションの最上部にあります)はもうデバ イスに触れなくなってしまいます.ですからカーネルを再コンパイルして,先 に示した表のように CD-ROM 関係のドライバをモジュールにしましょう.

バージョン 2.2 以降のカーネルでは,"ignore=" パラメータを使って,ide-cd ドライバがデバイスを握るかどうかを制御することができます.このオプショ ンを有効にするとドライバは指 定されたデバイスは握らないので,SCSI ホストアダプタエミュレーションを 有効にしている時にも利用することができます.例えば,ATAPI 接続のライタ が hdb の時に,IDE-SCSI ドライバに hdb を SCSI デバイス[普通は sr0]と して扱わせたいならば,"modprobe ide-cd ignore=hdb" と指定してください. この指定は(バージョン 2.0 と異なり)カーネルのコマンドラインで行うこと はできません.

バージョン 2.2.9 までのカーネルでは,CONFIG_SCSI_MULTI_LUN(複数の LUN を検出する)と IDE-SCSI サポートを同時に有効にしてはいけません.という のも,IDE-SCSI ドライバのバグがこれに引っかかるからです.

一部のユーザはコンパイル済みのカーネルとバージョン 2.2 のカーネルでこ の衝突を報告しています.これは Linux のカーネルの問題です. 考えられる解決方法を以下に示します:

2.2.10 以降のカーネルについての特別ヒント

筆者への報告によると,2.2.10 以降のカーネルは 2.0.x 系列のカーネルのオ プションと 2.2.x 初期のカーネルのオプションを両方持っているとのことです. 筆者は 2.0.37 のように,どのデバイスをどのドライバで制御するか指定する 方法をお勧めします.以下にその方法を示します:

2.0.x 系列のカーネルについての特別ヒント

2.0.31 以前のカーネルにはいくつかバグがあり,CD-ROM 上の最後のファイル を読むことができません.2.0.37 以降にバージョンアップしましょう.このバー ジョンでは,"SCSI emulation" と呼ばれていた機能は,より正確な名前であ る "SCSI hostadaptor emulation" に改名されています.

2.0.37 以降のバージョンでは,どの ATAPI デバイスにどのドライバ(IDE ま たは SCSI)を使うのかを指定できます.もっと正確に言うと, "SCSI hostadaptor emulation" 機能をカーネルに追加して,カーネルのコマンドライン(起 動時に)で特定のデバイスに対してエミュレーションを有効にすること ができます.例えば,CD ライタがデバイスファイル /dev/hdb を持っている ならば,hdb=ide-scsi という行を追加します.ブートマネージャで ある LILO や chos を使ってこの設定をずっと有効にするための方法を以下 に示します.

image=/boot/zImage-2.0.37
  label=Linux
  read-only
  append="hdb=ide-scsi"
リスト: LILO の設定例 (/etc/lilo.conf)

linux "Linux 2.0.37" {
        image=/boot/zImage-2.0.37
        cmdline= root=/dev/hda5 readonly hdb=ide-scsi
}
リスト: chos の設定例 (/etc/chos.conf)

2.2 ハードウェアとデバイスファイル

必要なドライバを全てインストールしたら,新しいカーネルを起動します.こ のカーネルは以下の章で必要となる全ての機能を持っているはずです.

[ devfs のユーザは,デバイスファイルを手動で設定するための以 下の手順で煩わされる必要はありません.devfs を使っていれば,必要なものは全 て自動的に正しい場所に現われます.]

/dev ディレクトリに行き,ループバックデバイスを調べ てください.このデバイスが無くても致命的ではありませんが,あると便利で す(3.5 節を参照).デバイスファイルが既にあれば,ls コマンドは loop0-loop7 を表示するはずです:

shell> cd /dev
shell> ls loop*
loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7
リスト: ループバックデバイスを作成するコマンド

これらのデバイスファイルが無ければ,/dev/MAKEDEV スクリプトを 使って作成します:

shell> cd /dev/
shell> modprobe loop   # "loop" というモジュールをロード
shell> ./MAKEDEV loop
リスト: ループバックデバイスを作成するコマンド

最後のコマンドが成功するのは,カーネル内に loop モジュールが ある場合だけです.loop デバイスファイルに関するここまでの説明は,他の デバイスファイル全て(sg*, pg*, hd*, ...)にも当てはまりますが,本文書で 明示的に説明を繰り返すことはありません.

お使いの Linux ディストリビューションに /dev/MAKEDEV スクリプトがない 場合には,以下の for ループを使って手動でデバイスファイルを作ってくだ さい:

for i in 0 1 2 3 4 5 6 7
do
        mknod /dev/loop$i c 7 $i
done

IDE/ATAPI 接続の CD ライタ

ATAPI は IDE デバイスの拡張であり,最近の IDE デバイスは全て ATAPI に なっています.この拡張を使うと,IDE バス上で SCSI プロトコルを使うこと ができます.カーネルの ide-scsi モジュール(IDE コントローラを部分的に SCSI コントローラに変えます)と組み合わせると,IDE/ATAPI デバイスを SCSI デバイスのように扱うことができます.したがって,単にこのモジュー ルをロードし,SCSI の CD ライタを持っているかのように操作してください.

SCSI 接続の CD ライタ

お使いの CD ライタをコンピュータの BIOS が認識していることを確かめてく ださい.ハードウェア自体をコンピュータが認識していないと,先に進んでも 無意味です(何も言われなかったことを認められたことの印と解釈してはいけ ません.画面にメッセージが表示されることが必要です).

SCSI をパラレルポートに接続するつもりならば(パラレルポート用の IDE ドライブと混同しないでください),特殊なアクティブケーブルと特殊な カーネルドライバが必要です.この方法について調べるなら http://www.torque.net/parport/parscsi.html を読んでください.

汎用 SCSI デバイス

SCSI のハードディスクや CD-ROM ドライブにアクセスするためのデバイスファ イルである /dev/sd* や /dev/sr* は,ブロック指向でのデータ転送しか許し ていません.この制限により,これらのデバイスは高速かつデータ保存のデ バイスに適したものになっています.CD ライタのレーザーの制御はもっ と複雑な作業なので,ブロック指向のデータ転送だけでは不足です. sd* と sr* を美しくかつ高速なデバイスのままにするために,別の種類 の SCSI デバイスが導入されました.これがいわゆる 汎用 SCSI デバイス(generic SCSI devices)です. 汎用デバイスを通じて SCSI ハードウェアに対してどんなことでも行え るので,このデバイスは特定の目的に縛られません. したがって汎用(generic)という名前が付いています.

他のデバイスでも同じですが,このデバイスは(伝統により) /dev ディレクト リになければなりません:

shell> cd /dev
shell> ls sg*
sg0  sg1  sg2  sg3  sg4  sg5  sg6  sg7

これらのデバイスファイルがなければ,/dev/MAKEDEV スクリプトを 使って作成します:

shell> cd /dev/
shell> ./MAKEDEV sg

お使いの Linux ディストリビューションに /dev/MAKEDEV スクリプトがなけ れば,以下の for ループを使って手動でデバイスを作成してください:

for i in 0 1 2 3 4 5 6 7
do
        mknod /dev/sg$i c 21 $i
done

パラレルポート用の CD ライタ

これについてはさっぱりわかりません.ごめんなさい. http://www.torque.net/parport/paride.html を見るか,ローカ ルファイル /usr/src/linux/Documentation/paride.txt を見てください.

2.3 CD-R を焼くためのユーザソフトウェアの入手

CD-ROM を作成するためのツールに関する詳しい調査の結果が http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html にあります.

コマンドライン用ユーティリティ

CD-R のイメージ(データ CD-ROM の場合のみ)を生成するためには,以下のパッ ケージのいずれかが必要です:

ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/ (mkisofs)

ftp://ftp.ge.ucl.ac.uk/pub/mkhfs (mkhybrid)

イメージを CD-R に焼くためには,以下のパッケージのいずれかが必要です:

ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ (cdrecord)

http://www.ping.de/sites/daneb/cdrdao.html (cdrdao)

(古い)mkisofs のオンラインマニュアルにはバージョン 1.5 の cdwrite が必要だと書かれていますが,これを信じてはいけません. 黙って cdrecord を使ってください.それで大丈夫です. 新しいバージョンの cdrecord には改良版の mkisofs が付属していることと, 他では見つからない追加ツールがいくつか misc ディレクトリ(readcd, isosize)にあることに注意してください.

GUI (無くてもかまいません)

Linux においては,フロントエンドは本当にフロントエンドです.つまり,フ ロントエンドがあってもコマンドライン用のユーティリティはインストールし なければならないのですが,使う時の見栄えがよくなります.

X-CD-Roast は Linux で CD を簡単に作成するためのプログラムパッ ケージです.これは cdrecordmkisofs のようなコマ ンドライン用のツールと組み合わせて使い,使いやすい GUI を提供します.

http://www.fh-muenchen.de/home/ze/rz/services/projects/xcdroast/e_overview.html

BurnIT は cdrecord の JAVA 版フロントエンドであり, cdda2wav-0.95 を加えれば UNIX 環境で CD を焼くための完全な環境が作れま す.これは

http://sunsite.auc.dk/BurnIT/

から入手できます.

XDaodio

これは cdrdao のグラフィカルフロントエンドです.このパッケージの主な目 的は,オーディオ CD をまるごとコピーすることです.

http://www.lrz-muenchen.de/~MarkusTschan/


次のページ 前のページ 目次へ