【原创】小白在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
好帖,建议加精
还没写完,
先吃个饭回头再写 坑爹的 ,有这么好的网络.还要什么自行车.
我玩个 18.4,网络那叫一个慢. 前x230 Coreboot+Tianocore payload用户路过...后来折腾不动了,Intel VBT在Windows下不完美,会掉屏。ACPI S3 Resume老是出问题 自己改来改去才修好。我给Upstream加了X230i的支持,现在还没收进。 FlyGoat 发表于 2020-1-7 08:31
前x230 Coreboot+Tianocore payload用户路过...后来折腾不动了,Intel VBT在Windows下不完美,会掉屏。ACPI S ...
如果主windows真没必要折腾coreboot,
coreboot配合linux系统才是最完美的 技术大牛。
强贴啊,玩CoreBoot bwyciyv 发表于 2020-1-6 18:43
以编译x230的coreboot为例,建议物理机安装ubuntu18.04,
如果虚拟机编译相当吃力,太吃CPU...
又重新拜读大神的帖子
正在一步步做W530的固件
话说coreboot是否支持扩展坞底座,还有UEFI启动呢?
Ps:你一开始那一条apt-get的命令里面好像gnat5在ubuntu仓库里已经没有了,我是apt-get install gnat来的,应该没问题吧 William2006 发表于 2020-10-17 14:43
又重新拜读大神的帖子
正在一步步做W530的固件
seabios与Tianocore都支持efi启动,我没折腾,如果不是纯linux系统为何折腾coreboot呢? coreboot+grub直接引导内核4秒进系统不香吗 bwyciyv 发表于 2020-10-17 17:00
seabios与Tianocore都支持efi启动,我没折腾,如果不是纯linux系统为何折腾coreboot呢? coreboot+grub直接 ...
我是因为为了破解W530的倍频限制,超频CPU William2006 发表于 2020-10-17 14:43
又重新拜读大神的帖子
正在一步步做W530的固件
要UEFI就只能用Tianocore了。
coreboot对ThinkPad的支持都还行,差不多所有功能都支持。对T440p的支持稍微差一点,不用某些功能也发现不了什么问题。 vimacs 发表于 2020-10-17 22:07
要UEFI就只能用Tianocore了。
coreboot对ThinkPad的支持都还行,差不多所有功能都支持。对T440p的支持稍 ...
tianocore是什么啊 William2006 发表于 2020-10-18 10:59
tianocore是什么啊
payload选择Tianocore. 话说make crossgcc慢是因为楼主没有开多线程编译,make crossgcc-i386 CPUS=4并不会很慢,要不就是下tar包花的时间太长。 vimacs 发表于 2020-10-18 11:43
话说make crossgcc慢是因为楼主没有开多线程编译,make crossgcc-i386 CPUS=4并不会很慢,要不就是下tar包 ...
我虚拟机编译,好像30分钟就好了 vimacs 发表于 2020-10-18 11:40
payload选择Tianocore.
ok vimacs 发表于 2020-10-18 11:43
话说make crossgcc慢是因为楼主没有开多线程编译,make crossgcc-i386 CPUS=4并不会很慢,要不就是下tar包 ...
下包要梯子, 所以慢,编译并不慢,i7-3615要20分左右
bwyciyv 发表于 2020-10-18 19:05
下包要梯子, 所以慢,编译并不慢,i7-3615要20分左右
如果下包慢的话我会考虑先到镜像站下好。 William2006 发表于 2020-10-18 10:59
tianocore是什么啊
其实payload可以这么理解, coreboot分好几部分组成的, 像主板厂商设置,芯片的分类,电源管理,外设的支持等,如上面图的设置 你能看到, 你所以设置好后,最后就差引导系统那块了,payload就是引导系统的模块, coreboot上叫做负载,负载可以有几种方式来实现引导系统, 比如seabios,grub等等,这点coreboot做为开源来说很良心 bwyciyv 发表于 2020-10-18 19:12
其实payload可以这么理解, coreboot分好几部分组成的, 像主板厂商设置,芯片的分类,电源管理,外设的支持等 ...
或者哪天有大神开发一个完美直接引导MacOS的也不好说 vimacs 发表于 2020-10-18 19:09
如果下包慢的话我会考虑先到镜像站下好。
大神你好像是坛子最先研究coreboot的人 bwyciyv 发表于 2020-10-18 19:12
其实payload可以这么理解, coreboot分好几部分组成的, 像主板厂商设置,芯片的分类,电源管理,外设的支持等 ...
大神,再问下,我刚刚用flashrom备份本机BIOS为什么无法读取啊,好像是个什么error来着。机器W530 William2006 发表于 2020-10-18 19:45
大神,再问下,我刚刚用flashrom备份本机BIOS为什么无法读取啊,好像是个什么error来着。机器W530
首先启动时内核命令行需要iomem=relaxed.
还有几点要注意:
1. 原厂固件是锁了ME区域的,要全部读出来只能用编程器
2. 你可以只读写BIOS区域 vimacs 发表于 2020-10-20 19:52
首先启动时内核命令行需要iomem=relaxed.
还有几点要注意:
1. 原厂固件是锁了ME区域的,要全部读出来 ...
这个命令行怎么设置? 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 vimacs 发表于 2020-10-20 20:36
在启动到GRUB的时候按e编辑内核命令行,在linux /.../vmlinuz... 那行加上 iomem=relaxed.
xx30 这系 ...
感谢指导
Ps:我加入你的那个什么wehack论坛了 学习,先标记下
页:
[1]