Next Previous Contents

CD-Writing mini-HOWTO日本語版

原文: CD-Writing mini-HOWTO version 1.6 18 Jan 1997

著者: Winfried Truemper <winni@xpilot.org>
協力: Dale Scheetz <dwarf@polaris.net>
訳者: Yoshinori Mamoto <ymamoto@ent.med.osaka-u.ac.jp>
                       <macky@msic.med.osaka-cu.ac.jp>

  I (Winfried Truemper) DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  DOCUMENT, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  FITNESS FOR A CERTAIN PURPOSE; IN NO EVENT SHALL I BE LIABLE FOR ANY
  SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  CONNECTION WITH THE USE OF THIS DOCUMENT.

要するに、「自分で責任を持て」ということです。



1. 紹介

  最初は、Matt Cutts <cutts@ms.uky.edu>の書いた"CD Writer mini-HOWTO"
を参考にしてCD Writerを使いました。ありがとう、Matt!

  彼の文書を更新するだけのつもりでしたが、1994年以来、数多くの変更がありま
したので、一から書き直すことにしました。


1.1. 読んでおいた方がいい文書

  "Linux CD-ROM HOWTO"は、Linux上でCD-ROMを使う人が知っておくべきこと
について、触れています。その他に、"Linux SCSI HOWTO"と"Linux Kernel
HOWTO"には目を通した方がいいかもしれません。


1.2. 用語集....レーザー出力最大....発射!!

  "CD-ROM"は、"Compact Disc Read Only Memory"(読み込み専用のコンパク
トディスク)の略で、光レーザーを使って、ポリカーボネートで保護されたア
ルミニウム層にある微小な穴を読みとるようになっている記録メディアです。
穴はビットデータを記録しているものの、極めて小さいので、たくさんの穴が
ディスクに存在でき(数十億個)そのおかげで大容量記録メディアとなってい
ます。

  "CD-R"は、"CD-ROM recordable"(記録可能なCD-ROM)の略で、CD-ROMと異
なり、表面の「微小な穴」は存在しません・・・ですから空です。代わりに、
ポリカーボネート層の下に、「微小な穴」を焼き付けることの可能な特殊なフィ
ルムが存在しています。通常レベルのレーザーでは、この微小な穴を読みとる
だけであり、出力の高いレーザーで穴をあけることができるようになっていま
す。CD-Rドライブを使うと一度だけ穴をあけることができます。

  このmini-HOWTO文書は、CD-Rの使い方について説明しています。

  戦闘ブリッジへようこそ、艦長!!


1.3. 動作可能なCD-Writer

  "Linux"で使えるCD-Writerは、以下の製造元のドライブもしくは互換品です。

        Philips, IMS, Kodak, Yamaha, Hewlett-Packard

  もしサポートされていないドライブであっても、CDイメージを作成するのに
Linuxを使うことは可能ですが、CD-Rにイメージを書き込むためにはDOS用の書
き込みソフトを使う必要があります。(DOSソフトでは、Linuxのロングファイ
ルネームが使えないので、こうしたいと思うでしょうね。)この場合、ハード
関係について触れた部分("generic SCSIデバイス"と"cdwrite"に関する項)
を読み飛ばしても構いません。


1.4. 未実装の機能

  今のところ、Linux上でCDを焼き付けるためのソフトは、マルチセッション
CDやブート可能なCDを作成する機能がありません。
  ですが、共に現在開発中であり、アルファテスト中です。

  もし、開発に協力したいと思うなら、空のCD-Rメディアそのものか、購入費
用を送って下さい。デバッグに協力してくれると、もっと助かります。
(バグ出しのためにCD-Rが無駄になる件を読んで下さい)
  開発者が嫌うのは、「いつ使えるようになるの?」とか「なぜ動かないの?」
といった質問です。
  もし積極的に手助けする気で開発チームに参加したいと思うなら、本文に
"subscribe"と書いた電子メールを下記のアドレスに送ってください。

        cdwrite-request@pixar.com


2. LinuxでCD-ROMを作成するための準備


2.1. ハードウェアの設定

