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

Posted

技术标签:

【中文标题】如何从 linux shell 访问 BIOS ROM 二进制文件【英文标题】:How to access BIOS ROM binary from linux shell 【发布时间】:2017-09-02 16:39:21 【问题描述】:

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

【问题讨论】:

也许你不能,也许你不应该。你为什么想要它? Linux一运行,Bios就没用了…… 尝试用dmesg | grep BIOS提供的信息做一些事情 是为了更好的理解安全 【参考方案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

从 C:0000 读取内存到 F:FFFF 不需要 dmidecode

示例命令:

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

【讨论】:

【参考方案2】:

获取图片的详细说明可以参考librebootdocs。在最坏的(我的)情况下,准备拆卸您的设备以连接外部spi 编程器。

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

utk image.rom table 打印image.rom 转储的目录。

【讨论】:

以上是关于如何从 linux shell 访问 BIOS ROM 二进制文件的主要内容,如果未能解决你的问题,请参考以下文章

Linux如何启动流程?Linux启动流程详解

了解基本的bash shell命令

Linux shell怎么从20W数据中随机的抽取2W?

如何设置bios,让系统从u盘启动

运行shell脚本报错```$'\r':command not found```

linux hwclock -r显示的HWC TIME(硬件时钟时间)与timedatectl结果中的RTC TIME(实时时钟时间)有什么区别?BIOS时钟源