我一直在 RHEL 6.2 上使用 Kickstart,这涉及重新制作安装 ISO。不过,我注意到一些奇怪的事情。如果我发出以下命令一次(diskFiles
我保存 DVD 文件的目录在哪里)...
mkisofs -o file.iso -b isolinux/isolinux.img -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T diskFiles/
...除非我使用 DVD 文件的新副本,否则我无法再次创建可用的 ISO。错误范围从 isolinux 无法启动到 Anaconda 找不到 RHEL 安装映像。因此,我的问题如下:
- 当我创建 ISO 时,目录
isolinux
中的文件是否会被修改?diskFiles
- 如果是,每次我尝试创建另一个 ISO 时,我应该替换哪些文件?我知道重新复制整个 DVD 是可行的,但似乎没有必要。
- 如果不是,那么我是否可能遗漏了某些可以解释这一情况的过程?
本质上,我的问题是:mkisofs
它的魔力是如何发挥的,以及它在这个过程中对启动映像做了什么?
答案1
1)如果磁盘文件目录正在被修改,那么这将显示简单的工具,如ls. 如果你有许多文件和子目录,那么寻找是你的朋友。
2) 从 DVD 备份进行 Rsync 会快得多。我不推荐这样做,因为这是一种解决方法。找到问题的原因几乎总是更好的选择。然而,我认识到有时需要一种解决方法才能完成任务现在。我的经验是,这些解决方法会永远存在,所以最好尽可能避免使用它们。
(跳过第 3 项,因为我对此没有答案)。
答案2
除了我接受的答案之外,还有一个简单的方法可以解决这个问题 - 生成 MD5 校验和!(呃。)
md5sum diskFiles/isolinux/isolinux.bin
如果您在调用之前和之后运行该命令mkisofs
,您会看到文件确实发生了变化,原因如下(感谢@Hennes):
-boot-info-table 指定将在启动文件的偏移量 8 处修补一个包含 CD-ROM 布局信息的 56 字节表。如果给出此选项,则启动文件将在源文件系统中被修改,因此如果此文件无法轻松重新生成,请确保进行复制!
为了解决这个问题,我使用以下命令:
rsync -rv /home/derp/diskBackup/isolinux diskFiles/isolinux
该rsync
命令与 非常相似cp
,只是它更智能、更灵活。使用此命令将“清理”源文件系统中的启动映像文件,以便mkisofs
可以再次修补 56 字节表而不会损坏 isolinux 文件。
我可能可以对整个 DVD 内容执行此操作,但我懒得再次从光盘上复制所有内容,并且isolinux
这是唯一受影响的目录mkisofs
。:-)