(a)コンピュータをシャットダウン、電源を切って、CD writerをSCSIバスに接
   続して下さい。CD writerを使うには、SCSIコントローラが必要です。通常
   のE-IDEインターフェースでは、CD writer(トースターと呼ばれることも
   多い)は使えません。

(b)SCSIバスが、きちんとターミネートされているかどうか、またCD-Writerの
   SCSI IDが他のとぶつかっていないかどうか確認して下さい。自身がなけれ
   ばSCSI-HOWTO文書を読んで下さい。なんのことか全然判らない人は、判る
   人に聞いて下さい。

(c)電源を入れて、SCSIコントローラの告げるメッセージを確認して下さい。
   CD-Writerが認識されていなければ、(b)に戻って下さい

  次のようなメッセージが表示される筈です。

        (ごめんなさい。どなたか出力画面データをもっていませんか?)


2.2. LinuxでCDを焼く上での注意

  他で言われているのと違い、Linuxカーネルにパッチを当てる必要はありま
せん。カーネルソースの"drivers/scsi/scsi.c"には、下記のような部分があ
りますが、

        case TYPE_WORM:
        case TYPE_ROM:
          SDpnt->writeable = 0;

  これは、CDやWORMメディアは、標準デバイス"/dev/sda"-"/dev/sdh"経由で
は書き込めないということを意味しているだけなので、全く問題はありません。

  CDを焼く場合は、これらのデバイスの代わりに、CDに書き込むことを含め、
ほとんど何でもOKのいわゆる"generic SCSIデバイス"を通しておこないます。


2.3. "generic SCSIデバイス"の作成

  Linux SCSI-HOWTO文書によれば、generic SCSIデバイスとは下記のようなも
のです。

     generic SCSIデバイスドライバは、あらゆるSCSIデバイス--ディスク、
     テープ、CD-ROM、メディアチェンジャー、ロボットなど--にSCSIコマン
     ドを送るためのインターフェースです。

  genericデバイスを「インターフェース」と表現しているのは、標準デバイ
スを通してSCSIハードウェアにアクセスするのとは別の方法を取っているから
です。Linuxでは、標準SCSIデバイス経由では、ハードウェアを直接操作する
ことはできません。あらゆる操作が、まずカーネルを経由するようになってい
ます。が、CD書き込みソフトは、CD-Writerを直接操作できないと使えません。
ですから、genericデバイスを使う必要があるのです。

メモ:CD-Writerを操作する標準的な方法があれば、カーネル開発者らはCD-R書
     き込みのためのカーネルモジュールをプログラムしていたでしょうし、
     genericデバイスを使う必要も無かったのです。しかし、あらゆる製造元
     が、CD-Rドライブ個々に特別なドライバを要求するので(なんてこった
     い!)カーネルモジュールを作成したとしても、使いにくくて、嫌にな
     るほど馬鹿でかい代物になることでしょう。

  genericデバイス経由では、SCSIハードウェアに対し、何でもできるので、
特定の用途に縛られることはありません。それゆえに、"generic"の名がつい
ています。

  "/dev"ディレクトリに移って、"generic SCSIデバイス"をチェックしてくだ
さい。"ls"コマンドで"sga"から"sgh"までが表示されていなければなりません。

        bash> cd /dev
        bash> ls -l sg*
        crw-------   1 root   sys     21,   0 Jan  1  1970 sga
        crw-------   1 root   sys     21,   1 Jan  1  1970 sgb
        crw-------   1 root   sys     21,   2 Jan  1  1970 sgc
        crw-------   1 root   sys     21,   3 Jan  1  1970 sgd
        crw-------   1 root   sys     21,   4 Jan  1  1970 sge
        crw-------   1 root   sys     21,   5 Jan  1  1970 sgf
        crw-------   1 root   sys     21,   6 Jan  1  1970 sgg
        crw-------   1 root   sys     21,   7 Jan  1  1970 sgh

  デバイスファイルが存在していなければ、"/dev/MAKEDEV"スクリプトを利用
して作成して下さい。

        bash> cd /dev/
        bash> ./MAKEDEV sg

  今度は、デバイスファイルが表示される筈です。


2.4. "generic SCSI"デバイスと"loopback"デバイスを使えるようにする方法

  generic SCSIデバイスを扱えるようにするには、カーネルに、そのためのモ
