3. 使用flashrom备份原始固件

任务目标

在刷写Libreboot之前,必须将主板当前运行的BIOS/UEFI固件完整备份到外部存储介质。本案例演示如何在Linux环境下使用flashrom工具读取并保存固件镜像,确保后续刷写操作可随时回滚。

环境准备

  • 一台已安装Linux的计算机(推荐Debian/Ubuntu或Arch),并确认主板支持flashrom(查阅flashrom.org的兼容列表)
  • 以root权限执行命令(使用sudo或直接root登录)
  • 准备一个外部USB存储设备或第二块硬盘,用于存放备份文件(切勿将备份存放在待刷写的主板上)

安装flashrom

Debian/Ubuntu:

sudo apt update && sudo apt install flashrom

Arch Linux:

sudo pacman -S flashrom

备份固件

首先确认主板芯片被正确识别:

sudo flashrom --programmer internal --ifd -i bios

若输出中列出了芯片型号(如 W25Q128.V),说明检测成功。若提示 No EEPROM/flash device found,请检查内核模块(spi-pci)是否加载,或尝试添加 --force 参数(仅限确认硬件兼容时使用)。

执行完整备份(将固件镜像保存为 backup_$(date +%Y%m%d).bin):

sudo flashrom --programmer internal --ifd -i bios -r backup_$(date +%Y%m%d).bin

等待命令完成,flashrom会显示 Reading flash... done。此时备份文件已生成。

验证备份完整性

备份文件必须与当前固件内容一致,否则后续恢复将失败。执行以下校验:

sudo flashrom --programmer internal --ifd -i bios -v backup_$(date +%Y%m%d).bin

输出包含 VERIFIED 字样即表示校验通过。若出现 FAILED,请重新执行备份步骤。

最后将备份文件复制到外部存储设备:

sudo cp backup_*.bin /mnt/usb_backup/

验证方法与判定标准

  • 备份成功标志:flashrom命令无错误退出,且备份文件大小与芯片容量一致(例如W25Q128为16MB,文件大小应为16777216字节)
  • 校验通过标志:-v参数执行后输出 VERIFIED,无任何 FAILED 提示
  • 可恢复性确认:备份文件已成功复制到外部存储,且外部设备挂载正常可读

常见问题

  • 提示 Multiple flash chips detected:使用 --chip <型号> 参数指定芯片,例如 --chip W25Q128.V
  • 提示 Error: Programmer initialization failed:确认已加载 spi-pci 模块(sudo modprobe spi-pci),或尝试 --programmer internal:boardmismatch=force(仅限确认主板兼容时)
  • 备份文件校验失败:重新运行备份命令,若仍失败,检查主板是否开启了写保护跳线或BIOS写保护选项

完成以上步骤后,你已拥有可恢复的原始固件备份,可以安全进入Libreboot刷写流程。