如何从 Linux shell 访问 BIOS ROM 二进制文件

问题描述 投票:0回答:3

我想要将ROM中的二进制代码制作成linux中的通用文件。那么该怎么做呢。 还有ROM访问的内存地址?

linux shell bios firmware rom
3个回答
1
投票

可以读取ROM BIOS内容。

  • 当您的代码不在某些保护模式操作系统(如 Linux)下时
  • 例如,当您处于启动模式时。此时 ROM BIOS 内容位于 0x000F0000 地址的内存中 - 看看 IBM PC 系统架构内存映射:http://wiki.osdev.org/Memory_Map_(x86)。所以你可以凭记忆复制你需要的一切。

如果您仅需要 ROM BIOS 内容用于学习,您可以使用 BIOS 转储实用程序 - 其中有很多。

您可以检查此实用程序biosdecode

也请检查此实用程序flashrom。如果您的系统受支持,您可以通过发出

读取您的BIOS内容
flashrom -r outputfile

另一个实用程序是 dmidecode

dmidecode -t bios

无需 dmidecode 即可读取内存从 C:0000 到 F:FFFF

示例命令:

dd if=/dev/mem bs=1k skip=768  count=256 2>/dev/null | strings -n 8

0
投票

有关获取图像的详细说明可以在

libreboot
docs中找到。在最坏的(我的)情况下,准备好拆卸您的设备以连接外部
spi
程序员。

我发现这个问题正在寻找一种工具来查看该图像中的内容。

fiano
project 是我需要的。

utk image.rom table
打印
image.rom
转储的内容表。


0
投票

我将此答案作为上述答案的扩展,关于 flashrom 程序。

我尝试编辑上面的答案,添加信息(*),但网站给了我一个错误:“编辑队列目前已满 - 请在几分钟后重试!”

enter image description here

也请检查此实用程序 [flashrom][2]。前提是你的系统是 支持,您可以通过发出读取您的BIOS内容

flashrom -r outputfile

(*): 注意 (09/2024):

“flashrom 是一个用于识别、读取、写入、验证的实用程序 并擦除闪存芯片。它被设计为闪光 主板上的 BIOS/EFI/coreboot/firmware/optionROM 映像, 网络/图形/存储控制器卡以及各种其他 编程器设备”

--->“不要在笔记本电脑上使用 flashrom(目前)!嵌入式控制器 (EC) 许多笔记本电脑中存在的任何尝试都可能会产生不良影响 与闪存芯片通信,可能会使您的笔记本电脑变砖”

© www.soinside.com 2019 - 2024. All rights reserved.