首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用mkisofs/genisoimage制作可复制的iso文件?

如何用mkisofs/genisoimage制作可复制的iso文件?
EN

Unix & Linux用户
提问于 2020-03-13 15:49:54
回答 2查看 3.5K关注 0票数 5

在自动化过程中,使用mkisofs创建一个iso文件。甚至,由于原始数据完全相同,由此产生的iso文件也不一样(它们的md5sum更改)。由于我rsync --checksum的结果,我不喜欢“相同的iso”当然是重新传输每次。我预计主要的区别是时间戳。

是否有一些libfaketime内置开关可以通过mkisofs生成一个确实相同的iso。

我不知道只有时间戳重要吗?我将得到的iso文件与它们的xxd isofile输出进行了比较,如下所示:

代码语言:javascript
复制
diff --side-by-side  --suppress-common-lines <(xxd a.iso) <(xxd b.iso )

在其他文件中,似乎只有51行代表16个字节(大约800字节的差值)。

用于生成此iso的命令大致如下:

代码语言:javascript
复制
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/"

BS:我是否遗漏了一个带有rsync的命令行参数开关,用于对~1MB的大文件块进行校验和,以防止在我的示例中只有800个字节不同的情况下重新传输?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-03-17 14:08:23

首先,一个重要的注意事项:不要使用genisoimage,因为它是mkisofs的缺陷变体,从2004年5月开始。

在截至2007年5月的时间里,已经添加了大量Debian特定的bug,从那以后,它就死了。

这里要知道的是,genisoimage创建的文件系统映像在某个时候可能不再为操作系统所接受.

然而,官方的mkisofs仍在积极维护,并在2006年8月修复了大量非Debian特定的bug。目前还没有已知的bug。

现在来看看您的问题:您正在使用-R ( Rigde),这将像时间戳一样将UNIX添加到文件元数据中。这是问题1.

另一个问题是,ISO9660文件系统超级块(正式名称为primary_descriptor)包含创建日期和修改日期。后者可以通过选项-modification-date来控制。

如果您认为这是一个真正需要的功能,我可以为创建日期添加一个类似的选项。然而,您仍然需要一个选项来告诉Ridge格式化部分使用文件的修改日期,而不是上次读取访问的时间。

经常更新的原始源版本是schilytools tarball的一部分,可以从:http://sourceforge.net/projects/schilytools/files/检索。

目前最新的schilytools tarball引入了对可报告的ISO-9660文件系统映像的支持。请取/编译/安装schily 2020-03-27.tar.bz2。

有几个新的选择:

  • -noatime告诉mkisofs将修改时间存档为atime。
  • -creation-date在PVD中设置创建日期。
  • -expiration-date在PVD中设置过期日期。
  • -effective-date在PVD中设置生效日期
  • -reproducible-date设置所有时间,除了-effective-date-noatime之外。

这适用于普通的ISO-9660文件系统映像以及包含Rock RidgeUDF的图像。请参阅最近的手册页:http://schilytools.sourceforge.net/man/man8/mkisofs.8.html

更新后的命令行如下所示:

代码语言:javascript
复制
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
票数 4
EN

Unix & Linux用户

发布于 2021-04-14 06:02:54

人们转向索里索,因为一个人可能想要避免亲吻和genisoimage似乎还没有得到进一步的发展。

为了使xorriso输出可重复设置环境变量名为SOURCE_日期_与1970年1月1日以来的秒值相同的时代。

您可以直接使用xorriso,也可以使用它的名为xorrisofs的mkisofs兼容性模式

代码语言:javascript
复制
SOURCE_DATE_EPOCH=0 xorrisofs YOUR-MKISOFS-ARGS
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/572751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档