debian lennyでDVD-Rを焼く

■久しぶりにDVDを焼こうとしたが、mkisofsコマンドが無い。
 「iso-9660 image」で検索すると、作成するかコンバートするかのパッケージがある。

$ env LANG=C apt-cache search cd | grep -i iso | grep 9660 | grep -i image
genisoimage - Creates ISO-9660 CD-ROM filesystem images
iat - Converts many CD-ROM image formats to iso9660

■作成するので、genisoimageを。

$ whereis -b genisoimage
genisoimage: /usr/bin/genisoimage

■沢山オプションがあります。。。

$ man genisoimage | sed s/" "/"\n"/g | sed s/"\.\|\,\|)"//g | grep "^\-[A-z]\$" | column
-A      -M      -D      -m      -P      -T      -R      -a      -R      -M
-B      -C      -D      -m      -p      -U      -r      -m      -J      -C
-B      -M      -J      -N      -R      -d      -o      -o      -o      -V
-G      -c      -J      -M      -r      -l      -o      -b      -o      -T
-B      -M      -l      -M      -R      -N      -V      -o      -o
-G      -C      -L      -M      -B      -V      -J      -o      -F
-b      -M      -m      -C      -o      -v      -J      -R      -o
-C      -d      -o      -N      -b      -x      -T      -o      -J
-C      -D      -m      -o      -G      -m      -t      -r      -r
-C      -f      -m      -B      -T      -z      -o      -o      -o

■少なくとも必要なのは、「Rock Ridge」と「Joliet」。
 Unix系とWIndows互換のという意味。
 Mac系は本来「HFS」だけど、今はBSD系なのでUnix系に属するはず。

 参考:Ubuntu/データCDを焼く
 http://debugitos.main.jp/index.php?Ubuntu%2F%A5%C7%A1%BC%A5%BFCD%A4%F2%BE%C6%A4%AF

■以下のように72行読んでもいいけど、以下が読み取れれば充分。
 Unix系用、Unix+Windows+Apple用、その他、多くのオプションが続きそう。

$ man genisoimage | grep -A 72 -i ^EXAMPLES | grep "\-R\|\-J"
              % genisoimage -o cd.iso -R cd_dir
              % genisoimage -o cd.iso -R -J -hfs cd_dir
              % genisoimage -o cd.iso -hfs -J -r -graft-points \

■DebianとWindowsで読めれば良いので、以下のようにする。

$ LABEL="labelname"; \
  TARGET="isodir_OR_space_separate_files"
  genisoimage -r -J -o ${LABEL}.iso -V "$LABEL" -v $TARGET

■簡単にオプションの意味を引いておく。

$ man genisoimage | grep -A 1 "^       \-[JorVv] "
       -J     Generate Joliet directory records in addition to regular ISO9660
              filenames.   This  is  primarily useful when the discs are to be
--
       -o filename
              Specify the output file for the the  ISO9660  filesystem  image.
--
       -r     This is like the -R option, but file ownership and modes are set
              to more useful values.  The uid and gid are set to zero, because
--
       -V volid
              Specifies  the  volume  ID  (volume name or label) to be written
--
       -v     Verbose execution. If given twice on  the  command  line,  extra
              debug information will be printed.

■以下のようにisoimageのハッシュ値を取っておく。

$ md5sum ${LABEL}.iso
6ad71d5ad9d8fb941dd8a7ef663af321  test.iso

■cdrecordでは無く「wodim」で焼くという事も、参考URLに出ていた。
 設定ファイルがあるとは。。。時代は変わったものだ。
 ※growisofsでも良いが、CD-Rとオプション指定が異なってしまうので、今回は「wodim」を使う。
  「man growisofs」してみて頂ければEXAMPLESの項がある。

$ apt-cache search wodim
cdrecord - Dummy transition package for wodim
cdrkit-doc - Documentation for the cdrkit package suite
gramofile - Transfer sound from gramophone records to CD
wodim - コマンドライン CD/DVD ライティングツール
cdrdao - ディスクアットワンス (DAO) モードで CD をライティング
genisoimage - ISO-9660 CD-ROM ファイルシステムイメージを作成
cdw - CD ライティング用ツール - コンソール版

$ whereis -b wodim
wodim: /usr/bin/wodim /etc/wodim.conf

