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

news2024/11/18 3:19:01

看了国内的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文件位置 以及id

7、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-d3v

2. ========================================================
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,0152


4.========================================================
 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.coloradmin.cn/o/1082853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

寒冬之下,互联网金融的数据化建设心得

引言: 在当前经济寒冬下,互联网金融行业面临着巨大的竞争压力和市场变化。为了保持竞争优势,不断创新和适应市场需求,互联网金融企业需要进行数据化建设。 本文将从策略规划、数据采集与整合、数据挖掘与分析、风险控制等方面&a…

数学建模——确定性时间序列分析方法

介绍 将预测对象按照时间顺序排成一组序列,称为时间序列。从时间序列过去的变化规律,推断今后变化的可能性及变化趋势、变化规律,这就是时间序列预测法。 时间序列模型,其实也是一种回归模型。其基本原理是,一方面承认…

windows Vscode 连接 虚拟机,超详细,含免密免ip配置 以 linux 虚拟机为例

我们这里使用 ssh 进行连接,不了解 ssh 的也没关系,感兴趣的可以自己了解一下。 我的虚拟机是 Ubuntu20.04,如果出现与 Centos 不一样的操作可以自行替换。 (应该不会有??) 一 . 登录虚拟机~&a…

植物转录因子研究策略及方法

植物转录因子研究 转录因子(TF)是一类具有特殊结构的蛋白质,也称为反式作用因子。通过与靶基因启动子区域的顺式作用元件特异性结合,行使调控基因表达的功能。典型的转录因子一般具有4个功能结构域:DNA结合区&#xf…

pyqt 划线标注工具,可用于车道线标注

目录 效果图: pyqt代码: opencv划线: 效果图: pyqt代码: import osfrom PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QPushButton, QLabel from PyQt5.QtGui import QPainter, QPen, QColor, QImage, QPixmap from PyQt5.QtCore import Qt, QPoint i…

ubuntu编写makefile编译c++程序

常见的编译工具 gcc/gvisual cclang 编译一个简单的程序 main.cpp #include <iostream>int main() {std::cout << "hello world" << std::endl;return 0; }gcc 编译 源文件&#xff08;.cpp&#xff09;编译生成目标文件&#xff08;.o&#xf…

Python 封装一个自己的队列,切片? 深度copy ? 线程安全?

文章大纲 简介,Python 中的几种队列queue.queue 和 collections.deque 的区别collections 双端队列 deque 的封装队列是否可以支持深度 copy ?线程安全 的 queue参考文献和学习路径简介,Python 中的几种队列 https://docs.python.org/3/library/queue.html queue.queue 和 …

探究美颜算法:直播实时美颜SDK的集成和定制

下文小编将于大家一同探讨美颜算法&#xff0c;主要是直播实时美颜SDK的集成和定制方向。 一、直播实时美颜SDK的作用 直播实时美颜SDK是一种软件开发工具包&#xff0c;为开发者提供了将美颜功能集成到他们的直播应用中的手段。它可以用于各种应用&#xff0c;包括视频聊天、…

【苍穹外卖 | 项目日记】第三天

前言&#xff1a; 今天状态不错&#xff0c;kuku就是写接口&#xff0c;很舒服 目录 前言&#xff1a; 今日完结任务&#xff1a; 今日收获&#xff1a; 杂项知识点&#xff1a; 总结&#xff1a; 今日完结任务&#xff1a; 实现了新增菜品接口实现了菜品分页查询接口实现…

MISC驱动

misc 的意思是混合的杂项的&#xff0c;所以misc 设备驱动也叫做杂项设备驱动。它的注册跟使用比较的简单&#xff0c;所以比较适用于功能简单的设备。正因为简单&#xff0c;所以它通常嵌套在 platform 总线驱动中&#xff0c;配合总线驱动达到更复杂&#xff0c;多功能的效果…

动态列的excel导出

