BIOS 启动后,我想转储系统内存。我读过关于如何使用 FireWire 来实现这一点的文章,但没有找到任何详细的说明或教程。
答案1
除了 BIOS、它创建的构造以及任何选项 rom 数据之外,内存中不会有任何东西。
可以编写一个自定义启动扇区,将 RAM 中的所有内容复制到磁盘,但我很难看出其用处。
答案2
编写一个小的自定义 mbr,使用 int 0x13 AH=43h:将扩展写入驱动器扇区以将内存写入磁盘。只需记住从 0x7c00 开始的 512 个字节就是你。在 bios 将 mbr 加载到那里之前,该内存不会被填充任何东西。如果您使用该方法,它不依赖于 FireWire,这是一个不常见的接口。
您可以在这里找到低级系统内存的概述:https://wiki.osdev.org/Memory_Map_(x86)
位置 0x7c00 被视为可用内存。因此它不被 bios 或其他系统事物使用,只是引导加载程序放在那里,但这并不重要。如果您想要一份完整的内存副本,您可以将其替换为 0.....
内存映射可以帮助您写出包含内容的内存的某些部分,这样您就不需要转储一堆 0。
另外,如果您有一个可以使用 BIOS int 0x14 连接的串行端口,您可以通过串行转储来写入磁盘,这可能更方便,具体取决于您的设置。