■もう一度ググってみたら2006年に起こったライセンスに関する論争によりフォークしたとの事。
 ※私の記憶ではその頃はdvdrecordでCDも焼いていたような気がするが。。。

 参考:cdrkit
 http://ja.wikipedia.org/wiki/Cdrkit

■オプションの指定方式が変わっているようなので、再度ググると、
 「Turbolinux Client 2008」のマニュアルがあった。

 参考:2. wodim コマンド
 http://www.turbolinux.com/products/guide/cd/x29.html

■以下のようなチェックをしておく。このチェックはcdrecordと変わらないようだ。
 げ、ROMではないか。。。w

$ sudo wodim -scanbus
scsibus1000:
        1000,0,0 100000) 'ATAPI   ' 'DVD D  DH16DYP  ' 'WL32' Removable CD-ROM
        1000,1,0 100001) *
        1000,2,0 100002) *
        1000,3,0 100003) *
        1000,4,0 100004) *
        1000,5,0 100005) *
        1000,6,0 100006) *
        1000,7,0 100007) *

■新しい方式のデバイスを確認する

$ wodim -devices
wodim: Overview of accessible drives (1 found) :
-------------------------------------------------------------------------
 0  dev='/dev/hda'      rwrw-- : 'ATAPI' 'DVD D  DH16DYP'
-------------------------------------------------------------------------

■旧来の見方は以下の方法。

$ dmesg | grep CD
[    2.556116] hda: ATAPI DVD D DH16DYP, ATAPI CD/DVD-ROM drive
[    3.256270] Uniform CD-ROM driver Revision: 3.20

$ ls -l /dev/hda
brw-rw---- 1 root cdrom 3, 0 2012-01-05 19:31 /dev/hda

■最近メインの64bitマシンはLenovoとNECだが、
 物理的なドライバー無しで交換可能な32bit IBMからLenovoへDVD-MultiDriveを移植。
 表示の通り、イマドキどちらもIDE接続。。。互換性としては有り難い事です。

■結果が変わった。

$ sudo wodim -scanbus
[sudo] password for labunix:
scsibus1000:
        1000,0,0 100000) 'HL-DT-ST' 'DVDRAM GSA-4167B' 'DL13' Removable CD-ROM
        1000,1,0 100001) *
        1000,2,0 100002) *
        1000,3,0 100003) *
        1000,4,0 100004) *
        1000,5,0 100005) *
        1000,6,0 100006) *
        1000,7,0 100007) *

$ sudo wodim -devices
wodim: Overview of accessible drives (1 found) :
-------------------------------------------------------------------------
 0  dev='/dev/hda'      rwrw-- : 'HL-DT-ST' 'DVDRAM GSA-4167B'
-------------------------------------------------------------------------

$ dmesg | grep CD
[    2.552117] hda: HL-DT-ST DVDRAM GSA-4167B, ATAPI CD/DVD-ROM drive
[    2.908169] hda: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache
[    2.908175] Uniform CD-ROM driver Revision: 3.20

$ ls -l /dev/hda
brw-rw---- 1 root cdrom 3, 0 2012-01-06 01:07 /dev/hda

■余談だが、CD-RW等一度書き込みを行なっている場合は消去する。

$ sudo wodim dev=/dev/hda blank=fast

■更に余談だが、「cdrom」グループに属していれば、「sudo」を使う必要は無い。
 私の場合は過去の互換性(?)のような操作を行なっているに過ぎない。

$ id `whoami` | sed s/","/"\n"/g | grep cdrom
24(cdrom)

■上記コマンドで型番が分かるので、ググれば情報もあると思う。
 
 参考:LG電子、DVD-R DLに対応したスーパーマルチ「GSA-4167B」
 http://pc.watch.impress.co.jp/docs/2005/0725/lg.htm

■ひとまず137行のサンプルを見れば分かるが、説明は割愛し、とりあえず焼く。
 「eject」は再認識の為のお作法だと思って指定しておく。
 エジェクトされなければ手動で行なう。

$ man wodim | grep -A 137 ^EXAMPLES
$ sudo wodim -v -eject speed=4 dev=/dev/hda -data  test.iso
$ sudo eject /dev/hda

■ディスクから直接ハッシュ値を得る。(isoimageより若干時間がかかる)
 ※isoimageと一致すれば正しく書き込みが出来ている。
  後は実際にマウントして中身を確認するなど行なっておく。

$ md5sum /dev/hda
6ad71d5ad9d8fb941dd8a7ef663af321  /dev/hda