使用 Flashrom 在 Linux 下备份或刷写 BIOS

Flashrom 这款工具来自于 Coreboot 项目(即著名的 LinuxBIOS)。借助该工具,我们可以在 Linux 下轻松、方便的备份或刷写 BIOS。

安装 Flashrom

在使用 Flashrom 之前,首先你需要安装它。目前,一些流行的 Linux 发行版都可以通过自身的包管理器来安装 Flashrom。例如,Debian/Ubuntu 用户可执行如下命令:

$ sudo apt-get install flashrom

Fedora 用户需执行:

$ sudo yum install flashrom

如果你不能通过所使用 Linux 发行版的包管理器安装 Flashrom,那么可选择手动编译安装。只需执行以下命令: $ svn co svn://coreboot.org/repos/trunk/util/flashrom $ cd flashrom $ make $ sudo make install

注意,你将需要编译工具、Subversion、依赖包 pciutils 和 zlib 等东东。

Flashrom 用法

除了通过 Flashrom 官方主页查询 Flashrom 是否支持你目前的主板、芯片之外,你也可以直接使用 Flashrom 工具来检测。使用 root 用户权限执行 flashrom 指令后,Flashrom 将输出类似下面的信息:

Calibrating delay loop... OK.
No coreboot table found.
Found chipset "Intel ICH7/ICH7R", enabling flash write... OK.
Found chip "Winbond W39V040B" (512 KB) at physical address 0xfff80000.
No operations were specified.

如果你想把当前的 BIOS 映像备份下来,那么可执行:

# flashrom -r bios_image.bin

同样的,Flashrom 也将提供输出信息供参考:

Calibrating delay loop... OK.
No coreboot table found.
Found chipset "Intel ICH7/ICH7R", enabling flash write... OK.
Found chip "Winbond W39V040B" (512 KB) at physical address 0xfff80000.
Reading flash... done.

刷写新的 BIOS 则可以执行:

# flashrom -wv new_bios.bin

某些芯片驱动需要先擦除后方能正常写入:

# flashrom -E

警告:刷写 BIOS 是一项危险的操作,除非你清楚的知道自己在干什么,否则请勿轻易尝试。

Flashrom

Read More:

17 Comments

  1. 1 Ryan_fu Commented @ 2009-01-22 11:49Reply to this comment

    BIOS要是能象应用程序一样加载到真实环境运行就有意思了

  2. 2 Ryan_fu Commented @ 2009-01-22 11:50Reply to this comment

    @Ryan_fu: 我是说bin文件。。。。。

  3. 3 gcell Commented @ 2009-01-22 11:58Reply to this comment

    Mark,曾经为这个苦恼过……

  4. 4 黑日白月 Commented @ 2009-01-22 12:37Reply to this comment

    这个……很早就注意过…… 因为在仓库里搜索 Flash 时出来过这个…… 但是因为我的本本没什么 BIOS 能升级,没法验证……

  5. 5 wangdu2002 Commented @ 2009-01-22 13:08Reply to this comment

    不错,支持下! 不知这个Flashrom是否支持刷写norflash芯片,以前看到资料上说linux下刷NANDflash可以,但刷NORflash就不行的。不知现在有没有解决这个问题。 现在我一般都是用编程器来刷写BIOS的。 coreboot这个名字感觉不行啊,不能让人一看就想到BIOS,还是改名为gnubios更好。 希望coreboot越做越完善,能支持更多的主板,我早就不想使用私有BIOS了,但没办法。

  6. 6 绝对不要刷bios Commented @ 2009-01-22 14:44Reply to this comment

    绝对不要刷bios,刷坏主板的可能性远远大于90%,而且有可能再开机的时候,烧了你的cpu,烧了你的内存,烧了你的显卡,然后让你的硬盘的数据永远读不出来,极度危险,绝对不要实验!!!!!!

  7. 7 stephen Commented @ 2009-01-22 15:57Reply to this comment

    @绝对不要刷bios: 你这也太绝对了吧。只要刷的bin文件没问题并且刷的过程中没有发生诸如断电之类的意外是不会出问题的。当然,你随便找个bin文件就往里刷那另当别论。。。

  8. 8 RRG Commented @ 2009-01-22 16:50Reply to this comment

    呃,好像我的不被支持,不用担惊受怕了 Base Board Information Manufacturer: Hewlett-Packard Product Name: 30C4

  9. 9 chaos Commented @ 2009-01-22 17:32Reply to this comment

    绝对不要刷bios,刷坏主板的可能性远远大于90%,而且有可能再开机的时候,烧了你的cpu,烧了你的内存,烧了你的显卡,然后让你的硬盘的数据永远读不出来,极度危险,绝对不要实验!!!!!!

    太胡扯了,说话请负责任,不要信口开河 AMI 和 Award 都提供 flash 烧写工具,以前机器升级用新设备经常需要刷BIOS 的

  10. 10 chaos Commented @ 2009-01-22 17:34Reply to this comment

    Ryan_fu Commented @ 2009-01-22 11:49 amReply to this comment

    BIOS要是能象应用程序一样加载到真实环境运行就有意思了

    可以用 QEME,参见 http://www.coreboot.org/QEMU

  11. 11 Wick Commented @ 2009-01-22 18:50Reply to this comment

    这也太疯狂了,在系统内刷BIOS。

  12. 12 菜鸟提问 Commented @ 2009-01-22 20:35Reply to this comment

    那么,怎么使用coreboot代替主板上的AwardBios呢?

  13. 13 oldherl Commented @ 2009-01-22 21:14Reply to this comment

    arch仓库里面怎么没有啊 这个coreboot网站看得我一头雾水,coreboot提供设置选项么?如果不提供的话岂不是没法选择从哪个盘启动了……

  14. 14 wangdu2002 Commented @ 2009-01-22 22:59Reply to this comment

    楼上的兄弟想用coreboot,先上它的官方网站,看现有的哪个版本V1/V2/V3支持你的主板,如果在支持列表当中,然后再看官方文档,有详细的取得快照版本的命令和编译出bin文件的方法。照着做就行了。不过现在支持的主板只有二百多种,我的不在其中所以我虽然也编译了几个Bin文件,却没用武之地啊。 注意,刷新Bios之前请务必备份老Bios,以防万一新Bios启动不了系统。我现在要刷Bios都是用编程器来做的,很方便,也很可靠。不过要买个编程器要花一百多元。

  15. 15 Hao Zhe XU Commented @ 2009-01-22 23:10Reply to this comment

    系统内刷BIOS,好像CIH就是这样的吧,我不清楚,这事儿不能说的太细。

  16. 16 Ryan_fu Commented @ 2009-01-23 8:00Reply to this comment

    @chaos: 真实环境。。。。。。qemu应该还是虚拟的吧

  17. 17 seenxu Commented @ 2009-02-15 6:57Reply to this comment

    项目不错,就是对现有主板的支持还比较少,以后会密切关注这个项目的进展。