centos7下 编译coreboot生成真机可用的bios固件, 并在真机上演示 (上篇)

看了国内的corebot相关文章以及b站的corebot视频, 大不部分都是编译 用于虚拟机(qemu)或者模拟器上运行的 很少有编译corebot项目 出可以再真机上使用的的 bios

本教程应该是全网最详细的了, 真机版的coreboot bios固件, 所以有点长, 希望对你有帮助  
#coreboot编译总说明文档链接
https://www.coreboot.org/Build_HOWTO#Requirements

文章为上下两大篇

上篇:  文章主要是 一些东西和资料以及步骤 并 编译出可以用于真机的 bios固件 coreboot.rom

下篇:  烧写bios到真机实验主板 并展示实际的测试结果

一. 需要的东西和资料如下

----------------------------------------------------
一台主电脑 编译出各种需要的"材料" 
一台目标实验真机电脑
BIOS FLASH烧录器(usb插口) + CH341A编程器软件
电脑pc诊断卡
电烙铁/热风枪用于焊下bios芯片 (因为我的实验主板有2个bios芯片,只需要一个防止备份覆盖)----------------------------------------------------
主电脑操作系统:  window7  (用于烧写bios)
主电脑下的虚拟机: centos7.9  (编译coreboot4.6用)----------------------------------------------------
要烧写的目标实验真机配置如下(价格都不高)主板:          GA-B75M-D3V     (Gigabyte/技嘉)  针脚数: LGA1155
cpu:           Core i3-2100   针脚数: LGA1155
cpu显卡:       cpu自带核/集显
内存条:        ZTSZ DDR3 1600Mhz 4G
主板bios芯片:  M/B两个芯片, 8脚SOIC-8 ,型号: MX25L6406E 容量: 8MByte----------------------------------------------------
//coreboot下 b75m-d3v主板编译出bios固件的 说明文档
https://www.coreboot.org/Board:gigabyte/ga-b75m-d3v

二. 说明下整体具体的步骤

1、使用centos操作系统, 下载coreboot源码, 把交叉编译器弄好,确认目录下make命令能在build目录里面生成coreboot.rom文件并且不报错2、将M/B 俩个bios芯片从主板下焊下来, 并留下来m bios芯片一个焊接到烧写板上 用于烧写使用3、使用 BIOS FLASH烧录器(usb插口) + CH341A编程器软件 从M bios芯片导出 bios.bin文件4、用coreboot-4.6\util\ifdtool下的 ifdtool工具分解bios.bin(一定要是主板bios导出的) 并生成desc.bin me.bin gbe.bin(gbe.bin有可能没有或不需要)5、在目标实验机linux系统下 导出核显vga bios文件6、使用make menuconfig或者菜单, 并在菜单选择主板和指定三个文件desc.bin me.bin gbe.bin(gbe.bin有的bios不需要)的位置, 设置显卡vbg bios文件位置 以及id7、make出coreboot.rom,用烧入器把rom刷到m bios芯片上, 并插到实验主板上配合电脑诊断卡进行测试

三. 开始实际操作

1. 下载coreboot源码, 交叉编译器弄好,确认make能在buile目录里面生成coreboot.rom文件且不报错

请注意 github,com因为被墙了. 所以需要用gitee代替
请先配置下编译固件环境,文章: centos7 配置coreboot编译环境 以及编译问题解决
https://mp.csdn.net/mp_blog/creation/editor/130425112

2、将M/B 俩个bios芯片从主板下焊下来, 并留下来m bios芯片一个焊接到烧写板上 用于烧写使用

使用电烙铁或者热风枪 拆bios芯片, 并用可拆卸的方式 焊接到烧写板上, 芯片引脚一定要 焊接正确

主板bios芯片:  M/B两个芯片, 8脚SOIC-8 ,型号: MX25L6406E  容量: 8MByte/64MBit

3、使用 BIOS FLASH烧录器(usb插口) + CH341A编程器软件 从M bios芯片导出 bios.bin文件
  芯片引脚和烧写板 一定要对上 要不然不能识别, CH341A编程器软件和使用教程 网上可以下载

4、用coreboot-4.6\util\ifdtool下的 ifdtool工具分解bios.bin(一定要是主板bios导出的) 并生成desc.bin me.bin gbe.bin(gbe.bin有可能没有或不需要)
#切换到coreboot目录 我用的是coreboot4.6 
#分析下导出的bios.bin文件
---------------------------------------cd /home/coreboot/util/ifdtool
make
./ifdtool -x bios.bin ---------------------------------------
#执行后的结果 会在目录下 生成几个文件
flashregion_0_flashdescriptor.bin 
flashregion_2_intel_me.bin
gbe.bin (有的bios会有有的没)

