找回密码
 注册
快捷导航
查看: 1907|回复: 27

[BIOS] 【原创】小白在ubuntu下编译coreboot(开源主板固件)

[复制链接] |自动提醒
阅读字号:

2071

回帖

58

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2011-12-13
发表于 2020-1-6 18:43:11| 字数 1,097| - 广东省中山市 联通 | 显示全部楼层 |阅读模式
本帖最后由 bwyciyv 于 2020-1-17 20:05 编辑

以编译x230的coreboot为例,建议物理机安装ubuntu18.04,
如果虚拟机编译相当吃力,太吃CPU...

1,首先安装编译环境与依赖,打开终端
    sudo apt-get install git gcc g++ gcc-multilib make ncurses-dev cmake iasl flex bison doxygen rename autoconf automake libtool libssl-dev bison build-essential curl flex git gnat-5 libncurses5-dev m4 zlib1g-dev autopoint unifont clang libfreetype6-dev


2,桌面新建个x230文件夹,进入文件夹鼠标右键打开终端,把coreboot源代码克隆到本地
    git clone https://review.coreboot.org/coreboot

   
   

3,构建工具链,进入coreboot文件夹,右键打开终端        
   make crossgcc-i386   这是个漫长的等待,像我x230都得等2小时以上...

   

4,进入coreboot/util/ifdtool/ 文件夹,右键打开终端      
     make

  

5,备份原厂BIOS来提取coreboot所需的blobs(主板网卡,CPU微码等信息),比如你在coreboot文件下开的终端,   最终会在coreboot文件夹下生成一个备份BIOS
     sudo flashrom -p internal -r x230.rom

     

6,复制备份出来的x230.rom到/coreboot/util/ifdtool/下
   开右键打开终端,提取blobs
    ./ifdtool -x x230.rom
   批量重命名blobs
    rename 's/.{14}//' *.bin

     

7,在coreboot/3rdparty/blobs/mainboard/下建立lenove文件夹,lenove下再建立个x230文件夹
   把提取到的bios.bin  flashdescriptor.bin  gbe.bin  intel_me.bin复制过来

     
    并把 flashdescriptor.bin重命名为descriptor.bin
              intel_me.bin重命名为me.bin

     

8,回到coreboot文件夹,右键终端   make nconfig
  以下选项勾选如图

  

















9, 考虑到通用性强,选择seabios为payload,windows系统与linux等可以即插即用,
    也支持U盘安装,按F6保存后,按F9退出,输入
    make
    开始编译,跑完可以在coreboot/build/下生成coreboot.rom





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
X230FHD(13.3 1920*1080) coreboot i7-3615QE 8G*2 三星1T+512G SSD

8160

回帖

90

积分

2万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2017-8-19
发表于 2020-1-6 18:45:40| 字数 7| - 上海市浦东新区 电信 | 显示全部楼层
好帖,建议加精
回复 支持 反对

使用道具 举报

2071

回帖

58

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2011-12-13
 楼主| 发表于 2020-1-6 18:50:25| 字数 53| - 广东省中山市 联通 | 显示全部楼层
QUOTE:

还没写完,
先吃个饭回头再写
X230FHD(13.3 1920*1080) coreboot i7-3615QE 8G*2 三星1T+512G SSD
回复 支持 反对

使用道具 举报

5030

回帖

40

积分

7130

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2003-12-3
银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)金牌荣誉勋章(注册20年以上会员)
发表于 2020-1-6 20:18:13| 字数 36| - 湖北省武汉市 电信 | 显示全部楼层
坑爹的 ,有这么好的网络.还要什么自行车.
我玩个 18.4,网络那叫一个慢.
verbal violentor
回复 支持 反对

使用道具 举报

128

回帖

5

积分

947

资产值

高级会员 Rank: 2Rank: 2

注册时间
2015-6-29
发表于 2020-1-7 08:31:26| 字数 125| - 上海市 电信 来自手机版 | 显示全部楼层
前x230 Coreboot+Tianocore payload用户路过...后来折腾不动了,Intel VBT在Windows下不完美,会掉屏。ACPI S3 Resume老是出问题 自己改来改去才修好。我给Upstream加了X230i的支持,现在还没收进。
X1 Extreme - 20MF: I7-8850H GTX1050Ti 32G 1T
E485 - 20KU: R7-2700U 16G 256G+1T (Cooling Mod)
X230
回复 支持 反对

