3

我一直在尝试xorriso使用自定义boot.catalog文件创建可引导 CD,以便 - 这是我的目标 - 指定我的引导扇区应该放置的 LBA。但是,该xorriso选项-eltorito-catalog似乎没有使用我的 custom boot.catalog,而是创建了一个新目录,然后将其放置在最终的 ISO 映像中。

我的自定义boot.catalog看起来像这样(缩短,其余被清除):

 $ xxd boot.catalog | head -n 8
00000000: 0100 0000 0000 0000 0000 0000 0000 0000  ................
00000010: 0000 0000 0000 0000 0000 0000 aa55 55aa  .............UU.
00000020: 8800 0000 0000 0400 2000 0000 0000 0000  ........ .......
00000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[...]

我的理解是DWORDat 0x00000028( 2000 0000, LBA 32) 用于将引导映像放置在可引导 CD 介质中的指定 LBA 处。我正在使用以下命令来创建一个新的可引导 ISO 映像:

 $ xorriso -as mkisofs -iso-level 3 -full-iso9660-filenames -eltorito-boot bootimg.bin -eltorito-catalog boot.catalog -no-emul-boot -boot-load-size 4 -boot-info-table -o test2.iso build

生成的 ISO 映像如下所示:

 $ isoinfo -i test2.iso -l -s

Directory listing of /
d---------   0    0    0               1 Mar 17 2020 [     19 02]  . 
d---------   0    0    0               1 Mar 17 2020 [     19 02]  .. 
----------   0    0    0               1 Mar 17 2020 [     33 00]  boot.catalog;1 
----------   0    0    0               1 Mar 17 2020 [     34 00]  bootimg.bin;1 
----------   0    0    0               1 Mar 17 2020 [     35 00]  bootstrap.bin;1

如您所见,bootimg.bin引导映像位于 LBA 34(而不是我的 32 中所写的boot.catalog)。boot.catalog此外,从生成的 ISO中提取和转储给我:

 $ xxd boot.catalog | head -n 8
00000000: 0100 0000 0000 0000 0000 0000 0000 0000  ................
00000010: 0000 0000 0000 0000 0000 0000 aa55 55aa  .............UU.
00000020: 8800 0000 0000 0400 2200 0000 0000 0000  ........".......
00000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[...]

我的问题是,根据我的理解:为什么引导映像放置在不同的扇区(以及为什么我boot.catalog被替换为新的、不同的扇区)?

如果我对该选项的理解-eltorito-catalog是错误的:有没有办法告诉xorriso在 ISO 映像中从哪里开始写入文件?有没有办法知道xorriso在 CD 中放置文件的位置?

4

1 回答 1

1

似乎xorriso实际上提供了一个选项,该选项通过将附加信息(例如加载引导映像的扇区)放入可以从汇编代码访问的结构中来修改引导映像。该选项-boot-info-table在偏移处放置一个结构,8如下所示:

DWORD boot_image_pvd
DWORD boot_image_lba
DWORD boot_image_len
DWORD boot_image_checksum

整个结构写在字节之间863启动映像中。

  • boot_image_pvd是主卷描述符的块
  • boot_image_lba是从中加载引导映像的前 2 KB 的块
  • boot_image_len是整个启动映像的长度(以字节为单位)

更多信息在这里

于 2020-03-18T14:20:34.350 回答