动态列的excel导出 由于上次写的动态列的excel导入时挖下的坑。 上一篇在这里&#xff1a;动态列的excel导入 喝水不忘挖井人&#xff0c;至于乱挖井&#xff0c;咱们先不说好不好吧&#xff0c;万一砸到了花花草草也不好啊&#xff0c;所以说啊&#xff0c;挖坑就得用军工铲…

MySQL数据库技术笔记(4)

关系型数据库需要使用设计范式&#xff1a; 第一范式&#xff1a;遵从原子性&#xff0c;属性不可再分&#xff0c;数据库表的每一列都是不可分割的基本数据项&#xff0c;同一列中不能有多个值。 例如&#xff1a;需要创建一张地址表&#xff0c;存储地址信息。将地址信息划…

UE4和C++ 开发-UE4怎么删除C++类

1 关闭visual stdio&#xff0c;关闭UE4引擎。 2 打开你的项目文件夹。找到你要删除的.h,.cpp文件删除。 3、删除Binaries文件夹。 4 右击.uproiect文件&#xff0c;点击Generate Visual Studio project files. 5 双击.uproiect文件,忽略警告打开就看到已经删除了想要删除的C类…

区块链加密虚拟货币交易平台安全解决方案

区块链机密货币交易锁遭入侵&#xff0c;安全存在隐患。使用泰雷兹Protect server HSM加密机&#xff0c;多方位保护您的数据&#xff0c;并通过集中化管理&#xff0c;安全的存储密钥。 引文部分&#xff1a; 损失7000万美元!黑客入侵香港区块链加密货币交易所 2023年9月&…

Qt 窗口与部署应用程序发布包 day6

Qt 窗口与部署应用程序发布包 day6 QWidget QWidget是所有可视控件的基类&#xff0c;每个控件都是矩形按照Z轴顺序排序如果控件没有父控件&#xff0c;则称为窗口 设置exe窗口图标 在项目文件中新建一个文件夹Resource&#xff0c;来存放图标文件 第一种方法 用绝对路…

java过滤非中英文的特殊字符,四字节表情字符

过滤非中英文的特殊字符 /*** 过滤特殊字符* param str str* return String*/ public static String filterStr(String str) {if (StringUtils.isBlank(str)) {return str;}String regEx "[~!#$%^&*()|{}:;,\\[\\].<>/?~&#xff01;#&#xffe5;%……&…

源码部署lamt架构

源码部署lamt架构 lamt由apache&#xff0c;mysql&#xff0c;tomcat三者组成 文章目录 源码部署lamt架构1.准备工作1.1.配置yum源&#xff0c;关闭防火墙和selinux1.2.拉取相应源码包 2.安装apache3.安装mariadb4.安装tomcat 1.准备工作 1.1.配置yum源&#xff0c;关闭防火墙…

“Python+”集成技术高光谱遥感数据处理与机器学习深度应用

高光谱遥感数据处理的基础、python开发基础、机器学习和应用实践。重点解释高光谱数据处理所涉及的基本概念和理论&#xff0c;旨在帮助学员深入理解科学原理。结合Python编程工具&#xff0c;专注于解决高光谱数据读取、数据预处理、高光谱数据机器学习等技术难题&#xff0c;…

SpringBoot配置输出的日志文件

SpringBoot配置输出的日志文件 1、无需导入依赖&#xff0c;因为我们创建springboot时&#xff0c;导入的关于springboot的依赖中已经包含了。 2、我们在项目的resources 资源文件下创建logback.xml文件&#xff0c;文件内容如下 作用&#xff1a; 如果是开发时启动的项目&a…

Android Native 开发 要点记录

Android Studio 中写 C 代码 android studio创建C项目_android studio native c-CSDN博客 项目配置参考 【CMake】CMakeLists.txt的超傻瓜手把手教程&#xff08;附实例源码&#xff09;_【cmake】cmakelists.txt的超傻瓜手把手教程(附实例源码)-CSDN博客 CMakeLists.txt 讲解…