5、在目标实验机linux系统下 导出核显vga bios文件

#指导文章链接
https://foxi.buduanwang.vip/virtualization/pve/1602.html/
https://vt.wooomooo.com/?p=46813#这个是linux下 导出vga bios的
echo 1 > /sys/devices/pci0000:00/0000:00:02.0/rom
cat /sys/devices/pci0000:00/0000:00:02.0/rom > vgabios.bin
echo 0 > /sys/devices/pci0000:00/0000:00:02.0/rom#提醒下可以用 romheader/rom-parser 工具(可以百度或者goolge下看怎么安装)查看导出的vgabios.bin是否是正确的vga bios

6、使用make menuconfig或者菜单, 并在菜单选择主板和指定三个文件desc.bin me.bin gbe.bin(gbe.bin有的bios不需要)的位置, 设置显卡vbg bios文件位置 以及id

#注意: 你可以直接菜单操作 也可以去修改coreboot目录下的 .config文件
#descriptor.bin,me.bin,vgabios.bin, gbe.bin(有的话) 目录一定要正确1. ========================================================
Set "Mainboard" Gigabyte GA-B75M-D3V 
选择主板菜单下的 主板  gigabyte  型号 ga-b75m-d3v2. ========================================================
Under "Chipset"
have "Add Intel descriptor.bin file" point to descriptor.bin and"Add Intel ME/TXE firmware" point to me.bin Under "Device" have 选择芯片菜单并设置添加 Add Intel descriptor.bin 的文件目录地址 (就是我们用ifdtool生成的那几个文件)设置添加 Add Intel ME/TXE firmware 的文件目录地址3.========================================================"Add a VGA BIOS image" point to vgabios.bin and "VGA device PCI IDs" to contain your PCI address (8086,0152 in my case). 并设置添加vga bios 文件的目录地址 并设置pci id 我的主板vgabios pic_id默认是 8086,01524.========================================================Under "Payload" make sure SeaBIOS is added. 
设置payload菜单下的seabios  (默认就是这个,所有可以不用调整)5.========================================================
Save configuration and exit
保持配置并退出菜单

上面的4张图图分别是:

图1.设置主板和型号。图2,配置文件目录。

图3 配置vgabios目录。图4  目录下具体文件

5.1  导入第三方blobs (真机下需要)

去coreboot官网 或者 git上获取需要的 blobs库

#切换目录
cd /home/coreboot/3rdparty/blobs/
#用git下载
git clone https://gitee.com/coreboot/blobs#官网的话在这个网址下载
https://www.coreboot.org/downloads.html

6. make 出固件 coreboot.rom
#回到coreboot目录并make下
cd /home/coreboot
make

之后会执行各种东西, 最后的话出现如下文字 说明编译成功

到这里就生成了真机需要的bios 固件 coreboot.rom 了

下篇 将把固件写入到实验真机主板 bios芯片中,并插上诊断卡 进行实际测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/154990.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读——Large Selective Kernel Network for Remote Sensing Object Detection

目录 基本信息标题目前存在的问题改进网络结构另一个写的好的参考 基本信息 期刊CVPR年份2023论文地址https://arxiv.org/pdf/2303.09030.pdf代码地址https://github.com/zcablii/LSKNet 标题 遥感目标检测的大选择核网络 目前存在的问题 相对较少的工作考虑到强大的先验知…

深度学习基础知识 使用torchsummary、netron、tensorboardX查看模参数结构

深度学习基础知识 使用torchsummary、netron、tensorboardX查看模参数结构 1、直接打印网络参数结构2、采用torchsummary检测、查看模型参数结构3、采用netron检测、查看模型参数结构3、使用tensorboardX 1、直接打印网络参数结构 import torch.nn as nn from torchsummary im…

从裸机启动开始运行一个C++程序(七)

前序文章请看: 从裸机启动开始运行一个C程序(六) 从裸机启动开始运行一个C程序(五) 从裸机启动开始运行一个C程序(四) 从裸机启动开始运行一个C程序(三) 从裸机启动开始运…

Httpd(一)

介绍 httpd是apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。 特性 高度模块化:core modules DSO:Dynamic Shared Object 动态加载/卸载 MPM:multi-p…

【工作流引擎】Activiti的使用03

流程定义查询 // 获取部署时的信息ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService processEngine.getRepositoryService();ProcessDefinitionQuery processDefinitionQuery repositoryService.createProcessDe…

人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用

大家好,我是微学AI ,今天给大家介绍一下人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用,随着人工智能(AI)和深度学习技术的发展,大模型已经开始渗透到各个领域,包括数学教育。本文将详细介绍基于大模型在数学…

【ARM AMBA5 CHI 入门 12.1 -- CHI 链路层详细介绍 】

