coreboot - the free firmware - bbs.pku.edu.cn€¦ · linux club of peking university coreboot -...

30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . coreboot - the free firmware Linux Club of Peking University April 9th, 2016 Linux Club of Peking University coreboot - the free firmware April 9th, 2016 1 / 30

Upload: others

Post on 19-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

coreboot - the free firmware

Linux Club of Peking University

April 9th, 2016

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 1 / 30

Page 2: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1 History

2 Why use coreboot

3 How coreboot works

4 Building and using coreboot

5 Flashing

6 Utilities and Debugging

7 Contribute to coreboot

8 Proprietary Components

9 References

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 2 / 30

Page 3: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

History: from LinuxBIOS to coreboot

coreboot has a very long history, stretching back more than 15 years towhen it was known as LinuxBIOS. While the project has gone through lotsof changes over the years, many of the earliest developers still contributetoday.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 3 / 30

Page 4: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

LinuxBIOS v1: 1999-2000

The coreboot project originally started as LinuxBIOS in 1999 at LosAlamos National Labs (LANL) by Ron Minnich. Ron needed to boot acluster made up of many x86 mainboards without the hassles that are partof the PC BIOS. The goal was to do minimal hardware initilization inorder to boot Linux as fast as possible. Linux already had the drivers andsupport to initialize the majority of devices. Ron and a number of otherkey contributors from LANL, Linux NetworkX, and other open sourcefirmware projects successfully booted Linux from flash. From there theywere able to discover other nodes in the cluster, load a full kernel and userspace, and start the clustering software.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 4 / 30

Page 5: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

LinuxBIOS v2: 2000-2005

After the initial success of v1, the design was expanded to support moreCPU architectures (x86, Alpha, PPC) and to support developers withincreasingly diverse needs.One of the design goal is to have little assembly as possible.

standard C cannot be used because C compiler requires memory forstack

the new DDR memory controllers required significantly moreconfiguration and a lot more ASM

solution: ROMCC by Eric Biederman

LinuxBIOS device tree was introduced.Many target systems had flash that were too small to hold both thehardware initialization code and the Linux kernel. Payloads were created.

modified etherboot for clusters

FILO for disk-based boot

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 5 / 30

Page 6: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

LinuxBIOS v2+: 2005-2008

Cache as RAM was introduced in 2005.Stefan Reinauer formed a company named coresystems GmbH to supportLinuxBIOS. Stefan was one of the primary developers and co-leaders ofLinuxBIOS with Ron Minnich. His significant contributions included thefirst AMD64 port, the original ACPI implementation, the original SMMimplementation, the flashrom utility, and the FILO payload developmentand maintainer.In 2005, FSF started the Free BIOS campaign to support LinuxBIOSdevelopment. Ward Vandewege of FSF ported LinuxBIOS to the FSFservers and other mainboards.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 6 / 30

Page 7: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

LinuxBIOS v3: 2006-2008

By 2006, LinuxBIOS had already supported hundreds of mainboards. Withso many boards, there were problems with porting additional silicon andsystems.

Developers fixed and clarified many driver and bus support issues inthe device tree.

Kconfig

firmware image archive called LAR (LinuxBIOS Archiver), which ledto the more refined and flexible concept of CBFS

It wasn’t the main development branch; it was essentially an R&D branch,where the best ideas were backported to v2.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 7 / 30

Page 8: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

2008: LinuxBIOS renamed coreboot

https://www.coreboot.org/pipermail/coreboot/2008-January/

029135.html

LinuxBIOS = (core boot code) + (Linux kernel)

Linux was no longer booted directly from flash

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 8 / 30

Page 9: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

coreboot v4

In early 2010, coreboot moved from SVN to Git

during the transition, the community took the opportunity torecognize the advancements of the past 10 years and updated toversion 4.0.

contributions from AMD: AMD Generic Encapsulated SoftwareArchitecture (AGESA)

Google Chromebook

Intel FSP

libreboot for ThinkPad T60

coreboot v4.1

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 9 / 30

Page 10: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Why use coreboot

coreboot is free software: FSF Free BIOS Campaign

fast boot times

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 10 / 30

Page 11: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Fun stuff on BIOS

https://www.coreboot.org/Fun_Stuff

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 11 / 30

Page 12: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1802 Error

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 12 / 30

Page 13: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

removing efivars bricks your mainboard

Ron Minnich, ML discussion, March 14, 2014: In other words, you candesign a special case that makes doing a good design of the general casealmost impossible. That’s been done too; see UEFI.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 13 / 30

Page 14: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

How coreboot works

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 14 / 30

Page 15: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

coreboot stages

The coreboot firmware runs in several stages.

bootblock: the earliest code that the CPU runs

romstage: before main memory is ready, only the code in the flashcan be run, and no other memory can be used

ramstage: after main memory can be used, the ramstage code isuncompressed in memory, and do the remaining initialization

payload: OS or OS loader

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 15 / 30

Page 16: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Payloads

There are many coreboot payloads:

SeaBIOS: a PC BIOS implementation

GRUB2

Linux kernel

Tianocore: a UEFI implementation by Intel

depthcharge: a bootloader written by Google for Chromebooks

u-boot

Some useful tools can also be payloads:

nvramcui: a tool to edit CMOS

coreinfo: system information

memtest86+

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 16 / 30

Page 17: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Supported OSes

coreboot supports many operating systems:

