Ch3ckm4t3C1ph3r/Lenovo-Ideapad-320-14ISK-_Coreboot-Adaptation_

GitHub: Ch3ckm4t3C1ph3r/Lenovo-Ideapad-320-14ISK-_Coreboot-Adaptation_

该项目为联想 Ideapad 320-14ISK(NM-B241 主板)适配 Coreboot 开源固件,通过逆向工程嵌入式控制器并提供完整的编译、刷写和调试方案,实现对专有 BIOS/UEFI 的替代与 Intel ME 的清理。

Stars: 0 | Forks: 0

# Coreboot 适配 (Lenovo Ideapad 320-14ISK NM-B241 -> Board) :rabbit2: [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) ![GitHub branch status](https://img.shields.io/github/checks-status/Ch3ckm4t3C1ph3r/Lenovo-Ideapad-320-14ISK-_Coreboot-Adaptation_/main) ![Build Status](https://img.shields.io/badge/build-in_progress-yellow)
本仓库包含了我们通过逆向工程从仓库标题所示的笔记本中获取的信息,以及您可以编译、测试或修改的代码。此外,您还会找到预编译的文件,可直接用于刷写到芯片中。 此外,您还会找到一个名为 `board_info.txt` 的文件,其中保存了主板的基本信息以供参考。 您可以在此链接中找到有关数据手册、原理图、boardview(我推荐使用 FlexBV5 来打开 TVW 文件)和硬件信息文件的更多信息,这些均位于开源提供商的云文件仓库中:[Cloud File Space](https://eli.it.tabdigital.cloud/s/ci6C8onocRfkkLb) ## 规格 ### 目标芯片 此适配针对的特定主板所使用的芯片是 W25Q64JVSIQ(如果您想使用 ```flashrom``` 命令,应选择 W25Q64JV-.Q)。您可以在 `board_info.txt` 文件中找到此信息及更多内容。 该芯片支持 PREW 权限和 SPI 协议。 ### 主板处理器 Core (Inside) i5-6200U Skylake 架构 ### 使用的操作系统 Linux Mint.
但是,您可以使用任何基于 Linux 的操作系统(任何发行版)。:penguin: ### 烧录程序 ``` flashrom ``` ### 烧录工具 CH341A Pro Kit ### 特殊端口 您可以在[此文档](HARDWARE.md)中找到有关 UART、JTAG 和 LPC 端口的更多信息。 ## BIOS-UEFI BIN 文件 您会发现一个目录,其中保存了 BIOS-UEFI 芯片中的平面二进制文件(支持两种启动模式;可通过在 UI 菜单中启用适当的选项来模拟实模式传统启动)。 启用 HAP 位的 BIN 文件已使用 `me_cleaner.py` 脚本移除了大部分 Intel ME 内容,并设置了 HAP 位。 ## 逆向工程 :symbols: :microscope: :shipit: 我们通过获取 EC (嵌入式控制器) 芯片与处理器 (主机) 芯片之间通过 LPC 协议通信时的预期命令,对 EC 芯片进行了逆向工程。 **[仍在进行中]** ## 编译 :hammer_and_wrench: 如果您想修改代码以按需配置启动过程,本节提供了正确编译 C 代码以供您刷写到芯片中的步骤。 **1.** 克隆 Coreboot 仓库[^2] ``` git clone https://review.coreboot.org/coreboot.git ``` **2.** 将当前目录更改为 coreboot/src/mainboard/lenovo ``` cd coreboot/src/mainboard/lenovo ``` **3.** 创建相应的目录 ``` mkdir skl_ideapad320-14isk ``` **4.** 切换到创建的目录 ``` cd skl_ideapad320-14isk ``` **5.** 克隆本仓库 ``` git clone https://github.com/Ch3ckm4t3C1ph3r/Lenovo-Ideapad-320-14ISK-_Coreboot-Adaptation_.git ``` **6.** 切换到 Coreboot 根目录[^1] ``` cd ../../../../ ``` **7.** 使用 make 进行编译 ``` make ``` ## 启动过程架构 这里有一张启动过程图,使用 GRUB 作为主 payload,然后使用 seabios 或 tianocore,用于说明默认生成的 CBFS 的启动步骤。通过这种方式,您可以选择以传统模式或原生模式 (UEFI) 启动。保留了原有专有 BIOS 固件中选择启动模式的能力。 ``` --- config: theme: 'base' themeVariables: edgeLabelBackground: '#B3ADAD' --- flowchart LR; %% Definition of style (and class of style) of each element by id (or by class name) style cbfs fill:#f7f7f7,stroke:#000000,stroke-width:1px; classDef sbgStyle fill:#F7BB99,stroke:#8F6C59,stroke-width:1px classDef nodeStyle fill:#FF5D3B,stroke:#FF3008,stroke-width:1px classDef edgeStyle fill:#000000,stroke:#000000,stroke-width:1px subgraph cbfs[CBFS] direction LR %% Not publicly documented boot process subgraph sbg1[First Initialization Process] n1[Blobs] end n1[Blobs] e1@--> n2[Coreboot] subgraph sbg2[Coreboot Process] n2[Coreboot] end n2[Coreboot] e2@--> p1{GRUB} subgraph sbg3[First Payload] p1{GRUB} end p1{GRUB} e3@---->|The user selects the second payload from the menu|UNION((*)) e4@--> p2_1[SeaBIOS] & p2_2[TianoCore] subgraph sbg4[Second Payload] p2_1[SeaBIOS] & p2_2[TianoCore] end end %% Defining the members of each class class sbg1,sbg2,sbg3,sbg4 sbgStyle class n1,n2,p1,p2_1,p2_2,UNION nodeStyle class e1,e2,e3 edgeStyle ``` ## 配置启动过程以启用 UART 消息 :toolbox: 如果您想配置 Coreboot 以启用 UART 协议来查看主板的实时事件,以下是执行此操作的要求和步骤。

要求: * 0.1mm 的磁导线。 * 带有可更换烙铁头(推荐)和精细烙铁头(必需)的电烙铁。 * 基于 FT2232H 芯片 (FT2232HL) 的调试探针。 **[此处您将找到启用 UART 协议的说明]** ## 参考 [^1]: [Coreboot 文档](https://doc.coreboot.org/index.html). [^2]: [Coreboot 开发者指南](https://www.coreboot.org/developers.html).
标签:BIOS开发, CH341A, Coreboot, flashrom, Ideapad 320, Intel i5-6200U, JTAG, LPC, Skylake架构, SPI闪存, UART, UEFI, W25Q64JVSIQ, 主板原理图, 云资产清单, 固件适配, 客户端加密, 嵌入式系统, 底层安全, 开源固件, 硬件调试, 硬件黑客, 笔记本维修, 联想, 逆向工具, 逆向工程