coreboot 为 Star Labs 笔记本构建固件:前置文件、defconfig 与完整编译流程
固件嵌入式操作系统驱动开发【免费下载链接】corebootRead-only mirror of https://review.coreboot.org/coreboot.git. Synced every hour. We dont handle Pull Requests.项目地址https://gitcode.com/gh_mirrors/co/coreboot点击查看免费下载本文以 Documentation/mainboard/starlabs/common/building.md 为核心系统讲解在 coreboot 源码树中为 Star LabsStar Labs / Star Labs SystemsStarBook、StarLite 系列笔记本构建可用固件镜像的完整流程涵盖各系列必需与可选的前置二进制文件、专属 blobs 仓库的使用方式以及make distclean、make defconfig、make三步构建命令的底层机制。读完本文你将能够依据机型与处理器型号选定正确的 defconfig正确放置 descriptor.bin、me.bin、ec.bin / ifwi.rom 等文件并独立产出可刷写的build/coreboot.rom镜像。一、适用机型与构建概况Star Labs 系列笔记本在 coreboot 主分支中由src/mainboard/starlabs/目录下的多个子目录支撑按产品线划分为StarBook 系列src/mainboard/starlabs/starbook/Mk IIIMk VIII 多代机型涵盖 Kaby LakeKBL、Comet LakeCML、Tiger LakeTGL、Alder LakeADL、Raptor LakeRPL/RPL-U、Alder Lake-NADL-N与 Meteor LakeMTL处理器StarLite 系列src/mainboard/starlabs/lite/Lite Mk IIIGemini Lake, GLK与 Lite Mk IVGemini Lake Refresh, GLKR此外还有独立系列目录adl/Horizon/Byte、cezanne/AMD Cezanne与starfighter/Meteor Lake / Raptor Lake。在 src/mainboard/starlabs/starbook/Kconfig.name 与 src/mainboard/starlabs/lite/Kconfig.name 中可以看到完整的板卡 Kconfig 符号例如BOARD_STARLABS_STARBOOK_ADLStar Labs StarBook Mk VI (i3-1220P and i7-1260P)与BOARD_STARLABS_LITE_GLKRStar Labs Lite Mk IV (N5030)。官方推荐的构建方式非常直接先用发行版自带的 defconfig 生成配置再执行编译。构建命令中最后一个标识的命名规则为“系列名_处理器代号”例如lite_glkr表示 StarLite 系列 Gemini Lake Refreshstarbook_adl表示 StarBook 系列 Alder Lake。二、构建前置准备各系列所需的二进制文件在正式编译之前必须准备若干由 Star Labs 提供的专有二进制文件。不同系列所需文件不同这是由各系列所采用的 Intel 平台打包方式传统 Flash Descriptor ME 分区或 Gemini Lake 的 IFWI 一体化镜像决定的。StarBook 系列必需文件用途descriptor.binIntel Flash Descriptor描述 SPI Flash 区域划分与访问权限me.binIntel Management Engine 固件ec.binITE 嵌入式控制器Embedded Controller固件StarLite 系列必需文件用途descriptor.binIntel Flash Descriptorifwi.romIFWIIntegrated Firmware Image完整镜像StarLite 系列之所以需要ifwi.rom而非独立的me.bin从源码中可以找到直接证据src/mainboard/starlabs/lite/Kconfig中定义了IFWI_FITC_CONFIG_PROFILE取值glk/glkr并在EC_STARLABS_ITELite Mk III与EC_STARLABS_NUVOTONLite Mk IV之间切换而 src/mainboard/starlabs/lite/variants/glkr/board.fmd 本身就是一份“Complete IFWI Map”完整标注了 Flash Descriptor、CSE 分区、uCode、Boot Partition 1/2 等区域。该文件注释明确说明coreboot 只需要知道嵌套在 OBBP 内部的 OBBOut-of-Band区域其余部分由 IFWI 镜像承载——这正是 Gemini Lake 平台不需要单独 ME 固件的原因。可选文件Logo.bmp开机 Logo 画面必须是 Windows 3.1 BMP 格式。该可选项在源码中的对应关系是src/mainboard/starlabs/common/Kconfig里的EDK2_BOOTSPLASH_FILE其默认值即指向3rdparty/blobs/mainboard/starlabs/Logo.bmp。blobs 仓库替代标准 3rdparty/blobs上述文件并非随 coreboot 主仓库分发而是统一维护在StarLabsLtd/blobs仓库中构建时以它替换标准的3rdparty/blobs子模块。各文件在 blobs 仓库内的存放位置与 coreboot 源码中的默认路径一一对应可在 src/mainboard/starlabs/common/Kconfig 中确认IFD_BIN_PATH默认3rdparty/blobs/mainboard/$(MAINBOARDDIR)/$(CONFIG_VARIANT_DIR)/flashdescriptor.binME_BIN_PATH默认3rdparty/blobs/mainboard/$(MAINBOARDDIR)/$(CONFIG_VARIANT_DIR)/intel_me.binEC_STARLABS_ITE_BIN_PATH默认3rdparty/blobs/mainboard/$(MAINBOARDDIR)/$(CONFIG_VARIANT_DIR)/ec.binEDK2_BOOTSPLASH_FILE默认3rdparty/blobs/mainboard/starlabs/Logo.bmp其中$(MAINBOARDDIR)为starlabs/starbook、starlabs/lite等主目录$(CONFIG_VARIANT_DIR)为adl、glkr等具体变体目录见 src/mainboard/starlabs/starbook/Kconfig 中VARIANT_DIR的定义也就是说每个机型变体都有自己专属的一整套二进制文件。使用 StarLabsLtd/blobs 时只需在 clone 子模块阶段指定该仓库地址coreboot 的构建系统便会按上述路径找到所有文件。三、三步构建命令详解官方文档给出的构建命令如下以 StarBook Alder Lake 为例make distclean make defconfig KBUILD_DEFCONFIGconfigs/config.starlabs_starbook_adl make1.make distclean清理构建环境distclean目标用于移除所有构建产物与生成的配置文件。查看 Makefile 第 94 行的目标说明其描述即为 “Remove build artifacts and config files”第 599 行显示它由clean clean-ctags clean-cscope distclean-payloads distclean-utils组合而成会连同样的 payload 与util/下各工具如 cbfstool的构建产物一并清理。在切换机型例如从 StarBook 换到 StarLite、切换 defconfig 或升级源码后执行distclean可以避免陈旧的.config与中间对象残留导致构建结果不可预期是保证每次构建“干净可复现”的第一步。2.make defconfig KBUILD_DEFCONFIG...从指定配置生成 .configdefconfig目标从指定文件生成build/下使用的.config。这里的关键变量是KBUILD_DEFCONFIG其机制在 Documentation/getting_started/kconfig.md 中有官方说明defconfig基于另一个配置文件生成当前配置第 48 行KBUILD_DEFCONFIGdefconfig 输入文件名默认值为configs/defconfig第 7778 行。由于 coreboot 的 Makefile 第 58 行已将默认值设为configs/defconfig因此必须显式传参覆盖为 Star Labs 提供的机型配置即make defconfig KBUILD_DEFCONFIGconfigs/config.starlabs_starbook_adl以 StarBook Mk VIAlder Lake为例configs/config.starlabs_starbook_adl会选中BOARD_STARLABS_STARBOOK_ADL进而由 src/mainboard/starlabs/starbook/Kconfig 自动推导出 32 MiB 的BOARD_ROMSIZE_KB_32768、SPI_FLASH_WINBOND、EC_STARLABS_MERLIN、SPD_CACHE_ENABLE、TPM_MEASURED_BOOT等一系列依赖项。defconfig目标在生成配置时还会调用olddefconfig见 Makefile 第 240 行为 Kconfig 树中新增的符号自动填入默认值从而保证配置完整可用。3.make执行实际编译运行make后构建系统依次编译 bootblock、romstage、ramstage、payload 等阶段并调用 cbfstool、ifdtool 等工具完成镜像组装最终产出可刷写的固件镜像build/coreboot.rom产物路径参见 Makefile 第 473 行的检查逻辑。四、各机型与处理器对应的 defconfig 一览官方文档中的 defconfig 命名遵循“config.starlabs_系列_处理器”规则当前各机型文档引用的配置如下系列处理器defconfig参考文档StarBook Mk VIAlder Lakeconfigs/config.starlabs_starbook_adlstarbook_adl.mdStarBook Mk VIRaptor Lakeconfigs/config.starlabs_starbook_rplstarbook_adl.mdStarBook Mk VIIAlder Lake-Nconfigs/config.starlabs_starbook_adl_nstarbook_adl_n.mdStarBook Mk VIIMeteor Lakeconfigs/config.starlabs_starbook_mtlstarbook_mtl.mdStarBookAMD Cezanneconfigs/config.starlabs_starbook_cznstarbook_czn.mdStarLiteGemini Lakeconfigs/config.starlabs_lite_glk见 src/mainboard/starlabs/lite/Kconfig.nameStarLite Mk IVGemini Lake Refreshconfigs/config.starlabs_lite_glkrlite_glkr.mdStarFighterMeteor Lake / Raptor Lakeconfigs/config.starlabs_starfighter_mtl/configs/config.starlabs_starfighter_rplstarfighter_mtl.md / starfighter_rpl.mdByte / HorizonAlder Lake / Twin Lakeconfigs/config.starlabs_byte_adl/configs/config.starlabs_byte_twl/configs/config.starlabs_adl_horizon_nbyte.md / adl_horizon.mdLiteAlder Lake-Nconfigs/config.starlabs_lite_adllite_adl.md需要说明的是当前镜像的configs/目录中暂未包含starlabs_*系列 defconfig 文件。如果你 clone 的仓库同样缺失它们可按照对应机型文档中给出的命令命令本身与本文示例一致仅 defconfig 文件名不同执行也可通过make menuconfig在 “Mainboard” 菜单下手动选择目标板卡VENDOR_STARLABS下的各BOARD_STARLABS_*符号见 src/mainboard/starlabs/Kconfig 与 src/mainboard/starlabs/Kconfig.name。五、源码结构理解构建系统如何组织 Star Labs 主板构建之所以能“一条命令出镜像”得益于src/mainboard/starlabs/目录清晰的分层结构系列目录starbook/、lite/、adl/、cezanne/、starfighter/各自携带Kconfig、Kconfig.name、board_info.txt、dsdt.asl与公共mainboard.c变体目录variants/每个变体如starbook/variants/adl、lite/variants/glkr包含devicetree.cb设备树配置、gpio.c引脚配置、romstage.c/ramstage.c、hda_verb.c音频 verb 表、data.vbtIntel 显卡 VBT、board.fmd以及启用 vboot 时的vboot.fmd共享代码common/src/mainboard/starlabs/common/下的 ACPIacpi/mainboard.asl、acpi/sleep.asl、FSP 参数fsp_params/、音频hda/、电源封顶powercap/powercap.c、触摸板touchpad/touchpad.c、SMBIOSsmbios/smbios.c、NVMe 电源时序nvme_seq.c、SMI 处理smihandler.c等模块由全系列共享各变体只需提供差异化配置。从board_info.txt还可确认刷写相关的基本事实StarBook 与 Lite 的board_info.txt均标注 “ROM socketed: n”Flash 芯片直接焊在板上不可插拔且 “Flashrom support: y”。结合各机型文档中的 Flash 规格表可知StarBook Mk VI 使用 32 MiB Winbond W25Q256.V对应 Kconfig 中的BOARD_ROMSIZE_KB_32768与SPI_FLASH_WINBONDStarLite Mk IV 使用 8 MiB Gigadevice GD25LQ64(B)对应BOARD_ROMSIZE_KB_8192与SPI_FLASH_GIGADEVICE均支持内外部刷写。六、构建完成后的下一步编译产物为build/coreboot.rom可直接交由flashrom等工具刷写从原厂 AMI 固件切换到 coreboot或反向切换涉及 BIOS Lock 处理与 fwupd 分支切换完整操作步骤见 fwupd 刷写指南各机型的具体硬件规格CPU、EC、GPU、内存、网络、存储、USB 接口等与 Flash 芯片规格表可在对应机型文档中查阅例如 StarBook Mk VIAlder Lake/Raptor Lake 与 StarLite Mk IVGemini Lake Refresh。小结为 Star Labs 笔记本构建 coreboot 固件的核心要点可以概括为三句话按系列备齐二进制文件StarBook 用 descriptor.bin me.bin ec.binStarLite 用 descriptor.bin ifwi.rom均来自 StarLabsLtd/blobs 并按3rdparty/blobs/mainboard/...路径放置、按“系列_处理器”选定 defconfig如configs/config.starlabs_starbook_adl、以make distclean → make defconfig → make三步完成构建最终得到可直接刷写的build/coreboot.rom。这些配置路径与构建机制都可以在上述提到的 Kconfig 与 Makefile 源码中得到逐项印证。赞分享固件嵌入式操作系统驱动开发【免费下载链接】corebootRead-only mirror of https://review.coreboot.org/coreboot.git. Synced every hour. We dont handle Pull Requests.项目地址https://gitcode.com/gh_mirrors/co/coreboot点击查看免费下载相关推荐StarBook Mk V 实战指南在 coreboot 中构建与刷写 Star Labs Tiger Lake 笔记本固件StarBook Mk V 实战指南在 coreboot 中构建与刷写 Star Labs Tiger Lake 笔记本固件 本文以 coreboot 官方文固件嵌入式操作系统驱动开发coreboot 实战StarFighter Mk IStar LabsMeteor Lake 笔记本的构建与烧录全流程coreboot 实战StarFighter Mk IStar LabsMeteor Lake 笔记本的构建与烧录全流程 本文围绕 coreboot 仓库固件嵌入式操作系统驱动开发coreboot 实战指南Star Labs LabTop Mk IVLabTop CML主板适配、编译与固件刷写解析coreboot 实战指南Star Labs LabTop Mk IVLabTop CML主板适配、编译与固件刷写解析 本文以 coreboot 仓库中固件嵌入式操作系统驱动开发上一篇Linux 内核内存序操作完全指南基于 LKMM ordering 文档的屏障、有序访问与无序访问分类解析下一篇Foundry Forge Lint 规则解析type-based-tautology 如何识别整数类型导致的恒真/恒假比较创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考