ジュールを組み込む必要があります。この機能を持ったカーネルを使っている
ならば、"/proc/devices"の下に、表示される筈です。

        bash> cat /proc/devices
        Character devices:
         1 mem
         2 pty
         3 ttyp
         4 ttyp
         5 cua
         7 vcs
        21 sg          <---------- SCSI Generic Devie用
        30 socksys

        Block devices:
         2 fd
         7 loop        <---------- loopデバイスも使えるように
         8 sd
        11 sr          <---------- SCSI CD-ROM用

  おそらく、"insmod sg"("insmod loop"もかな)とコマンドを打たないとカー
ネルにモジュールが組み込まれていないことだろうと思います。こうやってみ
た後で、もう一度チェックしてみて下さい。

  これでも、うまくいかなかったら、カーネルを再構築しないといけません。
         bash> cd /usr/src/linux
         bash> make config

         [..]
         *
         * Additional Block Devices
         *
         Loopback device support (CONFIG_BLK_DEV_LOOP) [M/n/y/?] M

         [..]
         *
         * SCSI support
         *
         SCSI support (CONFIG_SCSI) [Y/m/n/?]
         *
         * SCSI support type (disk, tape, CD-ROM)
         *
         SCSI disk support (CONFIG_BLK_DEV_SD) [Y/m/n/?] Y
         SCSI tape support (CONFIG_CHR_DEV_ST) [M/n/y/?] M
         SCSI CD-ROM support (CONFIG_BLK_DEV_SR) [M/n/y/?] M
         SCSI generic support (CONFIG_CHR_DEV_SG) [M/n/y/?] M

         [..]
         ISO9660 cdrom filesystem (CONFIG_ISO9660_FS) [Y/m/n/?] M

  ここで関係の無い質問については省略しています。


2.5. カーネルの構築とインストール

  よく判らないことがあれば、Linux Kernel-HOWTO文書を読んでみて下さい。
またLinux-distributionに、この件に関するドキュメントが記載されていると
思います。

ヒント:カーネルのコンパイル中でも、2.7-2.9を先に済ませることができます。


2.6. リブートして、変更した結果を有効にしましょう。

  Linuxカーネルが速くて読めない程の速度でメッセージを出力しても焦る必
要はありません。少なくとも、SCSIデバイスの初期化に関しては、"dmesg"コ
マンドで再表示できますから。

        scsi0 : NCR53c{7,8}xx (rel 17)
        scsi : 1 host.
        scsi0 : target 0 accepting period 100ns offset 8 10.00MHz
        scsi0 : setting target 0 to period 100ns offset 8 10.00MHz

          Vendor: FUJITSU   Model: M1606S-512        Rev: 6226
          Type:   Direct-Access                      ANSI SCSI
        Detected scsi disk sda at scsi0, channel 0, id 0, lun 0

          Vendor: NEC       Model: CD-ROM DRIVE:84   Rev:  1.0a
          Type:   CD-ROM                             ANSI SCSI
        Detected scsi CD-ROM sr0 at scsi0, channel 0, id 4, lun 0

        scsi : detected 1 SCSI disk total.
        SCSI device sda: hdwr sector= 512 bytes. Sectors= 2131992

  上記の初期化メッセージは、物理的に存在するSCSIデバイスの認識結果の一
部です。


2.7. "loopbackデバイス"の作成

  "/dev"ディレクトリに移って、"loopbackデバイス"が存在するかどうか確認
して下さい。無くても困るわけじゃないのですが、不便です。(3.5参照)

  既に存在していれば、"ls"コマンドで、下記のように、loop0からloop7まで
が表示される筈です。

        bash> cd /dev
        bash> ls -l loop*
        brw-rw----   1 root  disk    7,   0 Sep 23 17:15 loop0
        brw-rw----   1 root  disk    7,   1 Sep 23 17:15 loop1
        brw-rw----   1 root  disk    7,   2 Sep 23 17:15 loop2
        brw-rw----   1 root  disk    7,   3 Sep 23 17:15 loop3
        brw-rw----   1 root  disk    7,   4 Sep 23 17:15 loop4
        brw-rw----   1 root  disk    7,   5 Sep 23 17:15 loop5
        brw-rw----   1 root  disk    7,   6 Sep 23 17:15 loop6
        brw-rw----   1 root  disk    7,   7 Sep 23 17:15 loop7

  もし、上記のデバイスファイルが存在していなければ、"/dev/MAKEDEV"スク
