README.md
1coreboot README
2===============
3
4coreboot is a Free Software project aimed at replacing the proprietary
5firmware (BIOS/UEFI) found in most computers. coreboot performs the
6required hardware initialization to configure the system, then passes
7control to a different executable, referred to in coreboot as the
8payload. Most often, the primary function of the payload is to boot the
9operating system (OS).
10
11With the separation of hardware initialization and later boot logic,
12coreboot is perfect for a wide variety of situations. It can be used
13for specialized applications that run directly in the firmware, running
14operating systems from flash, loading custom bootloaders, or
15implementing firmware standards, like PC BIOS services or UEFI. This
16flexibility allows coreboot systems to include only the features
17necessary in the target application, reducing the amount of code and
18flash space required.
19
20
21Source code
22-----------
23
24All source code for coreboot is stored in git. It is downloaded with
25the command:
26
27`git clone https://review.coreboot.org/coreboot.git`.
28
29Code reviews are done in [the project's Gerrit
30instance](https://review.coreboot.org/).
31
32The code may be browsed via [coreboot's Gitiles
33instance](https://review.coreboot.org/plugins/gitiles/coreboot/+/HEAD).
34
35The coreboot project also maintains a
36[mirror](https://github.com/coreboot/coreboot) of the project on github.
37This is read-only, as coreboot does not accept github pull requests,
38but allows browsing and downloading the coreboot source.
39
40Payloads
41--------
42
43After the basic initialization of the hardware has been performed, any
44desired "payload" can be started by coreboot.
45
46See <https://doc.coreboot.org/payloads.html> for a list of some of
47coreboot's supported payloads.
48
49
50Supported Hardware
51------------------
52
53The coreboot project supports a wide range of architectures, chipsets,
54devices, and mainboards. While not all of these are documented, you can
55find some information in the [Architecture-specific
56documentation](https://doc.coreboot.org/arch/index.html) or the
57[SOC-specific documentation](https://doc.coreboot.org/soc/index.html).
58
59For details about the specific mainboard devices that coreboot supports,
60please consult the [Mainboard-specific
61documentation](https://doc.coreboot.org/mainboard/index.html) or the
62[Board Status](https://coreboot.org/status/board-status.html) pages.
63
64
65Releases
66--------
67
68Releases are currently done by coreboot every quarter. The
69release archives contain the entire coreboot codebase from the time of
70the release, along with any external submodules. The submodules
71containing binaries are separated from the general release archives. All
72of the packages required to build the coreboot toolchains are also kept
73at coreboot.org in case the websites change, or those specific packages
74become unavailable in the future.
75
76All releases are available on the [coreboot
77download](https://coreboot.org/downloads.html) page.
78
79Please note that the coreboot releases are best considered as snapshots
80of the codebase, and do not currently guarantee any sort of extra
81stability.
82
83Build Requirements and building coreboot
84----------------------------------------
85
86The coreboot build, associated utilities and payloads require many
87additional tools and packages to build. The actual coreboot binary is
88typically built using a coreboot-controlled toolchain to provide
89reproducibility across various platforms. It is also possible, though
90not recommended, to make it directly with your system toolchain.
91Operating systems and distributions come with an unknown variety of
92system tools and utilities installed. Because of this, it isn't
93reasonable to list all the required packages to do a build, but the
94documentation lists the requirements for a few different Linux
95distributions.
96
97To see the list of tools and libraries, along with a list of
98instructions to get started building coreboot, go to the [Starting from
99scratch](https://doc.coreboot.org/tutorial/part1.html) tutorial page.
100
101That same page goes through how to use QEMU to boot the build and see
102the output.
103
104
105Website and Mailing List
106------------------------
107
108Further details on the project, as well as links to documentation and
109more can be found on the coreboot website:
110
111 <https://www.coreboot.org>
112
113You can contact us directly on the coreboot mailing list:
114
115 <https://doc.coreboot.org/community/forums.html>
116
117
118
119Copyrights and Licenses
120---------------------
121
122
123### Uncopyrightable files
124
125There are many files in the coreboot tree that we feel are not
126copyrightable due to a lack of creative content.
127
128"In order to qualify for copyright protection in the United States, a
129work must satisfy the originality requirement, which has two parts. The
130work must have “at least a modicum” of creativity, and it must be the
131independent creation of its author."
132
133 <https://guides.lib.umich.edu/copyrightbasics/copyrightability>
134
135Similar terms apply to other locations.
136
137These uncopyrightable files include:
138
139- Empty files or files with only a comment explaining their existence.
140 These may be required to exist as part of the build process but are
141 not needed for the particular project.
142- Configuration files either in binary or text form. Examples would be
143 files such as .vbt files describing graphics configuration, .apcb
144 files containing configuration parameters for AMD firmware binaries,
145 and spd files as binary .spd or text \*spd\*.hex representing memory
146 chip configuration.
147- Machine-generated files containing version numbers, dates, hash
148 values or other "non-creative" content.
149
150As non-creative content, these files are in the public domain by
151default. As such, the coreboot project excludes them from the project's
152general license even though they may be included in a final binary.
153
154If there are questions or concerns about this policy, please get in
155touch with the coreboot project via the mailing list.
156
157
158### Copyrights
159
160The copyright on coreboot is owned by quite a large number of individual
161developers and companies. A list of companies and individuals with known
162copyright claims is present at the top level of the coreboot source tree
163in the 'AUTHORS' file. Please check the git history of each of the
164source files for details.
165
166
167### Licenses
168
169Because of the way coreboot began, using a significant amount of source
170code from the Linux kernel, it's licensed the same way as the Linux
171Kernel, with GNU General Public License (GPL) Version 2. Individual
172files are licensed under various licenses, though all are compatible
173with GPLv2. The resulting coreboot image is licensed under the GPL,
174version 2. All source files should have an SPDX license identifier at
175the top for clarification.
176
177Files under coreboot/Documentation/ are licensed under CC-BY 4.0 terms.
178As an exception, files under Documentation/ with a history older than
1792017-05-24 might be under different licenses.
180
181Files in the coreboot/src/commonlib/bsd directory are all licensed with
182the BSD-3-clause license. Many are also dual-licensed GPL-2.0-only or
183GPL-2.0-or-later. These files are intended to be shared with libpayload
184or other BSD licensed projects.
185
186The libpayload project contained in coreboot/payloads/libpayload may be
187licensed as BSD or GPL, depending on the code pulled in during the build
188process. All GPL source code should be excluded unless the Kconfig
189option to include it is set.
190
191
192The Software Freedom Conservancy
193--------------------------------
194
195Since 2017, coreboot has been a member of [The Software Freedom
196Conservancy](https://sfconservancy.org/), a nonprofit organization
197devoted to ethical technology and driving initiatives to make technology
198more inclusive. The conservancy acts as coreboot's fiscal sponsor and
199legal advisor.
200