coreboot - coreboot
| Originale forfattere | Ronald G. Minnich, Eric Biederman, Li-Ta (Ollie) Lo, Stefan Reinauer og coreboot-samfunnet |
|---|---|
| Første utgivelse | 1999 |
| Stabil utgivelse | 4.14 / 10. mai 2021
|
| Oppbevaringssted | |
| Skrevet inn | Stort sett C , og ca 1% i montering . Eventuelt Ada |
| Plattform | IA-32 , x86-64 , ARMv7 , ARMv8, MIPS , RISC-V , POWER8 |
| Type | Fastvare |
| Tillatelse | GPLv2 |
| Nettsted |
www |
Programvareprosjektets coreboot , tidligere kjent som LinuxBIOS , tar sikte på å erstatte proprietær fastvare ( BIOS eller UEFI ) som finnes på de fleste datamaskiner med en lett fastvare designet for å utføre bare det minste antallet oppgaver som er nødvendige for å laste og kjøre en moderne 32-bit eller 64 -bit operativsystem .
Siden coreboot initialiserer bare maskinvaren, må den portes til hvert brikkesett og hovedkort som den støtter. Som et resultat er coreboot bare tilgjengelig for et begrenset antall maskinvareplattformer og hovedkortmodeller.
En av coreboot -variantene er Libreboot , en programvaredistribusjon helt fri for proprietære blobs , rettet mot sluttbrukere.
Historie
Coreboot -prosjektet begynte vinteren 1999 i Advanced Computing Laboratory ved Los Alamos National Laboratory (LANL), med målet om å lage et BIOS som ville starte raskt og håndtere feil intelligent. Den er lisensiert under vilkårene i GNU General Public License (GPL). De viktigste bidragsyterne inkluderer LANL , SiS , AMD , Coresystems og Linux Networx, Inc, samt hovedkortleverandører MSI , Gigabyte og Tyan , som tilbyr coreboot sammen med standard BIOS eller gir spesifikasjoner for maskinvaregrensesnittene for noen av hovedkortene. Google sponser delvis coreboot -prosjektet. CME Group , en klynge med futures -børser , begynte å støtte coreboot -prosjektet i 2009.
Coreboot har blitt akseptert på syv år på rad (2007–2014) for Google Summer of Code . Bortsett fra de tre første modellene, kjører alle Chromebooks coreboot. Koden fra Das U-Boot er blitt assimilert for å muliggjøre støtte for prosessorer basert på ARM-instruksjonssettet .
I juni 2019 begynte Coreboot å bruke NSA- programvaren Ghidra for sin reverse engineering- innsats på fastvarespesifikke problemer etter åpen kildekodeversjon av programvarepakken.
Støttede plattformer
CPU-arkitekturer som støttes av coreboot inkluderer IA-32 , x86-64 , ARM , ARM64 , MIPS og RISC-V . Støttede system-on-a-chip (SOC) -plattformer inkluderer AMD Geode , med utgangspunkt i Geode GX-prosessoren utviklet for OLPC . Artec Group la til Geode LX -støtte for ThinCan -modellen DBE61; at koden ble vedtatt av AMD og ytterligere forbedret for OLPC etter at den ble oppgradert til Geode LX -plattformen, og er videreutviklet av coreboot -samfunnet for å støtte andre Geode -varianter. Coreboot kan blinker på en Geode -plattform ved hjelp av Flashrom .
Fra den første utviklingen på AMD Geode -baserte plattformer, har coreboot -støtte blitt utvidet til mange AMD -prosessorer og brikkesett. Prosessorlisten inkluderer Family 0Fh og 10h ( K8 core), og nylig Family 14h ( Bobcat core, Fusion APU ). Coreboot -støtte strekker seg også til AMD -brikkesett : RS690 , RS7xx , SB600 og SB8xx.
AMD Generic Encapsulated Software Architecture ( AGESA ) - en bootstrap -protokoll som gjør at systemenheter på AMD64 -hovedkort initialiseres - ble åpnet fra begynnelsen av 2011, med sikte på å gi nødvendig funksjonalitet for initialisering av coreboot -system på AMD64 -maskinvare. Slike utgivelser ble imidlertid aldri grunnlaget for fremtidig utvikling av AMD, og ble deretter stoppet.
Enheter som kan forhåndslastes med coreboot eller en av dens derivater inkluderer noen x86-baserte Chromebooks , Libreboot X200 og T400 (merket ThinkPad X200 og T400, henholdsvis tilgjengelig fra Minifree, tidligere kjent som Gluglug), OLPC XO fra One Laptop pr. barn initiativ, ThinCan modeller DBE61, DBE62 og DBE63, og vifteløs server / router hardware produsert av PC Engines . Alle Librem -bærbare datamaskiner kommer med coreboot.
Noen System76 -PCer bruker coreboot TianoCore -fastvare, inkludert åpen kildekode innebygd kontroller -fastvare.
Design
Coreboot laster vanligvis inn en Linux-kjerne , men den kan laste inn alle andre frittstående ELF- kjørbare, for eksempel iPXE , gPXE eller Etherboot som kan starte en Linux-kjerne over et nettverk , eller SeaBIOS som kan laste en Linux-kjerne, Microsoft Windows 2000 og senere , og BSD -er (tidligere, Windows 2000/XP og OpenBSD -støtte ble levert av ADLO). Coreboot kan også laste inn en kjerne fra en hvilken som helst enhet som støttes, slik som Myrinet, quadrics, eller SCI cluster forbindelser. Det er også mulig å starte andre kjerner direkte, for eksempel en Plan 9 -kjerne. I stedet for å laste en kjerne direkte, kan coreboot overføre kontrollen til en dedikert oppstartslaster, for eksempel en versjon av GNU GRUB 2 som er kompatibel med coreboot .
Coreboot er først og fremst skrevet i C , med en liten mengde monteringskode . Å velge C som hovedprogrammeringsspråk muliggjør enklere koderevisjoner sammenlignet med moderne PC -BIOS som vanligvis ble skrevet i montering, noe som resulterer i forbedret sikkerhet. Det er bygge- og kjøretidsstøtte for å skrive deler av coreboot i Ada for å heve sikkerhetslinjen ytterligere, men den brukes for tiden bare sporadisk. Kildekoden er utgitt under GNU GPL versjon 2 lisens.
Coreboot utfører absolutt minimal mengde maskinvareinitialisering og overfører deretter kontrollen til operativsystemet . Som et resultat kjører det ingen coreboot -kode når operativsystemet har tatt kontroll. En funksjon av coreboot er at x86- versjonen kjører i 32-biters modus etter bare å ha utført ti instruksjoner (nesten alle andre x86 BIOS kjører utelukkende i 16-biters modus). Dette ligner på den moderne UEFI -fastvaren, som brukes på nyere PC -maskinvare.
I seg selv tilbyr ikke coreboot BIOS -samtaletjenester . Den SeaBIOS nyttelast kan brukes til å gi BIOS-samtaler og dermed tillate coreboot å laste operativsystemer som krever disse tjenestene, for eksempel Windows 2000 / XP / Vista / 7 og BSDene. Imidlertid får de fleste moderne operativsystemer tilgang til maskinvare på en annen måte og bruker BIOS -anrop bare under tidlig initialisering og som en tilbakekallingsmekanisme.
Coreboot -stadier
- Bootblock -trinn: Forbered deg på å få Flash -tilgang, og slå opp ROM -scenen som skal brukes
- ROM -fase: Minne og tidlig brikkesett init (litt som PEI i UEFI)
- RAM -trinn: CPU, brikkesett, hovedkort og perifer init, PCI -ressursoppgave, opprettelse av ACPI -bord, SMM -behandler (litt som DXE -trinn i UEFI)
- Nyttelast.
Initialiserer DRAM
Den vanskeligste maskinvaren som coreboot initialiserer er DRAM -kontrollerne og DRAM . I noen tilfeller er teknisk dokumentasjon om dette emnet NDA begrenset eller utilgjengelig. RAM -initialisering er spesielt vanskelig, fordi før RAM -en initialiseres, kan den ikke brukes. Derfor, for å initialisere DRAM-kontrollere og DRAM, kan initialiseringskoden bare ha CPUens generelle formålsregistre eller Cache-as-RAM som midlertidig lagring.
romcc , en C -kompilator som bruker registre i stedet for RAM, letter oppgaven. Ved å bruke romcc er det relativt enkelt å få SMBus -tilganger til SPD -ROMene til DRAM DIMM -modulene , som gjør at RAM kan brukes.
Med nyere x86 -prosessorer kan prosessorbufferen brukes som RAM til DRAM initialiseres. Prosessorbufferen må også initialiseres til Cache-as-RAM-modus, men dette krever færre instruksjoner enn å initialisere DRAM. Dessuten er initialisering av Cache-as-RAM-modus spesifikk for CPU-arkitekturer, og dermed mer generisk enn DRAM-initialisering, som er spesifikk for hvert brikkesett og hovedkort.
For de fleste moderne x86-plattformer brukes komponenter med lukket kildekode som bare er levert av leverandøren for oppsett av DRAM. For Intel-systemer kreves FSP-M, mens AMD ikke har nåværende støtte. Binær AGESA brukes for tiden til proprietær UEFI-fastvare på AMD-systemer, og denne modellen forventes å overføre til fremtidig AMD-relatert kjernestøtte.
Utvikle og feilsøke coreboot
Siden coreboot må initialisere bare maskinvaren, må den portes til hvert brikkesett og hovedkort som den støtter. Før initialisering av RAM , initialiserer coreboot den serielle porten (kun adressering av hurtigbuffer og registre), slik at den kan sende feilsøkingstekst til en tilkoblet terminal . Den kan også sende bytekoder til port 0x80 som vises på en to-sekssifret skjerm på et tilkoblet POST-kort .
Et annet portingshjelpemiddel var det kommersielle "RD1 BIOS Savior" -produktet fra www.ioss.com.tw, (for ikke å forveksle med US Interagency OPSEC Support Staff på www.iad.gov/ioss/) som var en kombinasjon av to oppstartsminne enheter som kobles til oppstartsminnet og har en manuell bryter for å velge mellom de to enhetene. Datamaskinen kan starte fra en enhet, og deretter kan bryteren veksles slik at datamaskinen kan omprogrammere eller "blinke" den andre enheten. Et dyrere alternativ er en ekstern EEPROM / NOR -blitsprogrammerer .
Det er også CPU -emulatorer som enten erstatter CPU eller kobler til via en JTAG -port, med Sage SmartProbe som et eksempel. Koden kan bygges på eller lastes ned til BIOS -emulatorer i stedet for å blinke BIOS -enheten.
Nyttelast
Coreboot kan laste en nyttelast, som kan skrives ved hjelp av libpayload -hjelperbiblioteket . Eksisterende nyttelast inkluderer følgende:
- SeaBIOS , en liten implementering av x86 BIOS, for det meste skrevet i 16-bit C ved bruk av GNU C-kompilatoren
- TianoCore , en gratis og åpen kildekode-implementering av UEFI
- OpenBIOS , en gratis og åpen kildekode-implementering av åpen fastvare
- GNU GRUB , en bootloader
- FILO, en GRUB-lignende oppstartslaster med USB-støttestøtte
- Etherboot , det kan starte et operativsystem over nettverket
- gPXE / iPXE , etterfølgeren til Etherboot, fungerer når den kjøres under SeaBIOS eller TianoCore
- Depthcharge brukes av Google for Chrome OS
- En gren av Das U-Boot ble brukt av Google for Chromium OS tidligere
European Coreboot Conference
Ett fysisk møte er den europeiske Coreboot -konferansen som ble arrangert i oktober 2017 og varte i 3 dager.
Konferansehistorie
| Arrangement og år | Dato | Vertsby | Sted | Ressurser | Temaer |
|---|---|---|---|---|---|
| ECC2017 | 26.10. - 29.10 | Bochum , Tyskland | RUB konferansesenter | https://ecc2017.com |
Varianter
Coreboot har en rekke varianter fra den opprinnelige kodebasen, hver med litt forskjellige mål:
- librecore - En variant med mer fokus på frihet , datamaskiner som ikke er x86 -instruksjonssett og rammeverk for fastvareutvikling.
- Libreboot - En variant med hovedfokus for å fjerne alle binære blobs.
Libreboot er etablert som en distribusjon av coreboot uten proprietære binære blobs . Libreboot er ikke en rett gaffel av coreboot; i stedet er det en parallell innsats som jobber tett med og baserer seg så ofte på den siste coreboot som oppstrømsleverandør, med patcher slått sammen oppstrøms når det er mulig. I tillegg til å fjerne proprietær programvare, prøver libreboot også å gjøre coreboot enkel å bruke ved å automatisere bygge- og installasjonsprosessene.
Libreboot -prosjektet muliggjorde nødvendige endringer for helt libre -varianter av noen ThinkPad- , MacBook- og ARM Chromebook -bærbare datamaskiner.
Se også
Referanser
Videre lesning
- Inne i Linux -oppstartsprosessen , av M. Jones, IBM
- Åpne BIOSer for Linux , av Peter Seebach (kun arkiv)
- LinuxBIOS klar for mainstream , av Bruce Byfield
- Første stasjonære hovedkort støttet av LinuxBIOS: GIGABYTE M57SLI-S4 , av Brandon Howard
- Videoopptak av Ron Minnichs LinuxBIOS -tale fra FOSDEM 2007
- Coreboot Your Service , Linux Journal , oktober 2009
- media.ccc.de - Søk etter "Peter Stuge"
Eksterne linker
-
Media relatert til Coreboot på Wikimedia Commons -
Offesiell nettside