リプトを使って作成して下さい。

        bash> cd /dev/
        bash> ./MAKEDEV loop

  カーネルに"loop"モジュールが組み込まれていなければ、うまく作成されま
せん。(2.4を参照)"insmod loop"としてから、やり直してもうまくいかなかっ
た場合は、再構築したカーネルをインストールするまで、おあずけです。


2.8. CDを焼くのに必要なソフトウェアの入手

2.8.1. コマンドラインで使えるユーティリティ

  下記のパッケージが必要です。

ftp://tsx-11.mit.edu/pub/linux/BETA/cdrom/mkisofs-1.05.tar.gz
ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/cdwrite-2.0.tar.gz

  近くのミラーサイトか、CDから入手して下さい。

  "cdwrite"コマンドは、バージョン2.0以上であることが絶対に必要です。古
いバージョンのものやベータバージョンでは、うまく動きません。man-pageの
"mkisofs"の項を信用しないように。"mkisofs"パッケージには、"cdwrite"の
バージョン1.5が入っていますが、これでは、正常に使えません。

  Devian-Distributionには、"mkisofs"コマンドに"-K"オプション(3.4を参照
のこと)を追加するパッチがあります。下記の場所から入手できます。

ftp://ftp.debian.org/pub/debian/rex/source/misc/mkisofs_1.05-3.diff.gz

  このパッチは、CD-imageをloopbackデバイスを通してマウントしたい場合の
み必要になります。

2.8.2. GUIベースのユーティリティ(無くても良い)

  X-CD-Roastコマンドは、"cdwrite-2.0"や"mkisofs-1.05"などのCD作成関係
のプログラムのグラフィカルなX11フロントエンドプログラムです。下記の場
所から入手できます。

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

  X-CD-Roastコマンドは、完全にXベースのCD-Writerプログラムで、
"cdwtools-0.93"にとってかわることになりました。


3. "If to smoke you turn I shall not cease to fiddle while you burn."
     (Emperor nero about writing his own classic-CDs [AD64];
      he misunderstand it completly)
(注:訳せないことは無いのですが、英語の駄洒落なので、原文のまま)

通常、Linux環境でCDを作成するには、次の2段階の手順が必要です。

        - 焼きたいソフトウェアを集め、"mkisofs"コマンドを使って
          iso9660イメージファイルを作る。

        - iso9660イメージファイルを"cdwrite"コマンドを使って、CD-Rに焼
          き付ける。

  この過程をパイプを使って行なうこともできるかもしれませんが、信頼でき
ないので止めた方がいいです。以下に書いてあることを読んで下さい。



3.1. どのgeneric SCSIデバイスにCD-Writerが割りふられるかを確認する

  最後の章の全ての節まで済ませた後は、きっとCDを作成できるようになると
思います。この節では、所期の動作をしているかどうかの確認の方法について
述べます。

  "dmesg"を実行して下さい。Linuxカーネルがブート時に出すメッセージが
(最後の200行だけに制限されていますが)表示されます。ここに、SCSIバス
に接続したCD-Writerについての情報が含まれています。

簡単な例:

      Vendor: YAMAHA  Model: CDR100       Rev: 1.11
      Type:   WORM                        ANSI SCSI revision: 02
    Detected scsi CD-ROM sr1 at scsi0, channel 0, id 3, lun 0

  例示したマシンでは、4つのSCSIデバイスが接続されているので、(残りに
ついては省略しています)SCSI IDは0から3となっています。CD Writerが4番
目の物理的なデバイスとなっているので、"/dev/sgd"に割り当てられます。
(aから数えて4番目のgeneric SCSIデバイスになるので)

  この時、

    cdwrite  --eject  --device /dev/sgd

  とコマンドを実行することで、トレイが開けば、うまくセットアップできて
いることがわかります。


