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