FrontPage | changes | index | create | search | preferences |

DVD-Rを焼く

Last-Modified: Mon Dec 05 20:31 2005; by KM
edit | copy | diff | rlog | raw
  1. 準備
    1. DMA転送を有効に
    2. カーネルの調整
    3. DVD+RW Toolsのインストール
    4. その他
  2. DVD-Rに焼く
    1. ISOイメージの作成
    2. ISOイメージを焼く
    3. ISOイメージを作成せずに焼く
    4. 確認
  3. DVD-RW
    1. DVD-RWのフォーマット
  4. DVD-RAM
    1. ディスクラベルを書き込む
    2. newfsを実行
    3. mountする
  5. 関連情報

FreeBSD 5.3上で、LG電子のGSA-4120Bを用いて、DVD-R等を焼いた時のメモです。

準備

DMA転送を有効に

 現バージョンのFreeBSDでは、IDEコントローラがDMA転送をサポートしていても、HDD以外のATAPIデバイスに関しては自動的にDMA転送を有効化せず、PIOモードとして動作する。DVDのような大容量メディアを扱う場合、CPUがI/Oポートを直接アクセスするPIOモードでは、非常に負荷がかかるので、DMA転送を有効にした方が良い。

 DMA転送を有効にするためには、/boot/loader.conf に

 hw.ata.atapi_dma="1"

の行を追加する必要がある。これにより、変更前、

 % dmesg | grep DVD
 acd0: DVDR <HL-DT-ST DVDRAM GSA-4120B> at ata1-slave PIO4

のように表示されていたのが、上記の設定を行った後、再起動すると、

 % dmesg | grep DVD
 acd0: DVDR <HL-DT-ST DVDRAM GSA-4120B> at ata1-slave UDMA33

のように表示されるようになる。これで、DMA転送は有効化されている。

カーネルの調整

 DVD-Rを焼くためにportsからDVD+RW Toolsを導入する場合、ドライブは、SCSIデバイスである必要がある。その場合、現在使用しているATAデバイスを仮想的にSCSIデバイスとしてアクセス出来るようにするため、カーネルのコンフィギュレーションファイルに

 device atapicam
 
 device scbus
 device pass

 device cd

を追加し、カーネルを構築し直す。再起動後、

 % dmesg | grep DVD
 acd0: DVDR <HL-DT-ST DVDRAM GSA-4120B> at ata1-slave UDMA33
 cd0: <HL-DT-ST DVDRAM GSA-4120B A102> Removable CD-ROM SCSI-0 device

のように、SCSIデバイスとしても認識していればOK。ATAデバイスでも、DVD+RW Toolsを利用できる。

DVD+RW Toolsのインストール

 portsから、sysutils/dvd+rw-tools*1インストールする。DVD+RW Toolsは、sysutils/cdrtoolsに含まれるmkisofs(8)をISO9660イメージを作成する際、必要とするので、依存関係から、sysutils/cdrtoolsも一緒にインストールされる*2

*1名前は「DVD+RW Tools」となっているが、DVD-R/-RWにも対応している。

*2標準でインストールされるsysutils/cdrtoolsでは、日本語ファイル名等を扱えないので、もし、日本語ファイル名等を扱いたければ、事前に、sysutils/cdrtools-cjkを予めインストールしておくこと。

その他

 SCSI経由で、DVDに焼く場合等、いちいちrootになるのは面倒なので*3、/etc/devfs.confを編集し、

 perm	xpt0	0660
 perm	pass0	0660

を追加したり*4、アプリケーションを使う場合を想定して、

 link   cd0     cdrom
 link   cd0     dvd

などを追加しておくと便利かも?

*3DVD-Rを焼くために使用するコマンドgrowisofs(1m)は、sudo(8)で実行できないことに注意。

*4自分がoperatorグループに属している場合の例。

DVD-Rに焼く

ISOイメージの作成

 sysutils/cdrecordに含まれているmkisofsを使用して、DVDに書き込むISOイメージを作成する。

 % mkisofs -iso-level 2 -v -r -J -V VOLUME_NAME \
   -o DVD_IMAGE.iso TARGET_DIR/

 もしくは(sysutils/cdrecord-cjkをインストールして日本語ファイル名を扱う場合)、

 % mkisofs -iso-level 2 -v -r -J -input-charset euc-jp \
   -V VOLUME_NAME -o DVD_IMAGE.iso TARGET_DIR/

