• Stars
    star
    158
  • Rank 235,804 (Top 5 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 5 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fork of coreboot repo

coreboot README

coreboot is a Free Software project aimed at replacing the proprietary firmware (BIOS/UEFI) found in most computers. coreboot performs the required hardware initialization to configure the system, then passes control to a different executable, referred to in coreboot as the payload. Most often, the primary function of the payload is to boot the operating system (OS).

With the separation of hardware initialization and later boot logic, coreboot is perfect for a wide variety of situations. It can be used for specialized applications that run directly in the firmware, running operating systems from flash, loading custom bootloaders, or implementing firmware standards, like PC BIOS services or UEFI. This flexibility allows coreboot systems to include only the features necessary in the target application, reducing the amount of code and flash space required.

Source code

All source code for coreboot is stored in git. It is downloaded with the command:

git clone https://review.coreboot.org/coreboot.git.

Code reviews are done in the project's Gerrit instance.

The code may be browsed via coreboot's Gitiles instance.

The coreboot project also maintains a mirror of the project on github. This is read-only, as coreboot does not accept github pull requests, but allows browsing and downloading the coreboot source.

Payloads

After the basic initialization of the hardware has been performed, any desired "payload" can be started by coreboot.

See https://doc.coreboot.org/payloads.html for a list of some of coreboot's supported payloads.

Supported Hardware

The coreboot project supports a wide range of architectures, chipsets, devices, and mainboards. While not all of these are documented, you can find some information in the Architecture-specific documentation or the SOC-specific documentation.

For details about the specific mainboard devices that coreboot supports, please consult the Mainboard-specific documentation or the Board Status pages.

Releases

Releases are currently done by coreboot every quarter. The release archives contain the entire coreboot codebase from the time of the release, along with any external submodules. The submodules containing binaries are separated from the general release archives. All of the packages required to build the coreboot toolchains are also kept at coreboot.org in case the websites change, or those specific packages become unavailable in the future.

All releases are available on the coreboot download page.

Please note that the coreboot releases are best considered as snapshots of the codebase, and do not currently guarantee any sort of extra stability.

Build Requirements and building coreboot

The coreboot build, associated utilities and payloads require many additional tools and packages to build. The actual coreboot binary is typically built using a coreboot-controlled toolchain to provide reproducibility across various platforms. It is also possible, though not recommended, to make it directly with your system toolchain. Operating systems and distributions come with an unknown variety of system tools and utilities installed. Because of this, it isn't reasonable to list all the required packages to do a build, but the documentation lists the requirements for a few different Linux distributions.

To see the list of tools and libraries, along with a list of instructions to get started building coreboot, go to the Starting from scratch tutorial page.

That same page goes through how to use QEMU to boot the build and see the output.

Website and Mailing List

Further details on the project, as well as links to documentation and more can be found on the coreboot website:

https://www.coreboot.org

You can contact us directly on the coreboot mailing list:

https://doc.coreboot.org/community/forums.html

Copyrights and Licenses

Uncopyrightable files

There are many files in the coreboot tree that we feel are not copyrightable due to a lack of creative content.

"In order to qualify for copyright protection in the United States, a work must satisfy the originality requirement, which has two parts. The work must have โ€œat least a modicumโ€ of creativity, and it must be the independent creation of its author."

https://guides.lib.umich.edu/copyrightbasics/copyrightability

Similar terms apply to other locations.

These uncopyrightable files include:

  • Empty files or files with only a comment explaining their existence. These may be required to exist as part of the build process but are not needed for the particular project.
  • Configuration files either in binary or text form. Examples would be files such as .vbt files describing graphics configuration, spd files as binary .spd or text *spd*.hex representing memory chip configuration.
  • Machine-generated files containing version numbers, dates, hash values or other "non-creative" content.

As non-creative content, these files are in the public domain by default. As such, the coreboot project excludes them from the project's general license even though they may be included in a final binary.

If there are questions or concerns about this policy, please get in touch with the coreboot project via the mailing list.

Copyrights

The copyright on coreboot is owned by quite a large number of individual developers and companies. A list of companies and individuals with known copyright claims is present at the top level of the coreboot source tree in the 'AUTHORS' file. Please check the git history of each of the source files for details.

Licenses

Because of the way coreboot began, using a significant amount of source code from the Linux kernel, it's licensed the same way as the Linux Kernel, with GNU General Public License (GPL) Version 2. Individual files are licensed under various licenses, though all are compatible with GPLv2. The resulting coreboot image is licensed under the GPL, version 2. All source files should have an SPDX license identifier at the top for clarification.

Files under coreboot/Documentation/ are licensed under CC-BY 4.0 terms. As an exception, files under Documentation/ with a history older than 2017-05-24 might be under different licenses.

Files in the coreboot/src/commonlib/bsd directory are all licensed with the BSD-3-clause license. Many are also dual-licensed GPL-2.0-only or GPL-2.0-or-later. These files are intended to be shared with libpayload or other BSD licensed projects.

The libpayload project contained in coreboot/payloads/libpayload may be licensed as BSD or GPL, depending on the code pulled in during the build process. All GPL source code should be excluded unless the Kconfig option to include it is set.

The Software Freedom Conservancy

Since 2017, coreboot has been a member of The Software Freedom Conservancy, a nonprofit organization devoted to ethical technology and driving initiatives to make technology more inclusive. The conservancy acts as coreboot's fiscal sponsor and legal advisor.

More Repositories

1

launch

System76 Launch Configurable Keyboard
Shell
1,376
star
2

firmware-open

System76 Open Firmware
C
946
star
3

virgo

System76 Virgo Laptop Project
Python
431
star
4

thelio

Thelio Desktop by System76
426
star
5

ec

System76 Open Source Embedded Controller
C
317
star
6

docs

System76 support documentation site
Vue
302
star
7

firmware-update

System76 Firmware Update Utility
Rust
200
star
8

beansbooks

A revolutionary cloud accounting platform designed for small and medium businesses.
PHP
129
star
9

thelio-io

Master repository for Thelio Io board
Rust
81
star
10

beebee

URL shortener for http://s76.co
Elixir
58
star
11

thelio-io-hardware

KiCad electrical design of Thelio Io board
Python
54
star
12

tech-docs

System76 Technical Documentation
CSS
50
star
13

laptop-suggestions

Repo to collect laptop design suggestions and feedback as issues.
41
star
14

windows-drivers

Windows Drivers for System76 Open Firmware Machines
40
star
15

certification

System76 Certification Tools
Rust
29
star
16

pop-vue

Vue components designed to look like Pop!_OS
JavaScript
26
star
17

cuda

Packaging for NVIDIA's CUDA Toolkit
CMake
21
star
18

ecflash

Flashing and querying with System76 Embedded Controllers
Rust
20
star
19

coreboot-collector

Utility for collecting valuable information for coreboot
Rust
19
star
20

recognizer

A authentication and user service
Elixir
19
star
21

firmware-desktop

Desktop Firmware
18
star
22

firmware-setup

Firmware Setup
Rust
18
star
23

thelio-io-windows

WIP Windows driver for System76 Thelio Io
Rust
17
star
24

intel-spi

Library for accessing Intel PCH SPI
Rust
13
star
25

warehouse

A microservice to encapsulate our inventory management functionality
Elixir
13
star
26

romulan

Rust library for parsing a number of firmware images
Rust
12
star
27

brand

12
star
28

thelio-io-firmware

Firmware for Thelio Io board
C
12
star
29

lxd-rs

A Rust library for controlling LXD
Rust
10
star
30

pihsm

Raspberry Pi Hardware Security Module
Python
9
star
31

bottle

Protobuf messages in a bottle
9
star
32

ecsim

Simulate System76 EC with area8051 emulator
Rust
9
star
33

kicad-allegro

Converter from Allegro to KiCad, and Allegro extract viewer
Rust
8
star
34

firmware-smmstore

Rust EFI application for compacting coreboot SMMSTORE
Rust
8
star
35

ecspy

System76 EC Debugger
Rust
8
star
36

takehome_web_be

Take home project used during our interview process for backend developer roles.
Elixir
7
star
37

GuyTuxMask

3-D and 2-D files of the Guy Tux mask
6
star
38

markdown

System76 markdown parsing for the web
JavaScript
6
star
39

system76-benchmarks

Collection of benchmarking tools developed by System76
Python
6
star
40

design

System76 styles and design related web assets
Vue
6
star
41

code-of-conduct

Code of Conduct for the System76 open source community
5
star
42

js-api

JavaScript fetch wrapper for Elixir Phoenix APIs
JavaScript
5
star
43

nuxt-appsignal

Appsignal integration with Nuxt
JavaScript
5
star
44

zendesk-app

The System76 zendesk app
Vue
5
star
45

eslint-config

System76 standard eslint linting configuration
JavaScript
5
star
46

policy

Elixir
5
star
47

assembly

An assembly management microservice
Elixir
5
star
48

thelio-io-output

Output files for Thelio Io board - from thelio-io-hardware and thelio-io-firmware
5
star
49

firmware-sign

Firmware signing/verifying process
Python
5
star
50

state_fair

State machine system for Elixir applications
Elixir
4
star
51

help_desk

A microservice for System76's Zendesk integration
Elixir
3
star
52

elixir-mcrypt

Elixir NIF wrapper around libmcrypt
Elixir
3
star
53

thelio-pwrbtn

Thelio power button PCB
Python
3
star
54

apobtool

AMD APOB debug tool
Rust
3
star
55

copy_cat

A template repository for new queue based services
Elixir
3
star
56

blog

Official System76 blog
Vue
3
star
57

smmstore

Utility for reading coreboot SMMSTORE
Rust
2
star
58

docker

A collection of docker images used at System76
Shell
2
star
59

unleash-potential

Unleash Your Potential with this awesome command line art!
Python
2
star
60

softwarefreedom_card

2
star
61

easy_post

Elixir API client for EasyPost
Elixir
2
star
62

bullhorn

A notification microservice for System76's platform
Elixir
2
star
63

launchpad

Launch Keyboard Selma Tester control application
Python
1
star
64

smart-amp

TI Smart Amp configuration dumper and loader
C
1
star
65

keyboard-layout

Rust crate to generate DXF output from keyboard-layout-editor.com data
Rust
1
star
66

system76-ee

Scripts for System76 Electrical Engineering
Julia
1
star
67

ground_control

A real-time dashboard of @system76 deployments.
Elixir
1
star
68

shig

Style & Human Interface Guidelines
1
star
69

usb_ids

System76 USB ID allocation
1
star
70

thelio-prelaunch

Thelio prelaunch website
HTML
1
star
71

gop-policy

Implementation of Platform GOP Policy for Intel GOP Driver
Rust
1
star
72

roguebots

HTML
1
star
73

logripper

Pull logs from an S3 bucket into a local database
Elixir
1
star
74

tweetflood

A twitter API client to for tweetstorm promotions
Elixir
1
star
75

s76_stripe

An Elixir API client for Stripe
Elixir
1
star
76

libpci-sys

Rust bindings for libpci
Rust
1
star
77

renovate-config

System76 presets for Renovate
1
star