使用道具 举报

2071

回帖

58

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2011-12-13
 楼主| 发表于 2020-1-10 09:33:16| 字数 155| - 广东省中山市 联通 | 显示全部楼层
QUOTE:
FlyGoat 发表于 2020-1-7 08:31
前x230 Coreboot+Tianocore payload用户路过...后来折腾不动了,Intel VBT在Windows下不完美,会掉屏。ACPI S ...

如果主windows真没必要折腾coreboot,
coreboot配合linux系统才是最完美的
X230FHD(13.3 1920*1080) coreboot i7-3615QE 8G*2 三星1T+512G SSD
回复 支持 反对

使用道具 举报

6

回帖

0

积分

71

资产值

入门会员 Rank: 1

注册时间
2018-12-18
发表于 2020-1-10 09:54:11| 字数 5| - 山东省青岛市 联通 | 显示全部楼层
技术大牛。
回复 支持 反对

使用道具 举报

232

回帖

23

积分

1万

资产值

白金会员 Rank: 3Rank: 3Rank: 3

注册时间
2007-7-25
发表于 2020-1-10 11:27:03| 字数 13| - 广东省深圳市 电信 | 显示全部楼层
强贴啊,玩CoreBoot   
回复 支持 反对

使用道具 举报

8160

回帖

90

积分

2万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2017-8-19
发表于 2020-10-17 14:43:33| 字数 214| - 上海市宝山区 电信 | 显示全部楼层
QUOTE:
bwyciyv 发表于 2020-1-6 18:43
以编译x230的coreboot为例,建议物理机安装ubuntu18.04,
如果虚拟机编译相当吃力,太吃CPU...

又重新拜读大神的帖子

正在一步步做W530的固件

话说coreboot是否支持扩展坞底座,还有UEFI启动呢?

Ps:你一开始那一条apt-get的命令里面好像gnat5在ubuntu仓库里已经没有了,我是apt-get install gnat来的,应该没问题吧
ThinkPad W520 TYPE-4284AV9
ThinkPad X200 T9550 OC 3.49GHz

回复 支持 反对

使用道具 举报

2071

回帖

58

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2011-12-13
 楼主| 发表于 2020-10-17 17:00:37| 字数 142| - 广东省深圳市 移动 来自手机版 | 显示全部楼层
QUOTE:
William2006 发表于 2020-10-17 14:43
又重新拜读大神的帖子

正在一步步做W530的固件

seabios与Tianocore都支持efi启动,我没折腾,如果不是纯linux系统为何折腾coreboot呢? coreboot+grub直接引导内核4秒进系统不香吗
回复 支持 反对

使用道具 举报

8160

回帖

90

积分

2万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2017-8-19
发表于 2020-10-17 20:20:42| 字数 129| - 上海市宝山区 电信 | 显示全部楼层
QUOTE:
bwyciyv 发表于 2020-10-17 17:00
seabios与Tianocore都支持efi启动,我没折腾,如果不是纯linux系统为何折腾coreboot呢? coreboot+grub直接 ...

我是因为为了破解W530的倍频限制,超频CPU
ThinkPad W520 TYPE-4284AV9
ThinkPad X200 T9550 OC 3.49GHz

回复 支持 反对

使用道具 举报

911

回帖

43

积分

7000

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2015-1-5
发表于 2020-10-17 22:07:28| 字数 144| - 北京市海淀区 联通 | 显示全部楼层
QUOTE:
William2006 发表于 2020-10-17 14:43
又重新拜读大神的帖子

正在一步步做W530的固件

要UEFI就只能用Tianocore了。
coreboot对ThinkPad的支持都还行,差不多所有功能都支持。对T440p的支持稍微差一点,不用某些功能也发现不了什么问题。
回复 支持 反对

使用道具 举报

8160

回帖

90

积分