文章目录 CHI 版本介绍1.1 CHI 链路层介绍1.1.1 Flit 切片介绍1.1.2 link layer credit(L-Credit)机制1.1.3 Channel1.1.4 Port1.1. RN Node 接口定义1.1.6 SN Node 接口定义1.2 Channel interface signals1.2.1 Request, REQ, channel1.2.2 Response, RSP, channel1.2.3 Snoop…

MongoDB 笔记

1 insert 、create、save区别 insert: 主键不存在则正常插入;主键已存在,抛出DuplicateKeyException 异常 save: 主键不存在则正常插入;主键已存在则更新 insertMany:批量插入,等同于批量执行 insert create&#x…

PowerShell pnpm : 无法加载文件 C:\Users\lenovo\AppData\Roaming\npm\pnpm.ps1

1、右键点击【开始】,打开Windows PowerShell(管理员) 2、运行命令set-ExecutionPolicy RemoteSigned 3、根据提示,输入A,回车 此时管理员权限已经可以运行pnpm 如果vsCode还报该错误 继续输入 4、右键点击【开始】,打…

【gmail注册教程】手把手教你注册Google邮箱账号

手把手教你注册Google邮箱账号 写在前面: 要注意,注册Google邮箱必须要确保自己能够 科学上网,如果暂时做不到,请先进行相关学习。使用的手机号是大陆(86)的。 在保证自己能够科学上网后,在浏…

基于ChatGPT+词向量/词嵌入实现相似商品推荐系统

最近一个项目有个业务场景是相似商品推荐,给一个商品描述(比如 WIENER A/B 7IN 5/LB FZN ),系统给出商品库中最相似的TOP 5种商品,这种单纯的推荐系统用词向量就可以实现,不过,这个项目特点是商品库巨大,有…

上海亚商投顾:沪指探底回升 华为汽车概念股集体大涨

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日探底回升,早盘一度集体跌超1%,随后震荡回暖,深成指、创业板指…

idea 插件推荐(持续更新)

文章目录 Material Theme UIcodeium(建议有梯子的使用)Key Promoter XCodeGlanceRainbow BracketsMarkdown NavigatorRestfulToolkitString Manipulation Material Theme UI 谁不想拥有一款狂拽炫酷 吊炸天 的编码主题呢,给你推荐Material Theme UI Plugin Material Theme UI是…

地产三维实景vr展示的功能及特点

随着科技的不断发展,VR(虚拟现实)技术也越来越成熟。VR技术的广泛应用,已经逐渐渗透到各个领域,其中引人注目的就是虚拟展馆。虚拟展馆是一种利用VR技术构建的线上展示空间,让观众可以在家中就能参观展览,带来了极大地…

那些年,我们一起发现的Bug

一、背景 在这篇文章中,分享一些自己在工作中或别人发现的一些常见Bug,与大家共同成长~ 二、常见Bug分类 1、前后命名不一致 举个例子 接口入参中的名称是:aslrboot Java代码中使用的名称是:aslrBoot Codis中存储的名称是&…

[硬件基础]-双稳态多谐振荡器配置

双稳态多谐振荡器配置 文章目录 双稳态多谐振荡器配置1、概述2、双稳态多谐振荡器的内部运行原理 在上一篇文章中,我们深入了解了555定时器在单稳态模式下的内部工作原理。 如果您已经理解了上一篇文章,那么本文对您来说将会非常简单。 我们将研究 555 定…

京东数据接口|电商运营中数据分析的重要性

在电商运营中,数据分析是非常重要的一环,它可以帮助电商企业更好地了解市场、了解消费者、了解产品、了解销售渠道等各种信息,从而制定更为科学有效的运营策略,提高销售效益。 数据方面用户可以直接选择使用数据接口来获取&#…

95740-26-4|用于体内DNA合成的探针F-ara-EdU

产品简介:(2S)-2-Deoxy-2-fluoro-5-ethynyluridine,一种用于体内DNA合成的探针,其毒性比EdU和BrdU都小。当需要延长细胞存活时间和不受干扰的细胞周期进展时,非常适合进行代谢DNA标记。 CAS号:95740-26-4 分子式&…

AIGC|利用大语言模型实现智能私域问答助手

随着ChatGPT的爆火,最近大家开始关注到大语言模型(LLM)这个领域。像雨后春笋一样,国内外涌现出了很多LLM。作为开发者,我们通常会关注LLM各自擅长的领域和能力,然后思考如何利用它们的能力来解决某个场景或…

ARM day5

三盏灯流水 .text .global _start _start: 1.LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<4)STR R1,[R0] 1.LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<5)STR R1,[R0] 2.LDR R0,0X50006000LDR R1,[R0]BIC R1,R1,#(0X3<<20)ORR R1,R1,#(0X1<<…