CD-R や DVD-R を焼く方法を紹介します。
参考サイト:
ちなみに、うちで使っている CARAVELL CD-R CDR-N820S 1.24 は、 FreeBSD 3.4-RELEASE + cdrecord-1.8a33 での動作を確認しています。
X をつかった GUI なソフト、 xcdroast のページも参照して見て下さい。 ただし、稼働は FreeBSD 4.2-RELEASE でのみ確認しています。
FreeBSD 4.7-RELEASE にして、ports を [2003/04/25] 現在で最新のものにしました。 /usr/ports/sysutils/cdrtools というものがあって、 これをインストールすると
コマンド /usr/local/bin/mkisofs を使います。準備として、CD-ROM にしたいディレクトリツリーを /somewhere/tree/dir に作りましょう。 たとえば、
と言った具合です。この後に、
% ls /somewhere/tree/dir
dir1/ dir2/ file1 file2
とすれば、ISO イメージファイル /somewhere/imagefile.iso が 出来上がります。中身は、^ と @ のオンパレードです。
% mkisofs -a -l -L -r -R -o /somewhere/imagefile.iso /somewhere/tree/dir
オプションの意味は次の通りです。
詳細は、man mkisofs して下さい。
- -a: すべてのファイルをイメージファイルに取り込む。 通常は '~' や '#' が先頭にくるファイルは取り込まない。
- -l: ロングファイルネーム対応。デフォルトは 8+3 の名前しか 許さないが、このオプションをつけると最大32文字まで拡張できる。 ただし、(当然ながら)DOS などの 8+3 形式では問題がある場合がある。
- -L: ファイル名の先頭に . が来るのを許す。 デフォルトでは、DOS との互換性のため、 先頭の . は _ に変換される。 (当然ながら)指定すると DOS 形式では問題がある場合がある。
- -R: ロックリッジ形式。デフォルトでは大文字小文字の区別、 パーミッション情報、ファイルの属性、を記録できないが、 このオプションで有効になる。
- -r: -R オプションとほぼ同じだが、一部の情報を CD-ROM に ふさわしく書き直す。具体的には、パーミッションを全ユーザーが 読み込み可能、書き込み不可にし、 ユーザー・グループ情報の初期化をする。
- -o: 出力ファイルの指定。このオプションの次に来る名前が イメージファイルの名前になる。 指定しない場合は、標準出力に出力される。
mkisofs とは別のコマンドとして、 /usr/local/bin/mkhybrid があります。 mkisofs は UNIX 対応の CD-ROM イメージ(ISO9660)を作りますが、 mkhybrid は Windows や Mac 対応の CD-ROM イメージ(Joliet/HFS) も作れます。ソースディレクトリを作るところまでは mkisofs と同じです。 主なオプションは次の通り。
% mkhybrid -a -f -l -L -r -R -o /somewhere/imagefile.iso /somewhere/tree/dir
詳細は、man mkhybrid して下さい。
- -a: すべてのファイルをイメージファイルに取り込む。 通常は '~' や '#' が先頭にくるファイルは取り込まない。
- -f: シンボリックリンクを認識する。 このオプションがないと、シンボリックリンクは無視される。
- -J: ISO9660 ファイルネームに加えて、Joliet ディレクトリレコード を生成する。作ったディスクを Windows NT や 95 を使用する時に便利。
- -l: ロングファイルネーム対応。デフォルトは 8+3 の名前しか 許さないが、このオプションをつけると最大32文字まで拡張できる。 ただし、(当然ながら)DOS などの 8+3 形式では問題がある場合がある。
- -L: ファイル名の先頭に . が来るのを許す。 デフォルトでは、DOS との互換性のため、 先頭の . は _ に変換される。 (当然ながら)指定すると DOS 形式では問題がある場合がある。
- -o: 出力ファイルの指定。このオプションの次に来る名前が イメージファイルの名前になる。 指定しない場合は、標準出力に出力される。
- -R: ロックリッジ形式。デフォルトでは大文字小文字の区別、 パーミッション情報、ファイルの属性、を記録できないが、 このオプションで有効になる。
- -r: -R オプションとほぼ同じだが、一部の情報を CD-ROM に ふさわしく書き直す。具体的には、パーミッションを全ユーザーが 読み込み可能、書き込み不可にし、 ユーザー・グループ情報の初期化をする。
- -hfs: ISO9660/HFS の hybrid CD を作る。
- -apple: Apple 拡張の ISO9660 CD を作る。
コマンド /usr/sbin/vnconfig を使います。できたイメージファイルをマウントして中身を確認しましょう。 CD-ROM ドライブだと、/dev/acd0c として扱うのと同様、 イメージファイルも通常ファイルとしてではなく、 デバイスファイルとして扱う必要があります。 vnconfig は、通常ファイルをデバイスファイルとして 扱うためのコマンドです。
# vnconfig /dev/vn0c /somewhere/imagefile.iso
# mount -t cd9660 /dev/vn0c /mnt
トラブルシューティング
/dev/vn0c が configure されない、などのメッセージが出たら、 カーネルが vnode driver を組み込んでないので、 これを組み込みます。これで、/mnt に イメージファイルが CD-ROM としてマウントされました。NFS 経由では configure に失敗することがあります。 imagefile.iso が NFS でマウントしている /nfs/mount に あるとすると、
これは、NFS 経由では root の権限を制限している場合に 起こるようです。この場合は、ローカルディスクに持って来て configure してください。
# vnconfig /dev/vn0c /nfs/mount/imagefile.iso
vnconfig: VNIOCATTACH: Permission denied
% ls /mnt
dir1/ dir2/ file1 file2 trans.tbl
アンマウントして、/dev/vn0c を unconfigure するには、 次の通りです。
# umount /mnt
# vnconfig -u /dev/vn0c
コマンド /usr/local/bin/cdrecord を使います。まずは、ダミーでテストしてみます。
オプション -v は作業の進行状況を見るためのものです。
# cdrecord [-v などのオプション] -dummy dev=a,b,c speed=s /somewhere/imagefile.iso (実際は一行です)
うまく行ったら、 -dummy を外して実際に焼きます。
# cdrecord [-v などのオプション] dev=a,b,c speed=s /somewhere/imagefile.iso
ここで、a,b,c,s の意味はそれぞれ次の通りです。
- a: CD-R ドライブの SCSI-BUS No.
- b: CD-R ドライブの SCSI-ID
- c: CD-R ドライブの LUN
- s: 焼くスピード(0 or 2 or 4 が一般的。不都合があれば、数字を下げ て行く)
a,b,c の値は /sbin/dmesg で調べます。 うちの場合は、
となってますが、a=0 (bux), b=6 (target), c=0 (lun) となります。 また、デバイスは cd0 です。
cd0 at ahc0 bux 0 target 6 lun 0
cd0:Removable CD-ROM SCSI-2 device
cd0: 10.000MB/s transfers <10.000MHz, offste 8)a,b,c の値を調べる別の方法としては cdrecord を -scanbus オプション付きで実行します。
Jorg 氏の o は「ウムラウト o」が正しいのですが、 表示が難しいので o で表記させて頂いています。
# cdrecord -scanbus Cdrecord release 1.8a33 Copyright (C) 1995-1999 Jorg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'IBM-PSG ' 'DNES-309170W !#' 'SAB0' Disk 0,1,0 1) * 0,2,0 2) * 0,3,0 3) * 0,4,0 4) 'FUJITSU ' 'M2513E ' '0050' Removable Optical Storage 0,5,0 5) * 0,6,0 6) 'CARAVELL' 'CD-R CDR-N820S ' '1.24' Removable CD-ROM 0,7,0 7) *
読み込み
コマンド /usr/local/bin/cdda2wav を使います。で CD ドライブに入っている CD を WAV ファイルに変換します。 -B オプションですべてのトラックを変換します。 トラック毎に取り出したい場合は、-t (トラック番号A)+(トラック番号B)です。 これで、トラック番号A(2とか3とか)からトラック番号Bまでが取り出せます。 -D オプションはデバイスの設定で、下にある「CD-ROM を焼く」で cdrecord を使うためのオプション dev=a,b,c の a,b,c と同じ番号です。
# cdda2wav -Owav -B -D a,b,c
読み込み(その2)
音楽 CD から音を吸い出すコマンドとして、cdparanoia もあります。 Ports では /usr/ports/audio/cdparanoia でインストールします。ですべてのトラックを読み込みます。デバイスは、一番最初に見つかった CD-ROM ドライブがデフォルトになりますが、強制的に変更したい場合は、 -d オプションをつけます。例えば、デフォルトが /dev/cd0c で これを /dev/cd1c に変更したい場合は、
# cdparanoia -B
です。詳しくは日本語マニュアルページをどうぞ。
# cdparanoia -d /dev/cd1c -B
CD-ROM を焼く (音楽版)
このままだと、曲と曲の間に約2秒ほどの無音部分ができてしまう。 これがいやな場合は -dao をつける。
# cdrecord [-v などのオプション] dev=a,b,c speed=s -audio *.wav