少し複雑な例:

    scsi0 : AdvanSys SCSI 1.5: ISA (240 CDB)
    scsi1 : Adaptec 1542
    scsi : 2 hosts.

      Vendor: HP      Model: C4324/C4325  Rev: 1.20
      Type:   CD-ROM                      ANSI SCSI revision: 02
    Detected scsi CD-ROM sr0 at scsi0, channel 0, id 2, lun 0

      Vendor: IBM     Model: DPES-31080   Rev: S31Q
      Type:   Direct-Access               ANSI SCSI revision: 02
    Detected scsi disk sda at scsi1, channel 0, id 0, lun 0

    scsi : detected 1 SCSI cdrom 1 SCSI disk total.
    SCSI device sda: hdwr sector= 512 bytes.

  この例では、2つのSCSIコントローラに、各々1つのSCSIデバイスが接続され
ています。なんて贅沢!!(各々7つまでデバイスを接続できるのに)これは、
私のマシンの設定ではないし、お金持ちだなぁなんて言わないでね(汗)とも
かく、話を進めるのに都合のいい設定例なのです。

  上記の例では、CD Writerは、SCSI IDが2になっていますが、Linuxが物理的
に最初に認識しているので、1番目のgeneric SCSIデバイス"/dev/sga"に割り
当てられています。

  このことから、SCSI-IDと割り振られるgeneric SCSIデバイスの間に何の関
係も無いことが判ってもらえると思います。

  二つの疑問が残っていますね。
1) 間違ったデバイスを指定したら、どうなるの?
  "--MANUFACTURER"オプションを指定せず、デバイスに一切データを書き込も
うとしなければ、普通は、警告が表示されるだけで済みます。

        bash> cdwrite  --eject  --device /dev/sgb

        Unknown CD-Writer; if this model is compatible with any
        supported type, please use the appropriate command line
        flag.

        Manufacturer:  IBM
        Model:         DPES-31080
        Revision:      S31Q

  上記の場合では、"/dev/sgb"デバイスは、IBM製のSCSIハードディスクです。

2) もし、間違ったデバイスにデータを書き込むと、書き込もうとしたデバイス
の内容が上書きされてしまって、たぶん、システムが復旧できないくらいの被
害を受けてしまうでしょう。本当ですよ。実際に、間違えて「やってしまった」
んですから。

  十分に注意して下さい。


3.2. ソフトウェアの収集

  通常、この過程は、皆が思う以上に時間がかかります。入れ損なったファイ
ルは、一旦CDを焼いた後には追加できないと思って下さい。

  また、CDの空き容量のうちの一定の領域は、iso9660ファイルシステム情報
を保存するのに使われてしまうことを、念頭に入れておいてください。(普通
は数MBです)


3.3. CDにデータを記録する

  "iso9660"とは、CDにデータを記録する方式の一つで、まさに、CDのファイ
ルシステムそのものを指しています。

  もちろん、このフォーマットで記録したファイルは、他のあらゆるファイル