Linux: boots via GRUB2,SeaBIOS, or using Linux kernel as payload

OpenBSD: boots via SeaBIOS with VGA option ROM. Now itsupports UEFI and don’t need VGA BIOS, so it now supportslibreboot. See libreboot mailing list.

Windows: boots via SeaBIOS with VGA option ROM. Windows 8should be able to boot with Tianocore without VGA BIOS.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 17 / 30

Page 18: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Building coreboot

First, you need a toolchain for building: make crossgcc ormake crossgcc-<arch>

Generate a configuration with make nconfig

make it

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 18 / 30

Page 19: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Running coreboot on QEMU

For beginners, I recommend using QEMU to test coreboot. First build acoreboot ROM for QEMU, then run:qemu-system-i386 -bios build/coreboot.rom

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 19 / 30

Page 20: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Hardware flashing

To use coreboot on real machines, we need to know how to flashexternally with a hardware flash programmer.

Most of the mainboards can only be flashed externally with factoryfirmware running.

We need to flash externally to unbrick a machine.

We need a programmer and a connector to connect the flash.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 20 / 30

Page 21: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Tools to flash a chip

A lot of mainboards use SPI NOR flash, most of them are in SOIC-8package.To program SPI NOR flash, we can use one of the following tools:

Using Linux SPI: Raspberry Pi, Beaglebone

Micro controllers: Arduino, Bus Pirate, STM32

Programmers: ch341a, dediprog

To connect with SOIC-8 or SOIC-16 flash chips, we can use a clip.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 21 / 30

Page 22: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Flash with flashrom

We can use flashrom to flash the chips.

command line

flashrom -p <programmer> [-r <file>] [-w <file>]

For Linux SPI

flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=1024

For ch341aflashrom -p ch341a_spi

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 22 / 30

Page 23: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Internal flashing with flashrom

Many boards can be flashed internally with coreboot flashed.

internal flashing

flashrom -p internal:laptop=force_I_want_a_brick

We can also use a layout file to flash part of the ROM.

flashing with layout

flashrom -p <prog> --layout layout.txt \

--image bios -w <file>

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 23 / 30

Page 24: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Utilities and Debugging

To work with coreboot, we have many tools to use:

nvramtool: dump CMOS contents, display and modify CMOS settings

cbmem: display coreboot table and logs

ectool: read and write EC memory, sometimes useful

autoport: generate the code for a board you want to port, usuallyneeds further changes

To debug coreboot, we can read the cbmem console in a working system.We can also use a EHCI debug dongle.

Net20DC is an expensive device, and its company is bankrupt.

We can use a development board with OTG port, e.g. BeagleBone,Cubieboard

For systems with serial output, we can also do the debugging with it.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 24 / 30

Page 25: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Reporting bugs and Writing documents

To join the community, learn to use mailing list and IRC.

There’s a bug tracking system: http://ticket.coreboot.org/

We can apply for a wiki account and write coreboot wiki.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 25 / 30

Page 26: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

I want to write some code

Gerrit code review is the project management system for coreboot.To push code to gerrit, you can manually set up the scripts, or just runmake gitconfig.Using gerrit is easy:

To push code: git push origin HEAD:refs/for/master

We can add a topic: HEAD:refs/for/master%topic=some_topic

To push a draft: HEAD:refs/drafts/master

I recommend working in a new git branch instead of master.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 26 / 30

Page 27: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Proprietary (non-free) Components

Some firmware components are non-free:

Intel ME firmware/AMD PSP

Intel FSP/closed source AGESA

Option ROMs (including VGA BIOS)

CPU microcode

EC firmware

Libreboot is a coreboot distribution that removes proprietary components,including Intel ME, FSP, VGA BIOS, etc. On some laptops, the ECfirmware is also free(Chromium EC in Chromebooks).

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 27 / 30

Page 28: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

References

coreboot history: Embedded Firmware Solutions, by Jiming Sun,Vincent Zimmer, Marc Jones, and Stefan Reinauer

libreboot: https://libreboot.org/faq/

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 28 / 30

Page 29: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Hardware choosing(Machines)

Laptops

laptops with libreboot supported, e.g. Lenovo X200

Intel platforms up to Ivy Bridge supports coreboot without FSP, andthere’s no boot guard.

Development boards

Raspberry Pi is very popular, but it’s not so open.

Allwinner is not so friendly to free software community, but Allwinnerchips has good community support.

Beaglebone Black seems popular in coreboot and librebootcommunity.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 29 / 30

Page 30: coreboot - the free firmware - bbs.pku.edu.cn€¦ · Linux Club of Peking University coreboot - the free rmware April 9th, 2016 4 / 30..... LinuxBIOS v2: 2000-2005 After the initial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Hardware choosing(wifi cards and GPU)

wifi cards

Atheros 802.11n chips have free driver and do not need proprietaryfirmware.

AR9382 is very cheap (down to 20 CNY on taobao), with excellentdual-band 300M performance.

Broadcom sucks, so is Realtek.

Chips from Intel,TI,etc. need proprietary firmware.

GPUs

Many GPUs needs proprietary firmware blobs. There are some GPUs thatLinux-libre can use:

Intel Graphics before Skylake

NVIDIA chips up to Kepler with nouveau driver

embedded GPUs: freedreno, etnaviv, etc.

Linux Club of Peking University coreboot - the free firmware April 9th, 2016 30 / 30