3.1 指定したディレクトリを含めて書き込みたい場合
growisofsの引数としてディレクトリを指定した場合、そのディレクトリ自身は含まれずに直下の内容が再帰的に書き込まれます。これはtarなどのイメージとは異なるため不便さを感じている人が多いと思います。実はこれはgrowisofsのせいではなく、mkisofsがそういう仕様になっているのです。ですからこれはmkisofs側で何とかするしかありません。
詳しくは mkisofsのman page を見ていただくとして、-graft-pointsオプションを使うことでこの目的を達成できます。
例えば/homeと/var/libのバックアップを取る場合で、DVDに/homeと/var/libというディレクトリを含めて書き込みたい場合は次のようにします。(最初の書込みとします)
growisofs -Z /dev/dvd -J -R -graft-points home=/home var/lib=/var/lib
“graft-point”とは接ぎ木点と直訳できますが、実際に書込むファイルやディレクトリ(右側)を‘=’記号の左側で指定したディレクトリ下に置くように指定できます。このディレクトリは実際と異なっていても構いませんし、存在しないディレクトリを指定することもできます。例えば/homeと/var/libをバックアップを取った日付のディレクトリ“20040528”の下に書く場合は次のようにします。
growisofs -Z /dev/dvd -J -R -graft-points 20040528/home=/home 20040528/var/lib=/var/lib
ここでディレクトリ“20040528”は元のファイルシステムには存在しなくても構いません。なお‘=’の右側にファイルを指定し左側にディレクトリを指定する場合は、ディレクトリ名の最後に‘/’をつけるようにしてください。そうでないと右側で指定したファイルが左側の名前のファイル名として書き込まれます。
3.2 DVD-RAMへの書込みについて
DVD-RAMは他の記録型DVDメディアとは異なり、MOのように完全にランダムに読み書きできるメディアです。ですからその扱いは基本的に4.7GBの容量をもつMOであると考えて構いません。例えばDVD-RAMをLinux標準のEXT2ファイルシステムとしてフォーマッティングして使う場合は次のようにします。
mke2fs /dev/dvd
これで通常のLinuxボリュームとして使うことができます。
それでは他の記録型DVDメディアのようにISO9660ファイルシステムを書き込むにはどうしたら良いでしょう?
同じようにgrowisofsを使えば良いのでしょうか?やってみましたが書込みの途中でシステムがフリーズしてしまいます。
実はgrowisofs.cの来歴の中のバージョン5.19の部分に次のように書かれています。
* - make DVD-RAM work in "poor-man" mode;
growisofsの隠しオプション-poor-manは、もともとバッファアンダーランの対策として用意されていますが、これを使うことでDVD-RAMへの書込みに対応したようです。つまり次のようにします。
growisofs -poor-man -Z /dev/dvd -J -R ...
このようにしてDVD-RAMへの書込みがうまくいくことを確認しましたが、3倍速であるはずの書込み速度は1.4倍になり、Windowsマシンでは読めないという結果に終わりました。書込みを行ったドライブでは読めます。いずれにせよDVD-RAMへの対応はgrowisofsバージョン5.19からであることに注意してください。
なおWindows上でUDF1.5形式でフォーマッティングしたDVD-RAMをLinuxでマウントして普通に読み書きできることを確認しました。Linuxで書き込んだ内容もWindowsで読み取れます。ただし書き込み速度は3倍速メディアでも実質1.4倍速相当(2GBの書込みに約19分)でした。使用したドライブはLG電子製GSA-4082Bです。
ちなみに同ドライブでの他のメディアの書込み時間は、約2GBの書込みをするのに4倍速で約7分(4倍速相当),8倍速で約5分30秒(5倍速相当)といったところです。ただしこれはドライブやメディアの組み合わせによって異なるはずです。
3.3 プラス(DVD+R/RW)とマイナス(DVD-R/RW)のどちらを使うべきか
メディアの価格や素性の優劣はさておき、RWメディアではフォーマッティング不要の手軽さでDVD+RWに軍配が上がり,Rメディアではどちらでも良いということになるでしょう。ただしこれはgrowisofsを使う場合に限った話です。
growisofsの作者はプラスメディアが大好きという状況を考慮すれば、LinuxではDVD+RとDVD+RWを使う方が良いということになるのかもしれません。
3.4 ドライブのファームウェアの問題
意外と見落としがちなのがドライブのファームウェアの問題です。メーカのサイトを見るとファームウェアのアップデートが頻繁に行われているのがわかります。例えば私が使っているLG電子製GSA-4082Bでは購入当初のファームウェアのバージョンはA202でしたが本稿執筆時点(2004年7月)ではA206となっています。このファームウェアはLG電子のサイトからダウンロードできます。
ファームウェアのアップデートは主にバグ対策を目的に行われるため、常にメーカのサイトをウオッチしてこまめにアップデートを行うことをお奨めします。ただしファームウェアのアップデートは通常Windows上で行うことになるため、ドライブをWindowsマシンにつなぎ直すか、1つのマシンをLinux/Windowsデュアルブートとし、アップデートの時だけWindowsを立ち上げるなどの工夫が必要です。
なおメーカによってはファームウェアのアップデートにWindows Updateの仕組みを使っており、ユーザに対してダウンロードサービスを明示していない場合があるとのことです。詳しくはここを参照してください。
3.5 書込みが急に遅くなる問題
今回の記事を執筆するにあたって各種実験を繰り返したわけですが、一度だけ書込みが遅くなる問題に遭遇しました。8倍速DVD+Rメディアなのに1.4倍速相当の書込み速度です。この時システムログには次のメッセージが記録されていました。
May 26 08:39:25 bbox2767 kernel: scsi : aborting command due to timeout
: pid 87, scsi0, channel 0, id 0, lun 0 Write (10) 00 00 00 01 e0 00 00
10 00
May 26 08:39:25 bbox2767 kernel: hdd: error waiting for DMA
May 26 08:39:25 bbox2767 kernel: hdd: dma timeout retry: status=0xd0 {
Busy }
May 26 08:39:25 bbox2767 kernel: hdd: DMA disabled
May 26 08:39:25 bbox2767 kernel: hdd: ATAPI reset complete
May 26 08:39:55 bbox2767 kernel: scsi : aborting command due to timeout
: pid 89, scsi0, channel 0, id 0, lun 0 Write (10) 00 00 00 01 e0 00 00
10 00
May 26 08:39:55 bbox2767 kernel: hdd: irq timeout: status=0xd0 { Busy }
May 26 08:39:56 bbox2767 kernel: hdd: ATAPI reset complete |
見たところ、ATAPIに問題が発生し、DMAが無効になったようです。試しに “hdparm
-d /dev/hdd”として確認したところ、やはり無効になっていました。とりあえず
“hdparm -d1 /dev/hdd” としてDMAを有効にし、再度書込みを行ったところ期待した速度での書込みができました。
growisofsの作者によればこれはバッファアンダーランが発生した時に起こるもので、前述の環境設定がきちんと行われていないか、ドライブのファームウェアに問題があるのではないかとのことです。ただしこれが起きたのは一度だけであとは安定した書込みができています。
なおDVDへの書込みが一度終わったらメディアをイジェクトし、再ロードすることが推奨されています。growisofsバージョン5.19ではこれが自動的に行われるようになりました。5.19以前のものをお使いの場合は、是非これを実行してください。コマンドラインから“eject;
eject -t”とすればマシンの前まで行かなくてもイジェクト/再ロードが行われます。(ただしそれが唯一のCD/DVDドライブの場合です)
3.6 RWメディアのフォーマッティングについて
RWメディアのフォーマットはdvd+rw-formatコマンドで行うことができますが、通常1分以内で終わってしまいます。つまりこれはメディア全面を上書きしているわけではないため、プライバシー保護を目的としたデータの消去のつもりで使うのは間違いです。メディア上にはデータが残っています。
データを完全に消去したいのであれば、次のようにしてください。
growisofs -Z /dev/dvd=/dev/zero
また不必要なフォーマッティングはRWメディアの寿命を縮めますからやらないでください。フォーマッティングを行わなくても
-Z オプションでいつでも上書きできます。
3.7 dvd+rw-mediainfoコマンドについて
dvd+rw-mediainfoは挿入されたメディアがそのドライブでどのように認識されたかを見るコマンドです。DVD-RWの記録モード(Sequential/Restricted
Overwrite)を調べる目的の他に、そのメディアの種類,ベンダ,記録速度などを見る目的で使えます。
次はJVC製のDVD-RW(X4)メディアについてのdvd+rw-mediainfoの出力です。
dvd+rw-mediainfoの出力 |
[root@host tmp]# dvd+rw-mediainfo /dev/dvd
INQUIRY: ['HL-DT-ST']['DVDRAM GSA-4082B']['A204'] ←ドライブ情報
GET ['CURRENT'] CONFIGURATION:
Mounted Media: 13h, DVD-RW Restricted Overwrite ←メディアの種類・モード
Media ID: JVC0VictorD7 ←メディアID(ベンダコード)
Current Write Speed: 4.0x1385=5540KB/s ←現在選ばれている書込み速度
Write Speed #0: 4.0x1385=5540KB/s ←選択可能書込み速度1
Write Speed #1: 2.0x1385=2770KB/s ←選択可能書込み速度2
<以下省略>
|
4倍速のメディアが2倍速でしか書き込めないなどの場合は「選択可能書込み速度」を見てください。有名なメーカの4倍速のメディアでも2倍速でしか認識されない場合があります。ただしこれはメーカが嘘をついているわけではなく、ドライブのファームウェアに依存するものですからメディアメーカや販売店に文句を言う筋合いのものではありません。ファームウェアのバージョンアップをすることで改善したりするものです。
逆に書込みに失敗する,予想以上に書込みが速く行われるなどの場合は「現在選ばれている書込み速度」をチェックしてください。ドライブによっては未知のブランドのメディアに対して最高速を適用してしまうものがあるとのことです。この場合は次のようにgrowisofsの-speedオプションで書き込み速度を明示的に与えます。
growisofs -spped=4 -Z /dev/dvd -R -J ...
dvd+rw-mediainfoコマンドは無印のバルクメディアを買った場合にその素性を調べるのにも便利なコマンドだと思います。
3.8 ISOイメージファイルからのDVD作成
既にISOイメージを作成(プリマスタリング)してある場合でもgrowisofsコマンドが使えます。例えばISOイメージファイルをカレントディレクトリにあるimage.isoとすると、
growisofs -Z /dev/dvd=image.iso
とします。この場合growisofsはmkisofsを使わずにimage.isoファイルの内容を/dev/dvdにダンプします。
3.9 書き込みテスト
書き込みテストを行う場合は次のように-dryrunオプションを使います。
growisofs -dryrun -Z /dev/dvd ...
これによりDVDへの書込みは行われなくなります。
3.10 dvd+rw-toolsバージョン5.19のバグについて
dvd+rw-toolsバージョン5.19には深刻なバグがあることが作者から報告されています。次の文章は作者からの通知を翻訳したものです。
バージョン5.19にはファイナライズに失敗するバグがあることがわかりました。永久に“flush
cache”し続けてしまうというものです。対策として5.19のソースにこのパッチを当てるか、パッチ済みのこのtar-ballをダウンロードしてください。もしこのバグによりファイナライズされなかったDVD±Rメディアをお持ちの場合はこの簡易プログラムを実行することで回復させることができます。DVD±RWメディアでは単に“dvd+rw-format
-lead-out”とすれば良いはずです。
筆者注: バージョン5.20にアップデートすることをお勧めします。
3.11 2層DVD+R(DVD+R DL)のサポートについて
growisofsバージョン5.20から試験的に2層DVD+R(DVD+R DL)のサポートが追加されました。具体的には
-use-the-force-luke=4gms という隠しオプションを与えることで4GBの制限を取り除くものです。作者によれば“カーネルバージョン2.6.8以上を利用する開発者限定”だそうです。
|