として、入力元のcharsetを指定する*5

*5この場合、ローカルのドライブにあるファイル名の文字コードはeuc-jpと想定(その他のコードセットについては、mkisofs 漢字パッチのサイト参照)。

ISOイメージを焼く

 # growisofs -dvd-compat -Z /dev/cd0=DVD_IMAGE.iso

ISOイメージを作成せずに焼く

 いわゆるオンザフライ書き込みで焼く場合。内部的には、ISOイメージを作成しながら書き込む。低いスペックのマシンだと、きついかも知れない。

 # growisofs -Z /dev/cd0 -R -J /some/files

 また、同じDVDに追加書込する場合は、

 # growisofs -M /dev/cd0 -R -J /more/files

のようにする。

確認

 # mount_cd9660 -C eucJP /dev/cd0 /cdrom

などとマウントすることで、内容を確認できます*6

*6言語のロケールをja_JP.eucJPとしている場合の例。なお、ja_JP.UTF-8としている場合、現在のkiconv(3)は、一文字が2バイトを超えるものは扱えないので、その場合、ISO 9660 filesystemを介しての日本語ファイル名は正常には表示できない。

DVD-RW

DVD-RWのフォーマット

 DVD-RWでは、最初にまず、メディアをフォーマットしなければならない。 しかし、なぜか、DVD+RW Toolsに含まれるdvd+rw-formatというコマンドで、

 % dvd+rw-format -blank=full /dev/cd0

とやったら、

 * blanking |:-[ READ TRACK INFORMATION failed with SK=5h/ASC=24h/ACQ=00h]: Input/output error

とエラーが出て、メディアを消去出来ない。

 FreeBSDに標準で含まれているコマンドのburncd(8)*7でも、DVD-Rのメディアをフォーマット出来るようなので、

 % burncd -f /dev/acd0 format dvd-rw

とやったら、出来た。

*7FreeBSDに標準で付属しているburncdも、DVD+RWの書き込みに対応していて、DVD-RWやDVD-RWのフォーマットが可能な模様。

DVD-RAM

 DVD-RAMの場合は、普通のHDD等と同じ様に扱える。

ディスクラベルを書き込む

 まず、ドライブに、DVD-RAMメディアを挿入し、ディスクラベルを書き込む*8

 scorpio# bsdlabel -w cd0 auto

 書き込んだディスクラベルを確認すると、

 scorpio# bsdlabel cd0
 # /dev/cd0:
 8 partitions:
 #        size   offset    fstype   [fsize bsize bps/cpg]
   a:  2236700        4    unused        0     0       
   c:  2236704        0    unused        0     0         # "raw" part, don't edit

の様になっている*9

*8例として、SCSIデバイスcd0として説明しているが、別にacd0と置き換えてもらっても構わない。なお、従来、ディスクラベルの読み書きに使用されていたコマンドdisklabel(8)は、FreeBSD 5.1以降、bsdlabel(8)に置き換えられた。

*9ここでは、4.7GBサイズのDVD-RAMメディアを使用。

newfsを実行

 次に、このbsdlabelで作成したパーティションaにnewfs(8)を実行する。

 scorpio# newfs /dev/cd0a
 /dev/cd0a: 4368.6MB (8946800 sectors) block size 16384, fragment size 2048
         using 24 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
 super-block backups (for fsck -b #) at:
  160, 376512, 752864, 1129216, 1505568, *省略*

 もう一度、ディスクラベルを確認すると、

 scorpio# bsdlabel cd0
 # /dev/cd0:
 8 partitions:
 #        size   offset    fstype   [fsize bsize bps/cpg]
   a:  2236700        4    4.2BSD     2048 16384 28552 
   c:  2236704        0    unused        0     0         # "raw" part, don't edit

の様に、UFSのパーティションが作成されたことが判る*10

*10もちろん、パーティションを指定せずに直接「newfs /dev/cd0」とやってもらっても構わないが、その場合、bsdlabelでパーティション情報の取得はできなくなる。メリットは、オフセット分の容量を節約できるぐらい。

mountする

 これで、普通に、このDVD-RAMに対し、

 scorpio# mount /dev/cd0a /mnt

とすれば、HDD等と同じように扱える*11

*11間違えて、ISO 9660ファイルシステムとしてマウントしないように注意。

関連情報

  • FreeBSD - このWikiフォーラム内におけるFreeBSDに関係するものの目次です。 ...