Linux&FreeBSD ハードウェア設定 |
YAMAMORI Takenori ●yamamori |
cdrecordを使う場合は,-pad オプションを付けた方がいいでしょう. -pad を付けると,15セクタ(=15*2048byte)のゼロのデータが, ファイルシステムイメージのあとにさらに追加して書き込まれます.
実は,cdrecordで焼いたCD-Rを,/dev 以下のデバイスから ddコマンドなどで直接読み出すと,データの終了付近で デバイスドライバレベルのI/Oエラーが出て, その結果,データの最後の数セクタが読めないまま, ddコマンドが終了してしまいます. (ブロックサイズをいろいろ変えて試してもダメでした)
このため,-padオプションでCD-Rの後ろに余分なデータを追加しておき, その部分が読めなくても困らないようにしているわけです.
cdrecordのオンラインマニュアルには, "Linux system with the ISO-9660 filesystem read ahead bug" のような記述がありますが,筆者が試したところ, cdrecord以外で焼かれたCD-Rや,一般のCD-ROMについては, それをLinux上でddで直接読み出しても「先読みオーバーラン」はせず, 最後のセクタまでちゃんと読むことができました. 逆にLinuxやFreeBSD上でcdrecordで焼いたCD-Rは, それをLinuxやFreeBSDやSolaris/SunOSなどで読み出すと, 最後の部分でリードエラーが出ました. ただし,FreeBSDやSolaris 7では, エラーが出つつも最後のセクタまで読むことは読めました.
このことから,原因はcdrecordが物理的なデータの終了を CD-Rにちゃんと記録していないためではないかと考えています.
しかしながら,ddで読み出すのではなく, 普通にiso9660ファイルシステムとしてマウントして使う分には 問題ありません.念のため,焼き上がったCD-Rをマウントして, そのマウントポイントで,たとえば,
# tar cvf - . | wc
として,全ファイルを読み出してみて, 何もエラーが起きないことを確認できます.
To「Linux&FreeBSD ハードウェア設定」index