问题标签 [iso9660]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - 如何在 Delphi 中阅读 ISO 9660?
我目前正在做一个项目,需要知道 DVD 的刻录时间(刻录 DVD 的日期)。据我搜索和寻找,发现所有像这样的数据都遵循 ISO 9660 格式,但我找不到如何访问或阅读它,还尝试了一些相关的组件包和库,但它们都没有作为我期望和需要。
还找到了这个链接:如何找出光盘 (DVD) 何时被写入/刻录?但我找不到在 Delphi 中使用它们的方法。它是如何工作的?
buildroot - 没有这样的文件或目录 grub-eltorito.img
我仍然有问题: grub-eltorito.img:没有这样的文件或目录
生成根文件系统映像 rootfs.iso9660
/usr/bin/install -D -m 0644 fs/iso9660/grub.cfg /mnt/Seagate/Prca/buildroot-2016.05/output/build/rootfs.iso9660.tmp/boot/grub/grub.cfg
/bin/sed -i -e "s% KERNEL_PATH %/boot/bzImage%" /mnt/Seagate/Prca/buildroot-2016.05/output/build/rootfs.iso9660.tmp/boot/grub/grub.cfg
/usr/bin/install -D -m 0644 /mnt/Seagate/Prca/buildroot-2016.05/output/images/grub-eltorito.img /mnt/Seagate/Prca/buildroot-2016.05/output/build/rootfs.iso9660。 tmp/boot/grub/grub-eltorito.img
/usr/bin/install: nie można wykonać stat na „/mnt/Seagate/Prca/buildroot-2016.05/output/images/grub-eltorito.img”: Nie ma takiego pliku ani katalogu fs/iso9660/iso9660.mk:160 :polecenia dla obiektu '/mnt/Seagate/Prca/buildroot-2016.05/output/images/rootfs.iso9660' nie powiodły się
制作:*** [/mnt/Seagate/Prca/buildroot-2016.05/output/images/rootfs.iso9660] Błąd 1
有我的 diffstat: diff
我看了这个文件: grub2.mk 并删除了与GRUB2_IMAGE_INSTALL_ELTORITO关联的行,但仍然无法正常工作。我该如何解决这个问题?
PS。对不起我的英语,但不是很好。
ubuntu - 我可以在 Ubuntu 中为自定义内核编译内核后创建可引导的 .iso 文件吗
是否可以创建我们当前运行的 Ubuntu 操作系统的 ISO 映像?我的目标是编译新内核并制作一个 ISO 文件。
c# - 通过 DiscUtils 检查 ISO 是否具有 Joliet 扩展
我正在开发一个函数来验证 ISO 是否有 Joliet 扩展。我使用 DiscUtils 创建 ISO 文件如下
但是,当我阅读 ISO 文件时。它不被认为是 Joliet
不知道我做错了哪一部分。有什么建议么?
perl - Perl hex replacement (s///g) has no effect when used on an ISO file
I am trying to install a Live Kali Linux on a USB without the two beeps at booting. I found the fifth post in this thread that says:
This can also depend on UEFI vs BIOS
For BIOS you can use the following PERL script on the ISO file itself and it will take care of any place ^G exists in the iso:
The beep was added for accessibility to the UEFI boot menu as well so you may still get the beep. To remove that you must edit grub.cfg and comment out or remove the following two lines:
insmode play
play 960 440 1 0 4 440 1I used live build to make the changes to grub.cfg, generated the iso, and then ran the perl script prior to flashing to the usb.
I managed to delete the (x07) byte for BIOS with the given Perl script, so I tried the same thing with "insmode play play 60 440 1 0 4 440 1" (I opened grub.cfg in a hex editor, copied the hex of this string, 696E736D6F6420706C61790A706C61792039363020343430203120302034203434302031, and put 20 in the place of every byte).
I ran this script perl -p -i -e 's;\x69\x6e\x73\x6d\x6f\x64\x20\x70\x6c\x61\x79\x0a\x70\x6c\x61\x79\x20\x39\x36\x30\x20\x34\x34\x30\x20\x31\x20\x30\x20\x34\x20\x34\x34\x30\x20\x31;\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20;g' your-kali.iso
.
But the string is still in the iso.
Why does it not get replaced?
cd-rom - 当表不包含大小时,如何从路径表中读取 iso9660 上的目录?
根据 iso9660 / ecma119 的结构规范,路径表包含每个路径的记录,包括起始扇区的位置及其名称,但不包括其大小。我可以找到目录条目,但不知道它包含多少个扇区(通常为 2048 字节)。是一个吗?二?六?
如果我“遍历目录树”,每个目录条目都包含引用的 location和 size,所以我可以知道要读取多少字节(本质上是多少扇区,因为目录必须使用整个扇区)。但是,路径表只包括起始位置,而不包括大小,让我不知道要读取多少字节。
在我拥有的示例 iso(ubuntu-18.04.1-live-server-amd64.iso
fwiw)中,主卷描述符中的根目录条目显示:
既然它说Data Length
is 2048
,我知道只读取一个扇区。
但是,路径表中的根目录条目显示:
它也指向扇区20
,但没有告诉我它使用了多少扇区,让我猜测。
是的,一个扇区中未使用的字节应该是 all 0x00
,所以如果我在一个扇区中读取,读取记录,然后找到第一个字节(长度)为 的一个0x00
,那么我知道我已经到达记录的末尾,但是有三个问题:
- 如果那是规范的方式,为什么还要在目录条目中包含大小?
- 如果它包括 2 或 3 个扇区,对我来说一次读取它们比一次读取一个更有效。
- 如果我有一个目录,其记录精确地填充了一个扇区,没有一些大小属性,我不知道下一个扇区是否应该作为条目读取,或者该目录是否在这里结束。
基本上,我知道如何读取有序路径表来获取目录条目,但不知道如何使用它来知道要为目录本身读取多少扇区。理论上,我可以读取父目录以获取该目录的条目以了解大小,但这增加了查找和读取,并且几乎违背了路径表的目的。
ls - grub2 没有列出 iso9660 内容
我正在构建 BOOTX64.EFI 图像:
然后我以给定的前缀将它嵌入到 FAT16 分区(esp.img)中,并使用 xorriso 创建 ISO:
它启动到:
但是当ls
被调用时,没有列出任何文件系统(proc 除外),而我希望在下面看到 (cd0) 和 msdos 分区。
我将我的与 debian netinst 进行比较,当我ls
在 grub shell 中读取详细输出时,我会看到kern/disk.c
并disk/efi/efidisk.c
处理我的命令,而我的详细输出是无声的。此外,lsmod
在 debian netinst 列表lsefi
模块上,而我的没有。
我错过了一些东西,我要求提示。
boot - xorriso:boot.catalog 和 -eltorito-catalog 不起作用
我一直在尝试xorriso
使用自定义boot.catalog
文件创建可引导 CD,以便 - 这是我的目标 - 指定我的引导扇区应该放置的 LBA。但是,该xorriso
选项-eltorito-catalog
似乎没有使用我的 custom boot.catalog
,而是创建了一个新目录,然后将其放置在最终的 ISO 映像中。
我的自定义boot.catalog
看起来像这样(缩短,其余被清除):
我的理解是DWORD
at 0x00000028
( 2000 0000
, LBA 32) 用于将引导映像放置在可引导 CD 介质中的指定 LBA 处。我正在使用以下命令来创建一个新的可引导 ISO 映像:
生成的 ISO 映像如下所示:
如您所见,bootimg.bin
引导映像位于 LBA 34(而不是我的 32 中所写的boot.catalog
)。boot.catalog
此外,从生成的 ISO中提取和转储给我:
我的问题是,根据我的理解:为什么引导映像放置在不同的扇区(以及为什么我boot.catalog
被替换为新的、不同的扇区)?
如果我对该选项的理解-eltorito-catalog
是错误的:有没有办法告诉xorriso
在 ISO 映像中从哪里开始写入文件?有没有办法知道xorriso
在 CD 中放置文件的位置?
python - Python - Windows Raw Disk 无法读取最终扇区
通过 Python 在 Windows 上访问原始磁盘时open()
,无论出于何种原因,它都不允许我读取最后 10240 个字节(也就是 2048 个字节/扇区的最后 5 个扇区)。
当通过其他方式转储磁盘映像并比较图像时,我可以看到数据也不能假定为空。事实上,第一个缺失的扇区有一个 UDF 锚标记,其中包含相关元数据。以下扇区完全空白。
这就是我转储光盘内容的方式:
如果我使用同一个 open() 对象并告诉它搜索到光盘的最后,它确实可以。因此,至少在搜索方面,它可以清楚地到达这些领域。如果我然后寻找 10240 字节然后尝试f.read(...)
,它返回b''
(空结果)而不是错误。我告诉它读什么大小也没关系。我尝试了各种大小,no-arg/default、1、12、255、512、2048、999999 等。
另一个 StackOverflow对不同(但相关)问题的回答也报告了关于增强音频光盘的类似发现,但此后似乎没有提出任何讨论。
我已经在来自不同类型工作室和创作者的多张 DVD 光盘上对此进行了测试,所有这些都处于良好状态,并且仍在发生。
示例重现代码:
- 我不知道它是否会在您的系统配置/光盘/阅读器上发生在您身上)。
- PyPI 依赖项:wmic
- WMIC 也报告磁盘大小为 10240,也许这是 Windows 问题?
任何关于为什么这可能会很棒的想法,因为我已经尽我所能。
centos7 - 是否可以将具有扩展属性的文件写入 ISO9660 文件系统?
我有一些带有 security.ima 扩展属性集的文件。是否可以将这些写入保留扩展属性的 ISO9660 文件系统?我已经尝试使用带有“--xattr-any”参数的 xorrisofs 命令以及 mkisofs。
为了测试,我运行了我的 xorrisofs 或 mkisofs 命令来创建一个 iso 映像,然后挂载该映像并检查挂载上是否存在 security.ima 属性。
据我了解,ISO9660 的 Rock Ridge 扩展仅提供对 POSIX 中指定的文件属性的支持。但是,此处未指定扩展属性。