システムと同様にLinuxカーネルによって同じように見えるようになっていま
す。ですから、いったん、CDをマウントしてしまうと、ルートですら書き込む
ことはできない(当たり前ですね)点以外は、他のファイルと区別することは
できません。(見かけ上ファイルを同じように扱えるようにする機構を、「仮
想ファイルシステム」略して、"VFS"と呼びます。

  iso9660ファイルシステムは、Linuxの標準フォーマットであるextended-2ファ
イルシステムに比べるとCDが一度しか書き込めない点は別にしても、制限が大
きくなっています。

  iso9660ファイルシステムの制限は、下記の通りです。

        - サブディレクトリは8階層まで(CDの最初のディレクトリも含めて)

        - ファイルネームは最大32文字まで

        - 650MBの容量

  ファイルネームを、8.3のDOS形式に制限しておく限り、どのようなOSからで
も読むことが可能です。他のいかなる情報も(リンク情報、uid/gid情報、
permission情報など)DOSからは利用できません。


3.4. iso9660ファイルシステムの作成

  どのような記憶メディアも、(フロッピーディスク、ハードディスク、CDな
ど)使用するためには、ファイルシステムを準備しておかなくてはなりません。
(DOSで言うところの、フォーマット済みでないといけません。)ファイルシ
ステムのおかげで、メディアにファイルを保存できるようになっているのです。

  では、一度しか書き込みできないCD-Rメディアをフォーマットしようとして
空のファイルシステムを作るとどうなるでしょう。永久に空のままになってし
まいます。(笑)

  ですから、CDに焼きたいファイルから、ファイルシステムを作成するツール
が必要です。このツールは、"mkisofs"と呼ばれています。
使い方の例を載せておきます。

         mkisofs  -r -K  -o cd_image   private_collection/
                         `---------'   `-----------------'
                              |                |
                  作成するファイル名     読み込み元のディレクトリ

  '-r'オプションは、CD上の全てのファイルを誰もが読めるように、属性を設
定するためのものです。このオプションは、通常、やりたいと思うことでもあ
るので、何をしているのが理解するまでは、"-r"オプションはつけておくこと
をお勧めします。(ヒント: '-r'オプションをつけずに実行すると、
"private_collection"のファイルの属性が、そのまま保存されます。)
  '-K'オプションは、単にLinux版のバグ対策で、CDに保存する最後のファイ
ルが壊れないようにするためのものです。(本当に壊れるわけではありません
がLinuxでは読めません)このオプションは、"cdwrite"コマンドの"-P"オプショ
ンと同じ働きをします。

  詳しくは、"mkisofs"コマンドのman-pageを参照して下さい。

  "mkisofs"コマンドは、できるだけ高い互換性を確保するためにすべてのファ
イル名をDOSの8.3形式に割り付けようとします。名前がだぶった場合は(元の
ファイル名が異なっているが8.3形式では同じになる場合は)ファイル名に数
字を含めるようになっており、そのファイル名情報は、標準エラー出力(通常
は画面)に出力されます。

あわてるな!!

  Linuxでは、8.3形式のファイル名を見ることはありません。元のファイル情
報(パーミッション、ファイルネームなど)を含むRock Ridge拡張形式でCDを
作成するからです。

  ここで、どうして、"mkisofs"コマンドで直接CD-Writerにデータを送らない
のかと疑問を持つかもしれません。それには、二つの理由があります。

        (1) "mkisofs"コマンドが、CD Writerの操作法を知らない。
            (2.3を参照のこと)
        (2) 信頼性が無い(4を参照のこと)

  CD Writerの書き込みタイミングは、極めて厳しくて、とても"mkisofs"コマ
ンドで直接データを送り込めるとは思えません。(Linuxは、リアルタイムOS
では無く、タスクが酷く遅くなることもありうることを念頭に入れておいて下
さい。)ですから、"mkisofs"の出力を一旦ハードディスクに保存したほうが
いいのです。出来上がったファイルは、CDに書き込むイメージと同じ構造をし
ており、次のステップで"cdwrite"コマンドによって、実際にCDに書き込まれ
ます。

  イメージファイルは、集めたソフトウェアと同じだけのディスクスペースを
食い潰します。これが欠点です。
  イメージを、ファイルにでなく、別パーティションとして書き込めないかと
思う人もいるかもしれませんが、それには反対したいと思います。もしタイプ
ミスなどで間違ったパーティションに書き込んだりしたら、完全にシステムを
破壊してしまうからです。また、CDのイメージファイルは、所詮テンポラリファ
イルなので、使い終ったら消去できますが、そういうことができなくなるので、
ディスクスペースを無駄に消費するだけになるからです。


3.5. CDイメージのテスト

  Linuxは。ファイルを、ファイルシステムであるかのごとく、マウント可能
になっています。このことは、CDイメージファイルが問題無いかどうかをチェッ
クするのに、極めて役立つ機能です。

  出来上がったCDイメージファイルを、"/cdrom"ディレクトリにマウントする
には、次のように入力します。

        mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom

  こうすることで、/cdromディレクトリ以下のファイルをチェックすることが
できます。---ファイルは、まるきり本物のCD上にあるように見えます。
  CDイメージファイルを、アンマウントするには、"umount /cdrom"としてく
ださい。

メモ: 古い"mount"コマンドでは、loopbackデバイスを扱えない場合がありま
      す。もし、"mount"コマンドが、そういうものだった場合、Linuxシステ
      ムをバージョンアップする良い機会だと思います。

      最新のmountユーティリティを入手する方法をこの文書に含めた方がい
      いという方がしばしばいますが、いつも断っています。
      もし、あなたの使っているLinux-Distributionが古い"mount"コマンド
      のままなら、バグとして報告して下さい。
      もし、あなたの使っているLinux-Distributionが容易にアップグレード
      できない代物ならバグとして報告して下さい。

      もし、出来の悪いLinux-Distributionのバグ対策に必要な情報を全部含
      めようとすると、このmini-HOWTO文書は、とてつもなく長く読みにくい
      ものになるでしょうから。


3.6. ブランクCD-Rメディアを選択する上での注意事項

  ドイツのコンピュータ雑誌"c't"の1996年11月号に、ブランクメディアにつ
いての記事が掲載されています。

  - 有名メーカー品でないものは、普通は品質は最高ではないので、使わない
    方が良い

  - もしメディアに欠陥があると、その分だけ損をする。そういうメディアは、
    最初の500MBが使えたら、運が良いというものです

  - 書き込みを行なう前に、CD-Rのキラキラ光っている側を触らないようにす
    ること


3.7. CDにイメージを書き込む

  あとは、やるべきことは、ほとんど残っていません。最後に実行するコマン
ドを説明する前に注意を促しておくことにします。CD Writerは、恒常的なデー
タストリームを要求します。(バッファが無いか少ないので)ですから、CDイ
メージファイルをCD-Rに書き込んでいるプロセスを遮らないで下さい。もし遮
ると、壊れたCDが出来上がることになります。

  このプロセスを遮ることの無いように、ユーザーにイーサネットケーブルを
抜いてしまうことを通知して下さい。"Bastard operator from hell"を読んで、
なぜ、そうしないといけないかを勉強して下さい。

  精神を集中して、ブラックローブを身につけ、CD-WriterのSCSI IDをSCSI
revisionと掛け合わせ、たくさんのロウソクを灯した後、おもむろに、
ASR-FAQの二つの呪文を唱えたあと、最後に、次の呪文を投げつけましょう。

    cdwrite  --device /dev/sgd  cd_image

  もちろん、"/dev/sgd"を、あなたのCD-Writerを指すgeneric SCSIデバイス
に読み換えるのを忘れないように。

  どのCD Writerも、レーザーの位置がぶれた時に、元の位置に戻して動作を
継続させるなんてことはできないこと、それゆえにCD作成中に、振動や衝撃を
与えると、メディアを完全に破壊してしまうことを頭に入れておいてください。


3.8. うまくいかなかったら、、、

  壊れたCDはコースターとして、末長く使えますから。。。



4. 良くある質問と、その回答


4.1. 焼き付けは、どの程度厳しいのでしょうか?

  答え: CD Writerによります。最近の製品では、1MB程度のデータバッファを
持っており、1-2秒データが途切れても大丈夫なものもあります。詳しいこと
はマニュアルを読むか、メーカーに問い合わせて下さい。
  データバッファのサイズとは関係なく、長時間の間、平均300kb/secもしく
は600kb/secの転送速度が持続する必要があります。

  "locate"データベースの更新などの激しいディスクアクセスを行なうプロセ
スが存在すると、最大転送速度が低下し、確実にCDが壊れてしまいます。そう
いうプロセスが"cron"や"at"や"anacron"などで実行されてしまうことの無い
ようにチェックしておいた方がよろしいかと思います。


4.2. ファイルの断片化があると悪い影響を及ぼしますか?

  ファイルの断片化は、通常は気にする必要はない程度です。

  ブート時に表示されるメッセージを見ても、はっきり判らないとは思います
が、断片化の割合は、ファイルシステムをチェックしている間に報告されます。
この割合は次のようなコマンドでチェックできます。

        bash> e2fsck -n  /dev/sda5        # '-n'オプションが重要!
        [stuff deleted - ignore any errors]
        /dev/sda5: 73/12288 files (12.3% non-contiguous)

  この例では、ファイルの断片化が、かなり多くなっているように見えますが、
このファイルシステム("/tmp"として使っているものです)上に、たったの73
ファイルしかありませんので、断片化率は、別に気にするほどでもないもので
す。

  もし、全てのファイルを連続した状態にしたければ、sunsiteや、そのミラー
サイトにある"defrag"ユーティリティを使って下さい。ふつうは、まったく使
う必要はありません。


4.3. UMSDOSファイルシステム上で、CDイメージを保存できますか?

  できます。CDを作成するのに使えると信頼できず、速度も十分で無い唯一の
ファイルシステムは、NFS ("network filesystem")です。

  私自身、CD作成のためだけに、LinuxとDOSを486DX2-66マシン上でUMSDOSを
使ってディスクを共有させています。


4.4. iso9660の制限の様子を理解する方法はありませんか?

  あります。どんなファイルシステムでもCDに作ることは出来ます。しかし、
そういったCDは、Linux以外のOSでは扱えません。

  以下に、その方法を述べます。

(a) 650MBの中身のないファイルを作成する

        dd if=/dev/zero of="empty_file" bs=1M count=650

(b) このファイル上にext2ファイルシステムを作成する

        bash> /sbin/mke2fs  empty_file 
        empty_file is not a block special device.
        Proceed anyway? (y,n) y

(c) この空ファイルをloopbackデバイスを通じてマウントする

        mount -t ext2 -o loop=/dev/loop1 empty_file /mnt

(d) 適当にファイルを/mntにコピーし終えたらアンマウントする

(e) "cdwrite"コマンドを、空ファイルをiso9660イメージとして実行する。
"cdwrite"コマンドを"-P"オプションを付けて実行すること。

  今作ったようなCDを/etc/fstabに登録するには、下記のようにして、メディ
アの照合をしないようにして下さい。

       /dev/cdrom  /cdrom  ext2  defaults,ro  0 0

  最初の0は「ダンプに含めない」を意味し、二番目は(こちらが重要)「起
動時にエラーチェックをしない」という意味です。


4.4. 音楽CDの読み書きをするには

  "cdda2wav"と"sox"パッケージを、sunsiteもしくは、そのミラーから入手し
てください。

ftp://sunsite.unc.edu/pub/Linux/apps/sound/cds/cdda2wav0.71.src.tar.gz
ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/sox-11gamma-cb2.tar.gz

  "cdda2wav"コマンドは、音楽CDの指定箇所(もしくは全トラック)を.wavファ
イルにコンバートするものです。
  "sox"コマンドは、"cdwrite"コマンドでCD-Rに書き込めるようにwavファイ
ルを音楽CDのcddaフォーマットにコンバートするものです。


5. 謝辞

    Andreas Erdmann <erdmann@zpr.uni-koeln.de>
        YAMAHA製CD-Writerでの例を提供してくれました。

    Art Stone <stone@math.ubc.ca>
        CDにiso9660でないファイルシステムを作る方法を考えてくれました。

    Bernhard Gubanka <beg@ipp-garching.mpg.de>
        loopbackデバイスを利用するにはmountコマンドが新しくないと駄目
        だと指摘してくれました。

    Bruce Perens <bruce@pixar.com>
        cdwrite-mailinglistについての情報をくれました。

    Edwin H. Kribbs
        mkisofsコマンドにパッチを当てないと"-K"オプションが動作しない
        ことを報告してくれました。

    Gerald C Snyder <gcsnyd@loop.com>
        ext2形式のCDの作成をテストしてくれました。(4.4参照)

    Ingo Fischenisch <ingo@mi.uni-koeln.de>
        2つのSCSIデバイスを2つのSCSIコントローラに繋いだ例を提供してく
        れました。

    Stephan Noy <stnoy@mi.uni-koeln.de>
        音楽CDの作成に関する情報と方法を教えてくれました。

    Stephen Harris <sweh@mpn.com>
        音楽CDの作成に関するヒントを寄稿してくれました。

    The Sheepy One <kero@escape.com>
        失敗したCD-Rメディアを、コースターとして使えばいいと言ってくれ
        ました。

    Volker Kuhlmann <kuhlmav@elec.canterbury.ac.nz>
        "cdwrite"パッケージには"mkisofs"が含まれていないことを指摘して
        くれました。

Next Previous Contents