本节内容来自 etherboot 项目的 5.0 版本文档。它提供了确定与特定网卡配合使用的 EPROM 的大小和速度的技巧
# (perl -e 'print "\xFF" x 16384'; cat bin32/3c509.lzrom) > 32kbimage |
如果您有自己的 EPROM 编程硬件,那么在 http://www.canb.auug.org.au/~millerp/srecord.html 上有一个很好的 EPROM 文件格式转换实用程序集合。Etherboot 构建过程生成的文件是纯二进制文件。一个简单的二进制到 Intel hex 格式转换器可以在 Etherboot 网站 http://etherboot.sourceforge.net/bin2intelhex.c 上找到。您也可以使用 binutils 包中包含的 objcopy 实用程序
# objcopy --input-target binary --output-target ihex binary.file intelhex.file # objcopy --input-target ihex --output-target binary intelhex.file binary.file |
据信 Etherboot 为 PCI 网卡制作 PnP 兼容 ROM。标头中一个长期存在的错误已被追踪到。但是,市面上存在一些有缺陷的旧 BIOS,所以我编写了一个 Perl 脚本 swapdevids.pl,以便在必要时切换标头。您必须以两种方式进行实验才能找出哪种方式有效。或者,您可以使用 Perl 脚本 disrom.pl 转储一个有效的 ROM 映像(例如 RPL、PXE ROM)。要查看的字段是设备(基址、子类、接口)类型。它应该是 02 00 00,但由于原始规范中的歧义,有些 BIOS 需要 00 00 02。