bwyciyv 发表于 2020-1-6 18:43

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

本帖最后由 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.binflashdescriptor.bingbe.binintel_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





William2006 发表于 2020-1-6 18:45

好帖,建议加精

bwyciyv 发表于 2020-1-6 18:50

William2006 发表于 2020-1-6 18:45
好帖,建议加精

还没写完,
先吃个饭回头再写

jackmacc 发表于 2020-1-6 20:18

坑爹的 ,有这么好的网络.还要什么自行车.
我玩个 18.4,网络那叫一个慢.

FlyGoat 发表于 2020-1-7 08:31

前x230 Coreboot+Tianocore payload用户路过...后来折腾不动了,Intel VBT在Windows下不完美,会掉屏。ACPI S3 Resume老是出问题 自己改来改去才修好。我给Upstream加了X230i的支持,现在还没收进。

bwyciyv 发表于 2020-1-10 09:33

FlyGoat 发表于 2020-1-7 08:31
前x230 Coreboot+Tianocore payload用户路过...后来折腾不动了,Intel VBT在Windows下不完美,会掉屏。ACPI S ...
如果主windows真没必要折腾coreboot,
coreboot配合linux系统才是最完美的

sdusdu 发表于 2020-1-10 09:54

技术大牛。

ltm163 发表于 2020-1-10 11:27

强贴啊,玩CoreBoot   

William2006 发表于 2020-10-17 14:43

bwyciyv 发表于 2020-1-6 18:43
以编译x230的coreboot为例,建议物理机安装ubuntu18.04,
如果虚拟机编译相当吃力,太吃CPU...



又重新拜读大神的帖子

正在一步步做W530的固件

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

Ps:你一开始那一条apt-get的命令里面好像gnat5在ubuntu仓库里已经没有了,我是apt-get install gnat来的,应该没问题吧

bwyciyv 发表于 2020-10-17 17:00

William2006 发表于 2020-10-17 14:43
又重新拜读大神的帖子

正在一步步做W530的固件


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

William2006 发表于 2020-10-17 20:20

bwyciyv 发表于 2020-10-17 17:00
seabios与Tianocore都支持efi启动,我没折腾,如果不是纯linux系统为何折腾coreboot呢? coreboot+grub直接 ...

我是因为为了破解W530的倍频限制,超频CPU

vimacs 发表于 2020-10-17 22:07

William2006 发表于 2020-10-17 14:43
又重新拜读大神的帖子

正在一步步做W530的固件


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

William2006 发表于 2020-10-18 10:59

vimacs 发表于 2020-10-17 22:07
要UEFI就只能用Tianocore了。
coreboot对ThinkPad的支持都还行,差不多所有功能都支持。对T440p的支持稍 ...

tianocore是什么啊

vimacs 发表于 2020-10-18 11:40

William2006 发表于 2020-10-18 10:59
tianocore是什么啊

payload选择Tianocore.

vimacs 发表于 2020-10-18 11:43

话说make crossgcc慢是因为楼主没有开多线程编译,make crossgcc-i386 CPUS=4并不会很慢,要不就是下tar包花的时间太长。

William2006 发表于 2020-10-18 13:19

vimacs 发表于 2020-10-18 11:43
话说make crossgcc慢是因为楼主没有开多线程编译,make crossgcc-i386 CPUS=4并不会很慢,要不就是下tar包 ...

我虚拟机编译,好像30分钟就好了

William2006 发表于 2020-10-18 14:53

vimacs 发表于 2020-10-18 11:40
payload选择Tianocore.

ok

bwyciyv 发表于 2020-10-18 19:05

vimacs 发表于 2020-10-18 11:43
话说make crossgcc慢是因为楼主没有开多线程编译,make crossgcc-i386 CPUS=4并不会很慢,要不就是下tar包 ...

下包要梯子, 所以慢,编译并不慢,i7-3615要20分左右

vimacs 发表于 2020-10-18 19:09

bwyciyv 发表于 2020-10-18 19:05
下包要梯子, 所以慢,编译并不慢,i7-3615要20分左右

如果下包慢的话我会考虑先到镜像站下好。

bwyciyv 发表于 2020-10-18 19:12

William2006 发表于 2020-10-18 10:59
tianocore是什么啊

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

bwyciyv 发表于 2020-10-18 19:15

bwyciyv 发表于 2020-10-18 19:12
其实payload可以这么理解, coreboot分好几部分组成的, 像主板厂商设置,芯片的分类,电源管理,外设的支持等 ...

或者哪天有大神开发一个完美直接引导MacOS的也不好说

bwyciyv 发表于 2020-10-18 19:16

vimacs 发表于 2020-10-18 19:09
如果下包慢的话我会考虑先到镜像站下好。

大神你好像是坛子最先研究coreboot的人

William2006 发表于 2020-10-18 19:45

bwyciyv 发表于 2020-10-18 19:12
其实payload可以这么理解, coreboot分好几部分组成的, 像主板厂商设置,芯片的分类,电源管理,外设的支持等 ...

大神,再问下,我刚刚用flashrom备份本机BIOS为什么无法读取啊,好像是个什么error来着。机器W530

vimacs 发表于 2020-10-20 19:52

William2006 发表于 2020-10-18 19:45
大神,再问下,我刚刚用flashrom备份本机BIOS为什么无法读取啊,好像是个什么error来着。机器W530

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

William2006 发表于 2020-10-20 20:29

vimacs 发表于 2020-10-20 19:52
首先启动时内核命令行需要iomem=relaxed.
还有几点要注意:
1. 原厂固件是锁了ME区域的,要全部读出来 ...

这个命令行怎么设置?

vimacs 发表于 2020-10-20 20:36

William2006 发表于 2020-10-20 20:29
这个命令行怎么设置?

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

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

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

https://doc.coreboot.org/mainboard/lenovo/ivb_internal_flashing.html

William2006 发表于 2020-10-20 20:39

vimacs 发表于 2020-10-20 20:36
在启动到GRUB的时候按e编辑内核命令行,在linux /.../vmlinuz... 那行加上 iomem=relaxed.

xx30 这系 ...

感谢指导

Ps:我加入你的那个什么wehack论坛了

liubo0820 发表于 2023-12-30 22:19

学习,先标记下
页: [1]
查看完整版本: 【原创】小白在ubuntu下编译coreboot(开源主板固件)