1. Libreboot简介与安装准备
任务目标
本案例要求你完成两项工作:第一,理解Libreboot是什么、它与coreboot的关系以及其硬件支持边界;第二,在你自己的机器上完成安装前的软硬件准备,并验证准备结果。完成本案例后,你应能准确判断一台电脑是否可能运行Libreboot,并拥有一台已就绪的安装主机。
Libreboot项目背景与硬件边界
Libreboot是coreboot的一个发行版,目标是提供完全自由的固件:它移除了coreboot中所有非自由二进制blob(如CPU微码补丁、VGA BIOS、内存初始化二进制),并默认构建为带有简单文本菜单的BIOS/UEFI替代品。这意味着Libreboot对硬件的要求比coreboot更严格——只有那些不需要任何非自由初始化代码即可启动的主板才被支持。
截至当前版本,支持的平台集中在Intel Sandy Bridge/Ivy Bridge(如ThinkPad X220、T420)、AMD Family 15h/16h(如ASUS KGPE-D16服务器主板)以及部分ARM Chromebook。所有支持的设备列表、各自所需的外部 flashing 设备型号和布线方式,都维护在官方文档的 Hardware compatibility list 页面中。你需要以该页面为准,而不是依赖本文或任何第三方说法。
安装准备:硬件与软件清单
Libreboot不能像普通软件那样在操作系统内自行刷写(部分设备支持内部刷写,但首次安装几乎都需要外部编程器)。准备阶段需要确认以下内容:
| 类别 | 必需项 | 用途 |
|---|---|---|
| 目标硬件 | 一台在官方支持列表中的设备 | 被刷写对象 |
| 编程器 | CH341A或Raspberry Pi(GPIO直连) | 外部读取/写入flash芯片 |
| 连接线 | 杜邦线、Pomona 5250测试夹或SOP8转DIP8转接板 | 连接编程器与主板flash芯片 |
| 主机系统 | Linux发行版(Debian/Ubuntu/Fedora均可) | 运行flashrom工具 |
| 软件 | flashrom、git、build-essential | 读取/写入flash、获取Libreboot源码 |
主机环境准备与验证
以下命令在安装主机(不是目标设备)上执行。先安装必要工具:
sudo apt update
sudo apt install -y flashrom git build-essential
flashrom --version
验证通过条件:flashrom --version 输出包含版本号且无“command not found”错误。接着确认编程器被系统识别(以CH341A为例):
lsusb | grep -i ch341
若输出包含类似 1a86:5512 的设备行,说明USB编程器已被识别。对于Raspberry Pi方案,则跳过此步,直接检查GPIO引脚定义是否与目标主板flash芯片的datasheet对应。
获取Libreboot源码与固件镜像
源码和预编译镜像都从官方仓库获取。预编译镜像适合直接刷写,源码适合需要自定义配置的场景。本案例只需下载并校验完整性:
git clone https://notabug.org/libreboot/lbmk.git
cd lbmk
git tag -l | tail -5
预期输出:显示最近的版本标签(如 20241206 或更新),证明源码树完整。若需要预编译镜像,前往Libreboot官网下载对应设备的ROM文件,并用 sha256sum 与官网公布的校验值比对。
目标设备flash芯片定位
在目标设备上(若当前系统仍可启动),运行以下命令确认flash芯片型号和当前固件状态:
sudo flashrom -p internal --ifd -i bios
该命令尝试读取当前BIOS区域。预期输出会显示检测到的flash芯片型号(如 Winbond W25Q64)和读取结果。如果命令失败并提示“No EEPROM/flash device found”,说明内部读取被禁止(常见于新机器),这进一步确认必须使用外部编程器。此步骤仅用于信息收集,不写入任何数据。
验证清单与通过标准
- 目标设备型号出现在Libreboot官方支持列表中——在官网硬件页面逐项核对,不凭记忆判断。
- 安装主机上
flashrom --version正常输出。 - CH341A方案下
lsusb能看到设备;树莓派方案下GPIO连线已按文档接好。 git clone成功且git tag -l显示版本标签。- 目标设备上
flashrom -p internal --ifd -i bios能报告芯片型号,或明确报错说明无法内部访问(两者均视为有效结果,分别对应不同刷写路径)。
以上五项全部满足,即完成本案例的安装准备。下一步(后续案例)将涉及备份原始固件和首次外部刷写。