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