CD-R DVD-R を焼く

CD-R や DVD-R を焼く方法を紹介します。

参考サイト:


用意するもの Ports では共に、/usr/ports/sysutils に入っています。 まずはこれらをインストールしましょう。

ちなみに、うちで使っている 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 というものがあって、 これをインストールすると

がインストールされます。

CD-ROM イメージファイルを作る I

コマンド /usr/local/bin/mkisofs を使います。

準備として、CD-ROM にしたいディレクトリツリーを /somewhere/tree/dir に作りましょう。 たとえば、
% ls /somewhere/tree/dir
dir1/ dir2/ file1 file2
と言った具合です。この後に、
% mkisofs -a -l -L -r -R -o /somewhere/imagefile.iso /somewhere/tree/dir
とすれば、ISO イメージファイル /somewhere/imagefile.iso が 出来上がります。中身は、^ と @ のオンパレードです。

オプションの意味は次の通りです。

詳細は、man mkisofs して下さい。

CD-ROM イメージファイルを作る II

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 して下さい。

CD-ROM イメージの確認

コマンド /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 を組み込んでないので、 これを組み込みます。

NFS 経由では configure に失敗することがあります。 imagefile.iso が NFS でマウントしている /nfs/mount に あるとすると、
# vnconfig /dev/vn0c /nfs/mount/imagefile.iso
vnconfig: VNIOCATTACH: Permission denied
これは、NFS 経由では root の権限を制限している場合に 起こるようです。この場合は、ローカルディスクに持って来て configure してください。

これで、/mnt に イメージファイルが CD-ROM としてマウントされました。
% ls /mnt
dir1/ dir2/ file1 file2 trans.tbl

アンマウントして、/dev/vn0c を unconfigure するには、 次の通りです。
# umount /mnt
# vnconfig -u /dev/vn0c

CD-ROM を焼く (データ版)

コマンド /usr/local/bin/cdrecord を使います。

まずは、ダミーでテストしてみます。
# cdrecord [-v などのオプション] -dummy dev=a,b,c speed=s /somewhere/imagefile.iso (実際は一行です)
オプション -v は作業の進行状況を見るためのものです。

うまく行ったら、 -dummy を外して実際に焼きます。
# cdrecord [-v などのオプション] dev=a,b,c speed=s /somewhere/imagefile.iso

ここで、a,b,c,s の意味はそれぞれ次の通りです。

a,b,c の値は /sbin/dmesg で調べます。 うちの場合は、
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=0 (bux), b=6 (target), c=0 (lun) となります。 また、デバイスは cd0 です。

a,b,c の値を調べる別の方法としては cdrecord を -scanbus オプション付きで実行します。
  # 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) * 
  
Jorg 氏の o は「ウムラウト o」が正しいのですが、 表示が難しいので o で表記させて頂いています。

音楽データを読み込み、焼く

読み込み

コマンド /usr/local/bin/cdda2wav を使います。
# cdda2wav -Owav -B -D a,b,c
で CD ドライブに入っている CD を WAV ファイルに変換します。 -B オプションですべてのトラックを変換します。 トラック毎に取り出したい場合は、-t (トラック番号A)+(トラック番号B)です。 これで、トラック番号A(2とか3とか)からトラック番号Bまでが取り出せます。 -D オプションはデバイスの設定で、下にある「CD-ROM を焼く」で cdrecord を使うためのオプション dev=a,b,c の a,b,c と同じ番号です。

読み込み(その2)

音楽 CD から音を吸い出すコマンドとして、cdparanoia もあります。 Ports では /usr/ports/audio/cdparanoia でインストールします。
# cdparanoia -B
ですべてのトラックを読み込みます。デバイスは、一番最初に見つかった CD-ROM ドライブがデフォルトになりますが、強制的に変更したい場合は、 -d オプションをつけます。例えば、デフォルトが /dev/cd0c で これを /dev/cd1c に変更したい場合は、
# cdparanoia -d /dev/cd1c -B
です。詳しくは日本語マニュアルページをどうぞ。

CD-ROM を焼く (音楽版)

# cdrecord [-v などのオプション] dev=a,b,c speed=s -audio *.wav
このままだと、曲と曲の間に約2秒ほどの無音部分ができてしまう。 これがいやな場合は -dao をつける。

参考ページ


FreeBSD の部屋


Jul. 25, 2000