2万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2017-8-19
发表于 2020-10-18 10:59:38| 字数 111| - 上海市宝山区 电信 | 显示全部楼层
QUOTE:
vimacs 发表于 2020-10-17 22:07
要UEFI就只能用Tianocore了。
coreboot对ThinkPad的支持都还行,差不多所有功能都支持。对T440p的支持稍 ...

tianocore是什么啊
ThinkPad W520 TYPE-4284AV9
ThinkPad X200 T9550 OC 3.49GHz

回复 支持 反对

使用道具 举报

911

回帖

43

积分

7000

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2015-1-5
发表于 2020-10-18 11:40:50| 字数 67| - 北京市海淀区 联通 | 显示全部楼层
QUOTE:

payload选择Tianocore.
回复 支持 反对

使用道具 举报

911

回帖

43

积分

7000

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2015-1-5
发表于 2020-10-18 11:43:24| 字数 74| - 北京市海淀区 联通 | 显示全部楼层
话说make crossgcc慢是因为楼主没有开多线程编译,make crossgcc-i386 CPUS=4并不会很慢,要不就是下tar包花的时间太长。
回复 支持 反对

使用道具 举报

8160

回帖

90

积分

2万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2017-8-19
发表于 2020-10-18 13:19:29| 字数 116| - 上海市宝山区 电信 来自手机版 | 显示全部楼层
QUOTE:
vimacs 发表于 2020-10-18 11:43
话说make crossgcc慢是因为楼主没有开多线程编译,make crossgcc-i386 CPUS=4并不会很慢,要不就是下tar包 ...

我虚拟机编译,好像30分钟就好了
回复 支持 反对

使用道具 举报

8160

回帖

90

积分

2万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2017-8-19
发表于 2020-10-18 14:53:13| 字数 51| - 上海市宝山区 电信 | 显示全部楼层
QUOTE:
vimacs 发表于 2020-10-18 11:40
payload选择Tianocore.

ok
ThinkPad W520 TYPE-4284AV9
ThinkPad X200 T9550 OC 3.49GHz

回复 支持 反对

使用道具 举报

2071

回帖

58

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2011-12-13
 楼主| 发表于 2020-10-18 19:05:10| 字数 129| - 广东省广州市天河区 电信 来自手机版 | 显示全部楼层
QUOTE:
vimacs 发表于 2020-10-18 11:43
话说make crossgcc慢是因为楼主没有开多线程编译,make crossgcc-i386 CPUS=4并不会很慢,要不就是下tar包 ...

下包要梯子, 所以慢,编译并不慢,i7-3615要20分左右
回复 支持 反对

使用道具 举报

911

回帖

43

积分

7000

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2015-1-5
发表于 2020-10-18 19:09:00| 字数 79| - 北京市海淀区 联通 | 显示全部楼层
QUOTE:
bwyciyv 发表于 2020-10-18 19:05
下包要梯子, 所以慢,编译并不慢,i7-3615要20分左右

如果下包慢的话我会考虑先到镜像站下好。
回复 支持 反对

使用道具 举报

2071

回帖

58

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2011-12-13
 楼主| 发表于 2020-10-18 19:12:35| 字数 223| - 广东省广州市天河区 电信 来自手机版 | 显示全部楼层
QUOTE:
William2006 发表于 2020-10-18 10:59
tianocore是什么啊

其实payload可以这么理解, coreboot分好几部分组成的, 像主板厂商设置,芯片的分类,电源管理,外设的支持等,如上面图的设置 你能看到, 你所以设置好后,最后就差引导系统那块了,payload就是引导系统的模块, coreboot上叫做负载,负载可以有几种方式来实现引导系统, 比如seabios,grub等等,这点coreboot做为开源来说很良心
回复 支持 反对

使用道具 举报

2071

回帖

58

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2011-12-13
 楼主| 发表于 2020-10-18 19:15:20| 字数 119| - 广东省广州市天河区 电信 来自手机版 | 显示全部楼层
QUOTE:
bwyciyv 发表于 2020-10-18 19:12
其实payload可以这么理解, coreboot分好几部分组成的, 像主板厂商设置,芯片的分类,电源管理,外设的支持等 ...

