mkisofs/genisoimageを使用してコピー可能なisoファイルを作成するには?

mkisofs/genisoimageを使用してコピー可能なisoファイルを作成するには?

自動化プロセス中に.isoファイルを使用してISOファイルが生成されますmkisofs。元のデータがまったく同じであるため、結果のisoファイルも異なります(md5sum変更)。私の結果のため、rsync --checksum毎回「同じISO」を再送信するのは好きではありません。タイムスタンプが大きな違いになると予想しました。

同じ方法でisoを生成できる内蔵スイッチはありますかlibfaketimemkisofs

タイムスタンプだけが重要かどうか疑問に思います。生成されたisoファイルを以下のように出力とxxd isofile比較しました。

diff --side-by-side  --suppress-common-lines <(xxd a.iso) <(xxd b.iso )

同じファイルには16バイトを表す行が51本しかないようです(約800バイトの違い)。

isoの生成に使用されるコマンドは、おおよそ次のようになります。

genisoimage -o "file.iso" -b isolinux/isolinux.bin \
    -c isolinux/boot.cat -no-emul-boot \
    -boot-load-size 4 -boot-info-table \
    -J -R -v -T -V 'CDLABEL' "datadir/"

rsyncBS:私の場合、約800バイトだけが同時に再送信されるのを防ぐために、約1MBの大きなファイルブロックをチェックサムするコマンドライン引数スイッチがありませんか?

ベストアンサー1

genisoimage最初の重要な注意:この製品は2004年5月にリリースされたバリエーションであるため、使用しないでくださいmkisofs

2007年5月現在、Debian特有のバグが大挙追加され、その後消えた。

ここで知っておくべき重要な点は、genisoimage欠陥のあるファイルシステムイメージの作成が、オペレーティングシステムで許可されなくなることがあることです。

しかし、mkisofsまだ活発に維持管理されており、Debianに限定されていない多数のバグが2006年8月に修正されました。現在、既知のバグはありません。

これで問題を解決するには、UNIXファイルメタデータにタイムスタンプを追加する -R(Rock Rigde)を使用しています。質問1です。

別の問題は、ISO-9660ファイルシステムスーパーブロック(公式にはPrimary_descriptorと呼ばれる)に作成日と変更日が含まれていることです。後者はオプションで制御できます-modification-date

これが本当に必要な機能だと思う場合は、作成日に同様のオプションを追加できます。ただし、最後の読み取りアクセス時間ではなく、ファイル変更日を使用するようにロック・リッジの書式設定セクションに指示するオプションがまだ必要です。

頻繁に更新される元のソースバージョンはschilytoolstarballの一部であり、以下から検索できます。http://sourceforge.net/projects/schilytools/files/

最新の schilytools tarball では、コピー可能な ISO-9660 ファイルシステムイメージのサポートが導入されました。 schily-2020-03-27.tar.bz2を入手/コンパイル/インストールしてください。

いくつかの新しいオプションがあります。

  • -noatimemkisofs変更された時間をatimeにアーカイブするように指示します。

  • -creation-datePVDで作成日を設定する

  • -expiration-datePVDで有効期限を設定する

  • -effective-datePVDで有効日を設定する

  • -reproducible-date-effective-dateと追加を除くすべての時間を設定します-noatime

これは、通常のISO-9660ファイルシステムイメージとおよびをRock Ridge含むイメージに適用されますUDF。最新のマニュアルページを参照してください。http://schilytools.sourceforge.net/man/man8/mkisofs.8.html

更新されたコマンドラインは次のとおりです。

mkisofs -b isolinux/isolinux.bin \
  -c isolinux/boot.cat -no-emul-boot \
  -boot-load-size 4 -boot-info-table \
  -J -R -v -T -V 'CDLABEL' \
  -reproducible-date=20200327 "datadir/" > file.iso

おすすめ記事