您可以使用flashrom更新主板的BIOS。
示例(升技KN9 Ultra):
该板是2006年发布的AMD Athlon 64板,AM2 Socket,Nvidia芯片组。它具有256 KB的可更换闪存芯片。BIOS被标记为“ Award”,这似乎是Phoenix的商标。
Flashrom支持该芯片组和该闪存芯片。
可以使用以下命令测试支持:
# flashrom --programmer internal
Calibrating delay loop... OK.
Found chipset "NVIDIA MCP55".
Enabling flash write... OK.
Enabling full flash access for board "abit KN9 Ultra"... OK.
Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH) mapped at physical address 0x00000000fff80000.
首先备份闪存芯片的当前内容是有意义的:
# flashrom --programmer internal -c Pm49FL004 -r backup.bin
然后可以将其与供应商提供的原始图像文件进行比较(使用例如xxd
和vimdiff
)。
可能会有一些差异-因为某些BIOS在闪存中还存储了其他信息(例如DMI)和配置(例如MAC地址)。升技KN9 Ultra也是如此。DMI数据存储在前1872个字节中-可以在引导过程中由BIOS轻松重新生成。MAC地址存储在偏移量0x74E30中。
供应商固件文件打包在zip归档文件中,其中包含awdflash.exe
和BIN
文件,例如M520A_23.BIN
。在此示例中,bin文件按原样包含BIOS映像,即可以使用以下命令将其直接写入闪存芯片:
# flashrom --programmer internal -c Pm49FL004 -w M520A_23.BIN
Calibrating delay loop... OK.
Found chipset "NVIDIA MCP55".
Enabling flash write... OK.
Enabling full flash access for board "abit KN9 Ultra"... OK.
Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH) mapped at physical address 0x00000000fff80000.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
根据更新,可能需要清除CMOS以便下次重新启动-否则BIOS可能无法启动。在该板上,可以通过跳线设置清除CMOS。也可以通过软件清除(例如通过CmosPwd)。
为了保留唯一的默认MAC地址,可以在刷新前修补新的供应商映像,例如:
dd if=backup.bin of=mac.bin bs=1 count=16 skip=$(echo 16 i 74E30 p | dc)
dd if=mac.bin of=M520A_23_with_mac.bin bs=1 seek=$(echo 16 i 74E30 p | dc) \
conv=notrunc
陷阱:
- 由于主板特定的板启用(即禁用写保护)代码(尚未由flashrom实现),因此闪存写入可能会失败。