或者哪天有大神开发一个完美直接引导MacOS的也不好说
回复 支持 反对

使用道具 举报

2071

回帖

58

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2011-12-13
 楼主| 发表于 2020-10-18 19:16:48| 字数 71| - 广东省广州市天河区 电信 来自手机版 | 显示全部楼层
QUOTE:
vimacs 发表于 2020-10-18 19:09
如果下包慢的话我会考虑先到镜像站下好。

大神你好像是坛子最先研究coreboot的人
回复 支持 反对

使用道具 举报

8160

回帖

90

积分

2万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2017-8-19
发表于 2020-10-18 19:45:57| 字数 148| - 上海市宝山区 电信 | 显示全部楼层
QUOTE:
bwyciyv 发表于 2020-10-18 19:12
其实payload可以这么理解, coreboot分好几部分组成的, 像主板厂商设置,芯片的分类,电源管理,外设的支持等 ...

大神,再问下,我刚刚用flashrom备份本机BIOS为什么无法读取啊,好像是个什么error来着。机器W530
ThinkPad W520 TYPE-4284AV9
ThinkPad X200 T9550 OC 3.49GHz

回复 支持 反对

使用道具 举报

911

回帖

43

积分

7000

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2015-1-5
发表于 2020-10-20 19:52:50| 字数 166| - 北京市丰台区 联通 | 显示全部楼层
QUOTE:
William2006 发表于 2020-10-18 19:45
大神,再问下,我刚刚用flashrom备份本机BIOS为什么无法读取啊,好像是个什么error来着。机器W530

首先启动时内核命令行需要iomem=relaxed.
还有几点要注意:
1. 原厂固件是锁了ME区域的,要全部读出来只能用编程器
2. 你可以只读写BIOS区域
回复 支持 反对

使用道具 举报

8160

回帖

90

积分

2万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2017-8-19
发表于 2020-10-20 20:29:35| 字数 98| - 上海市宝山区 电信 | 显示全部楼层
QUOTE:
vimacs 发表于 2020-10-20 19:52
首先启动时内核命令行需要iomem=relaxed.
还有几点要注意:
1. 原厂固件是锁了ME区域的,要全部读出来 ...

这个命令行怎么设置?
ThinkPad W520 TYPE-4284AV9
ThinkPad X200 T9550 OC 3.49GHz

回复 支持 反对

使用道具 举报

911

回帖

43

积分

7000

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2015-1-5
发表于 2020-10-20 20:36:56| 字数 272| - 北京市丰台区 联通 | 显示全部楼层
QUOTE:
William2006 发表于 2020-10-20 20:29
这个命令行怎么设置?

在启动到GRUB的时候按e编辑内核命令行,在linux /.../vmlinuz... 那行加上 iomem=relaxed.

xx30 这系列可以用 1vyrain 的方法刷 coreboot,就是你们说的免编程器去白名单的方法,只是最后一步刷的不是去白名单的固件,而是 coreboot. 详细步骤可以参考官方文档[1].

但是出了问题要救砖还是要用编程器。

[1] https://doc.coreboot.org/mainboa ... ernal_flashing.html
回复 支持 1 反对

使用道具 举报

8160

回帖

90

积分

2万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2017-8-19
发表于 2020-10-20 20:39:19| 字数 124| - 上海市宝山区 电信 | 显示全部楼层
QUOTE:
vimacs 发表于 2020-10-20 20:36
在启动到GRUB的时候按e编辑内核命令行,在linux /.../vmlinuz... 那行加上 iomem=relaxed.

xx30 这系 ...

感谢指导

Ps:我加入你的那个什么wehack论坛了
ThinkPad W520 TYPE-4284AV9
ThinkPad X200 T9550 OC 3.49GHz

回复 支持 反对

使用道具 举报

50

回帖

5

积分

788

资产值

高级会员 Rank: 2Rank: 2

注册时间
2006-11-30
发表于 2023-12-30 22:19:11| 字数 7| - 山西省运城市 联通 | 显示全部楼层
学习,先标记下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2024-5-19 17:47 , Processed in 0.156960 second(s), 59 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|联系我们|专门网

返回顶部