- 固件
- 嵌入式
- 操作系统
- 驱动开发
【免费下载链接】coreboot
Read-only mirror of https://review.coreboot.org/coreboot.git. Synced every hour. We don't handle Pull Requests.
本篇指南以 coreboot 仓库中 Star Labs 系列主板官方文档 Documentation/mainboard/starlabs/common/flashing.md 为骨架,系统讲解如何在 Star Labs 笔记本上通过fwupd(Linux Vendor Firmware Service 客户端)在 AMI 原厂固件与 coreboot 固件之间安全切换:包括刷写前的软硬件前置条件、fwupd 的安装与版本检查、原厂 BIOS 中 BIOS Lock 的关闭方法,以及fwupdmgr switch-branch的完整操作流程。读完本文,你将能够在支持的 Linux 发行版上独立完成 Star Labs 机型(StarBook、StarLite、Byte、LabTop 等)的固件分支切换,并理解 BIOS Lock 在 coreboot 侧(SMM 启动介质写保护)的对应实现。
适用范围:哪些 Star Labs 机型支持 fwupd 刷写
本指南针对 Star Labs(Star Labs Systems)系列笔记本。在 coreboot 源码树中,这些主板的代码集中位于 src/mainboard/starlabs/ 目录,按处理器平台划分了多个系列目录:adl(Alder Lake/Twin Lake,对应 Byte Mk II/Mk III、StarLite Mk V、StarBook Horizon)、cezanne(AMD Ryzen 5800U,StarBook Mk VI)、lite(Gemini Lake 系列 StarLite)、starbook(Kaby Lake、Comet Lake、Tiger Lake、Alder Lake、Raptor Lake、Meteor Lake 各代 StarBook)以及starfighter(StarFighter Mk I/Mk II)。
每个主板型号的独立文档都会在文末引用这份统一的刷写说明,例如 Byte Mk II 文档、StarBook Mk V 文档、StarBook Mk VI (Cezanne) 文档 中均有 "Please see here for instructions on how to flash with fwupd" 的指向。因此,本文所述流程对上述全部机型通用。
刷写前置条件
开始刷写前,必须逐项满足以下条件,缺一不可:
| 条件 | 说明 |
|---|---|
| fwupd 版本 | 1.5.6 或更高版本(fwupdmgr --version可查看) |
| 电池电量 | 必须至少充至30% |
| 电源连接 | 充电器必须已连接(USB-C 或 DC Jack 均可) |
| BIOS Lock | 必须处于Disabled状态(在 AMI 原厂固件设置中关闭) |
| 操作系统 | 受支持的 Linux 发行版:Ubuntu 20.04+、Linux Mint 20.1+、elementaryOS 6+、Manjaro 21+ |
其中电池电量与充电器两项是刷写安全性的硬性要求——固件刷写过程中若因断电中断,可能导致引导介质损坏。后续的"切换分支"章节还会再次强调重启期间不得中断电源。
检查并安装 fwupd
检查版本
在终端中执行:
fwupdmgr --version输出中会显示版本号。1.5.6 或更高版本即可正常刷写。下图是文档中给出的版本检查示例:
Ubuntu / Linux Mint / elementaryOS:通过 PPA 安装
在 Ubuntu 20.04、Ubuntu 20.10、Linux Mint 20.1 与 elementaryOS 6 上,fwupd 1.5.6 可从 Star Labs 维护的 PPA 安装:
sudo add-apt-repository ppa:starlabs/ppa sudo apt update sudo apt install fwupdManjaro:通过 pacman 安装
在 Manjaro 上安装 fwupd 与 Star Labs 定制的 flashrom:
sudo pacman -Sy fwupd-git flashrom-starlabs注意fwupd-git是 git 构建包、flashrom-starlabs是 Star Labs 的 flashrom 分支——这正是该发行版需要两条软件包的原因。
其他发行版
对于不在上述列表中的发行版,官方文档说明:一旦 fwupd 1.5.6 在这些发行版上可用,会补充相应安装说明。如果你使用的发行版目前不满足条件,仍然可以通过Live USB方式安装 coreboot(即先启动一个 Linux 应急环境,再从外部刷写)。相关构建与刷写资源可参考 Star Labs 构建指南。
关闭 BIOS Lock
为什么必须关闭
从标准 AMI(American Megatrends Inc.)固件切换到 coreboot 时,必须先关闭 BIOS Lock。原厂固件开启 BIOS Lock 后,启动介质(SPI Flash)被硬件级写保护,内部刷写工具将无法写入新固件,因此这是 fwupd 刷写能够成功的前提。
操作步骤
- 先关闭你的LabTop(Star Labs 机型),随后按住
F2键开机,进入 BIOS 设置界面。 - BIOS 设置加载后,使用方向键切换到Advanced选项卡,可以看到BIOS Lock选项。
- 按
Enter键,将该设置从Enabled改为Disabled。
- 按
F10键执行Save & Exit(保存并退出),再按Enter确认。
coreboot 侧的对应实现:SMM 启动介质写保护
值得说明的是,BIOS Lock 在 coreboot 固件中并非简单消失,而是由 coreboot 以另一套机制重新实现。在 src/mainboard/starlabs/common/Kconfig 的 "Star Labs Settings" 菜单中:
BOOTMEDIA_SMM_BWP在启用 Intel SMM 公共代码块(SOC_INTEL_COMMON_BLOCK_SMM)时默认开启;BOOTMEDIA_SMM_BWP_RUNTIME_OPTION同样默认开启,使该写保护可以在运行时配置。
在 Intel 公共代码块中,src/soc/intel/common/block/include/intelblocks/cfr.h 以 CFR(coreboot for R,运行时配置)对象的形式声明了bios_lock选项,其界面名称正是BIOS Lock,帮助文本明确写道:
"Enable BIOS write protection in SMM. When enabled, the boot media (SPI flash) is only writable in System Management Mode, preventing unauthorized writes through the internal controller."
也就是说,原厂 AMI 固件下的 BIOS Lock 由厂商 UEFI 固件管理;刷入 coreboot 后,Star Labs 主板会在 coreboot 固件中重新启用 SMM 模式下的 SPI Flash 写保护,防止操作系统或恶意软件通过内部控制器直接改写固件——这与 fwupd 刷写时经授权的固件更新流程相互配合,既保证可刷写,又维持运行时的写保护。
切换固件分支(Switch Branch)
Switching branch(切换分支)指在AMI 固件与coreboot 固件之间互相切换。Star Labs 通过 fwupd/LVFS 同时发布两个固件分支,用户可随时在两者之间往返切换,并持续接收当前分支的更新。
第一步:刷新固件元数据
首先检查是否有新的固件文件:
fwupdmgr refresh --force--force参数强制刷新元数据缓存,确保拿到最新的固件描述与版本信息。
第二步:切换分支
执行:
fwupdmgr switch-branchfwupd 会列出可用分支,输入对应的数字序号进行选择:
随后会提示确认:按y继续,按n取消。
第三步:重启并等待
切换完成后,fwupd 会提示你重启。下一次重启可能耗时长达 5 分钟——这是固件刷写与验证过程,期间:
- 不要中断重启过程;
- 不要断开充电器。
一旦重启完成,切换即告成功,此后你会持续收到当前所使用分支的更新。你可以在任何时候再次执行上述流程切换分支,双向往返(AMI → coreboot、coreboot → AMI)均受支持。
刷写与构建的仓库资源
闪存规格
Star Labs 各机型在各自主板文档中以表格给出固件闪存规格,刷写前可对照确认。例如(来源:Byte Mk II、StarBook Mk V、StarBook Mk VI):
| 属性 | 常见取值 |
|---|---|
| Socketed flash(可插拔闪存) | no(焊死,非插拔式) |
| Vendor(厂商) | Winbond |
| Model(型号) | W25Q256.V / W25Q256JW(Intel 平台,32 MiB)、W25Q128JW(Cezanne 平台,16 MiB) |
| Package(封装) | SOIC-8 |
| Internal flashing(内部刷写) | yes |
| External flashing(外部刷写) | yes |
所有机型均支持内部刷写与外部刷写,这解释了 fwupd 内部刷写方案可行,同时保留外部编程器(如 SOIC-8 夹具)作为应急与恢复手段。
自行构建 coreboot 固件
如果你想自行构建固件(而非使用 fwupd 分发的预构建镜像),Star Labs 构建指南 给出的流程为:
make distclean make defconfig KBUILD_DEFCONFIG=configs/config.starlabs_starbook_adl make其中config.starlabs_*需替换为对应机型配置名(如config.starlabs_byte_adl、config.starlabs_starbook_czn等)。构建前还需准备 Intel Flash Descriptor(descriptor.bin)、Intel Management Engine 固件(me.bin)、ITE 嵌入式控制器固件(ec.bin)等二进制文件(AMD Cezanne 平台则需要 PSP/SMU 固件,详见 starbook_czn.md),这些文件来自 Star Labs 的 blobs 仓库,并会被 coreboot 从3rdparty/blobs/mainboard/starlabs/<variant>/下读取。构建完成后,即可再通过本文所述 fwupd 流程或外部刷写方式写入设备。
常见问题与注意事项
- 版本门槛:fwupd 低于 1.5.6 时无法正常完成分支切换,请先升级或改走 Live USB 方案。
- BIOS Lock 必须先行关闭:在 AMI 固件下执行刷写前漏关 BIOS Lock,会导致写入失败或需要外部编程器恢复。
- 电源保障:刷写及随后的最长 5 分钟重启期间,务必保持充电器连接、电池电量不低于 30%。
- 分支可随时切换:AMI 与 coreboot 两条分支可以反复切换,且各自独立接收后续更新,不存在"一次切换、无法回头"的限制。
本文操作步骤与命令均以 Documentation/mainboard/starlabs/common/flashing.md 为准;涉及 coreboot 固件侧实现的说明可进一步查阅 src/mainboard/starlabs/common/Kconfig 与 src/soc/intel/common/block/include/intelblocks/cfr.h。
- 固件
- 嵌入式
- 操作系统
- 驱动开发
【免费下载链接】coreboot
Read-only mirror of https://review.coreboot.org/coreboot.git. Synced every hour. We don't handle Pull Requests.
相关推荐
StarBook Mk V 实战指南:在 coreboot 中构建与刷写 Star Labs Tiger Lake 笔记本固件
StarBook Mk V 实战指南:在 coreboot 中构建与刷写 Star Labs Tiger Lake 笔记本固件 本文以 coreboot 官方文
固件嵌入式操作系统驱动开发coreboot 构建与刷写 StarFighter Mk I:Star Labs Raptor Lake 平台的硬件规格、Flash 布局与 fwupd 分支切换详解
coreboot 构建与刷写 StarFighter Mk I:Star Labs Raptor Lake 平台的硬件规格、Flash 布局与 fwupd 分支
固件嵌入式操作系统驱动开发Star Labs Lite Mk III(StarLite Mk III)coreboot 实战指南:Gemini Lake 板级配置、IFWI 固件与 fwupd 刷写
Star Labs Lite Mk III(StarLite Mk III)coreboot 实战指南:Gemini Lake 板级配置、IFWI 固件与 fw
固件嵌入式操作系统驱动开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考