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