第一次听到coreboot是在大约一年半多以前,当时因为工作需要进行x86的底层开发,无意中接触到coreboot项目。现在再次对其进行学习。一来让自己也学习一下x86的BIOS开发,二来算对微机原理的一个重新认识吧。

一、简述

coreboot前称为“LinuxBIOS”,是一个开源的软件项目,旨在替换BIOS或UEFI。大部分使用C语言编写,少部分使用汇编语言,遵循GPLv2协议。由于coreboot是直接初始化硬件的,所以它只支持有限的硬件平台和主板。 目前支持IA-32、x86-64、ARM、ARM64、MIPS和RISC-V。还支持SOC(system-on-a-chip),像Intel的baytrail、braswell、broadwell、skylake,还有nvidia的tegra。

二、设计

coreboot引入payload概念,在初始硬件初始化后就跳转到payload,比如SeaBIOS,再由SeaBIOS启动Linux内核或Windows 2000。payload也可以是单独的ELF程序,比如 iPXE、gPXE、Etherboot,由它们通过以太网启动Linux内核。

三、几个阶段

Bootblock阶段

访问flash,查找rom程序。

ROM阶段

初期内存和芯片级的初始化

RAM阶段

枚举设备,分配资源,创建ACPI表,SMM处理。

Payload阶段

coreboot支持的payloads十分众多,也很自由。可以是bootloader,比如SeaBIOS、GRUB 2(Linux常用的bootloader)、OpenBIOS、Tiano Core(一种UEFI的实现)。也可以是操作系统,比如Linux、FreeBSD、Windows、OpenSolaris。无论使用哪一种payload,都需要将其与coreboot程序存储到同一Flash芯片上,在coreboot编译时,会下载配置选择的payload源码,最后编译并生成coreboot.rom。默认的搭配为coreboot+SeaBIOS,——SeaBIOS也可以启动带有grub的Linux系统。如果打算实现UEFI,则可以使用coreboot+TianoCore。在本文发表时,coreboot最新git仓库主分支已经可以选择配置u-boot作为payload了(在2016年2月底提交)。使用qemu模拟器,可以进入到u-boot命令行。

四、参考资料

coreboot官网:

http://www.coreboot.org

coreboot代码仓库:
https://github.com/coreboot/coreboot

coreboot的wiki:
https://en.wikipedia.org/wiki/Coreboot

coreboot payload:

http://www.coreboot.org/Payloads

BIOS人论坛有coreboot子论坛:

http://www.biosren.com/forum-92-1.html

coreboot学习0:二度相逢是初识相关推荐

  1. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法: ...

  2. 巨头IPO光环下的嘀嗒出行: 起个大早二度递表 营收不足滴滴0.6%

    作者 | 观察团 来源 | 金融观察团 今年二季度,国内共享出行领域迎来了上市高峰期.6月11日,巨头滴滴终于递交了招股书,正式启动上市步伐,加入"共享出行第一股"的争夺战.市场预 ...

  3. Hadoop2.6.0+Linux Centos7+idea环境下:MapReduce二度好友推荐案例

    目录 一.问题描述 二.intellij idea中编写代码+打包项目 三.xftp中上传jar包到Linux 四.hadoop中准备输入数据+运行jar包+查看输出结果 一.问题描述 使用MapRe ...

  4. 用MXnet实战深度学习之二:Neural art

    用MXnet实战深度学习之二:Neural art - 推酷 题注:本来这是第三集的内容,但是 Eric Xie 勤劳又机智的修复了mxnet和cuDNN的协作问题,我就把这篇当作一个卷积网络Conv ...

  5. PyTorch框架学习十二——损失函数

    PyTorch框架学习十二--损失函数 一.损失函数的作用 二.18种常见损失函数简述 1.L1Loss(MAE) 2.MSELoss 3.SmoothL1Loss 4.交叉熵CrossEntropy ...

  6. 知识图谱学习(二):电商知识图谱

    知识图谱学习(二):电商知识图谱 --本文摘自机械工业出版社华章图书<阿里巴巴B2B电商算法实战>,参考文献请参见原书. 目录 知识图谱学习(二):电商知识图谱 前言 互联网创业潮 电商生 ...

  7. 第十四课 k8s源码学习和二次开发原理篇-调度器原理

    第十四课 k8s源码学习和二次开发原理篇-调度器原理 tags: k8s 源码学习 categories: 源码学习 二次开发 文章目录 第十四课 k8s源码学习和二次开发原理篇-调度器原理 第一节 ...

  8. 第八课 k8s源码学习和二次开发原理篇-KubeBuilder使用和Controller-runtime原理

    第八课 k8s源码学习和二次开发原理篇-KubeBuilder使用和Controller-runtime原理 tags: k8s 源码学习 categories: 源码学习 二次开发 文章目录 第八课 ...

  9. 图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)

    图机器学习(GML)&图神经网络(GNN)原理和代码实现(PGL)[前置学习系列二] 上一个项目对图相关基础知识进行了详细讲述,下面进图GML networkx :NetworkX 是一个 P ...

最新文章

  1. VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
  2. i2c-tools dected -l
  3. 哈尔滨理工大学ACM集训第二周总结
  4. 利用jQuery实现回收站删除效果
  5. 6、Gerrit插件
  6. MikuMikuShaders
  7. 关于ML.NET v0.7的发布说明
  8. GDCM:DataElementValue作为SQ的测试程序
  9. SUBSTR函数的使用
  10. 社会工程学***的八种常用方法
  11. 中西造园水法浅比【ZZ】
  12. vue中使用vuex结合sessionStorage做的登录功能
  13. docker︱docker run的解读与一键部署
  14. AI模型的大一统!浅析微软的BEIT3:多模态领域乱杀的十二边形战士
  15. 虚拟机桥接模式网络配置
  16. Android禁用系统更新
  17. 《C Primer Plus》—第九章:函数(指针间接,函数及其定义方式,ANSI C原型,递归,函数调用的底层原理)
  18. 豆瓣电影评论爬取+情感分析+词云
  19. 综合项目 旅游网 【4.旅游线路名称查询-参数传递】
  20. Jenkins Git Changelog Plugin

热门文章

  1. linux服务器搭建_Linux下搭建FTP服务器笔记
  2. 从MySQL得到最大的性能
  3. 尝试一种新的生命状态
  4. 三星副会长李在镕启程赴美
  5. LG能源解决方案去年年底已开始研发磷酸铁锂电池
  6. 芯片短缺波及国内车市 5月国内汽车销量下降3.1%
  7. iPhone 12 mini被质疑锁屏触摸不灵
  8. 陌陌直播公益课复课 带乡村孩子“打卡”丝绸之路
  9. 苹果CarPlay新功能上线,老司机们更方便了
  10. 森海塞尔Momentum 2无线蓝牙耳机发布:首次加入主动降噪