coreboot - coreboot
| Autori originali | Ronald G. Minnich, Eric Biederman, Li-Ta (Ollie) Lo, Stefan Reinauer și comunitatea coreboot |
|---|---|
| Eliberarea inițială | 1999 |
| Versiune stabila | 4.14 / 10 mai 2021
|
| Repertoriu | |
| Scris in | În principal C și aproximativ 1% în asamblare . Opțional Ada |
| Platformă | IA-32 , x86-64 , ARMv7 , ARMv8, MIPS , RISC-V , POWER8 |
| Tip | Firmware |
| Licență | GPLv2 |
| Site-ul web |
www |
Proiectul software coreboot , cunoscut anterior sub numele de LinuxBIOS , vizează înlocuirea firmware-ului proprietar ( BIOS sau UEFI ) găsit în majoritatea computerelor cu un firmware ușor conceput pentru a efectua doar numărul minim de sarcini necesare pentru a încărca și rula un modern pe 32 de biți sau 64 -sistem de operare pe biți .
Deoarece coreboot inițializează hardware-ul gol, acesta trebuie să fie portat pe fiecare chipset și placă de bază pe care le acceptă. Prin urmare, coreboot este disponibil numai pentru un număr limitat de platforme hardware și modele de plăci de bază.
Una dintre variantele coreboot este Libreboot , o distribuție software complet lipsită de bloburi proprietare , destinată utilizatorilor finali.
Istorie
Proiectul coreboot a început în iarna anului 1999 în Advanced Computing Laboratory din Los Alamos National Laboratory (LANL), cu scopul de a crea un BIOS care să înceapă rapid și să gestioneze erorile în mod inteligent. Este licențiat în condițiile licenței publice generale GNU (GPL). Contribuitorii principali includ LANL , SiS , AMD , Coresystems și Linux Networx, Inc, precum și furnizorii de plăci de bază MSI , Gigabyte și Tyan , care oferă coreboot împreună cu BIOS-ul lor standard sau oferă specificații ale interfețelor hardware pentru unele dintre plăcile lor de bază. Google sponsorizează parțial proiectul coreboot. CME Group , un cluster de schimburi futures , a început să sprijine proiectul coreboot în 2009.
Coreboot a fost acceptat în șapte ani consecutivi (2007-2014) pentru Google Summer of Code . În afară de primele trei modele, toate Chromebookurile rulează coreboot. Codul de la Das U-Boot a fost asimilat pentru a permite suport pentru procesoare pe baza setului de instrucțiuni ARM .
În iunie 2019, Coreboot a început să utilizeze software-ul NSA Ghidra pentru eforturile sale de inginerie inversă privind problemele specifice firmware-ului, după lansarea open source a pachetului de software.
Platforme acceptate
Arhitecturile CPU suportate de coreboot includ IA-32 , x86-64 , ARM , ARM64 , MIPS și RISC-V . Platformele suportate de sistem pe chip (SOC) includ AMD Geode , începând cu procesorul Geode GX dezvoltat pentru OLPC . Artec Group a adăugat suport Geode LX pentru modelul său ThinCan DBE61; acel cod a fost adoptat de AMD și îmbunătățit în continuare pentru OLPC după ce a fost actualizat la platforma Geode LX și este dezvoltat în continuare de comunitatea coreboot pentru a sprijini alte variante Geode. Coreboot poate fi intermitent pe o platformă Geode folosind Flashrom .
Din acea dezvoltare inițială pe platformele bazate pe AMD Geode, suportul coreboot a fost extins pe multe procesoare și chipset-uri AMD. Lista procesorului include Family 0Fh și 10h ( K8 core) și recent Family 14h ( Bobcat core, Fusion APU ). Suportul Coreboot se extinde și la chipset-urile AMD: RS690 , RS7xx , SB600 și SB8xx.
AMD Generic Encapsulated Software Architecture ( AGESA ) —un protocol bootstrap prin care dispozitivele de sistem de pe plăcile principale AMD64 sunt inițializate - as a fost deschis la începutul anului 2011, cu scopul de a oferi funcționalitatea necesară pentru inițializarea sistemului coreboot pe hardware AMD64. Cu toate acestea, astfel de versiuni nu au devenit niciodată baza viitoarei dezvoltări de către AMD și au fost ulterior oprite.
Dispozitivele care pot fi preîncărcate cu coreboot sau unul dintre derivatele sale includ unele Chromebook -uri bazate pe x86 , Libreboot X200 și T400 (ThinkPad X200 și T400 rebranded, respectiv, disponibile de la Minifree, cunoscute anterior sub numele de Gluglug), OLPC XO de la One Laptop per copil initiativa, ThinCan modele DBE61, DBE62 și DBE63 și fanless hardware server / router fabricat de motoarele PC . Toate laptopurile Librem vin cu coreboot.
Unele PC-uri System76 folosesc firmware-ul coreboot TianoCore, inclusiv firmware-ul open source Embedded Controller .
Proiecta
Coreboot încarcă de obicei un kernel Linux , dar poate încărca orice alt executabil ELF de sine stătător , cum ar fi iPXE , gPXE sau Etherboot care poate porni un kernel Linux printr-o rețea sau SeaBIOS care poate încărca un kernel Linux, Microsoft Windows 2000 și ulterior , și BSD-uri (anterior, Windows 2000 / XP și suportul OpenBSD erau furnizate de ADLO). Coreboot poate încărca, de asemenea, un kernel de pe orice dispozitiv acceptat, cum ar fi interconectările Myrinet, Quadrics sau cluster SCI . Este posibil, de asemenea, să porniți direct alte nuclee , cum ar fi un nucleu Plan 9 . În loc să încarce un nucleu direct, coreboot poate trece controlul către un încărcător de boot dedicat, cum ar fi o versiune de GNU GRUB 2 capabilă de coreboot .
Coreboot este scris în principal în C , cu o cantitate mică de cod de asamblare . Alegerea C ca limbaj de programare principal permite audituri mai ușoare ale codului în comparație cu BIOS-ul PC-ului contemporan, care a fost scris în general în asamblare, ceea ce are ca rezultat o securitate îmbunătățită. Există suport pentru construire și timp de rulare pentru a scrie părți din coreboot în Ada pentru a ridica în continuare bara de securitate, dar în prezent este utilizată doar sporadic. Codul sursă este eliberat sub licența GNU GPL versiunea 2 .
Coreboot efectuează cantitatea minimă absolută de inițializare hardware și apoi trece controlul către sistemul de operare . Ca urmare, nu există niciun cod coreboot care rulează odată ce sistemul de operare a preluat controlul. O caracteristică a coreboot-ului este că versiunea x86 rulează în modul pe 32 de biți după executarea a doar zece instrucțiuni (aproape toate celelalte BIOS-uri x86 rulează exclusiv în modul pe 16 biți ). Acest lucru este similar cu firmware-ul UEFI modern , care este utilizat pe hardware-ul mai nou al computerului.
În sine, coreboot nu oferă servicii de apel BIOS . Sarcina utilă SeaBIOS poate fi utilizată pentru a furniza apeluri BIOS și astfel permite coreboot-ului să încarce sisteme de operare care necesită aceste servicii, cum ar fi Windows 2000 / XP / Vista / 7 și BSD-uri. Cu toate acestea, majoritatea sistemelor de operare moderne accesează hardware-ul într-o altă manieră și utilizează apelurile BIOS numai în timpul inițializării timpurii și ca mecanism de rezervă.
Etape Coreboot
- Etapa de blocare: Pregătiți-vă pentru a obține acces Flash și căutați etapa ROM de utilizat
- Etapa ROM: Memorie și inițierea timpurie a chipset-ului (un pic ca PEI în UEFI)
- Etapa RAM: procesor, chipset, placă principală și inițială periferică, alocarea resurselor PCI, crearea tabelelor ACPI, handler SMM (un pic ca etapa DXE în UEFI)
- Încărcătură utilă.
Inițializarea DRAM
Cel mai dificil hardware inițial coreboot este controlerele DRAM și DRAM . În unele cazuri, documentația tehnică cu privire la acest subiect este restricționată prin NDA sau nu este disponibilă. Inițializarea RAM este deosebit de dificilă, deoarece înainte de a inițializa memoria RAM nu poate fi utilizată. Prin urmare, pentru a inițializa controlorii DRAM și DRAM, codul de inițializare poate avea doar registrele de uz general ale procesorului sau Cache-as-RAM ca stocare temporară.
romcc , un compilator C care folosește registre în loc de RAM, ușurează sarcina. Folosind romcc, este relativ ușor să faceți acces SMBus la ROM-urile SPD ale DIMM-urilor DRAM , care permit utilizarea RAM-ului.
Cu procesoarele x86 mai noi, memoria cache a procesorului poate fi utilizată ca memorie RAM până la inițializarea DRAM. Memoria cache a procesorului trebuie inițiată și în modul Cache-as-RAM, dar acest lucru necesită mai puține instrucțiuni decât inițializarea DRAM. De asemenea, inițializarea modului Cache-as-RAM este specifică arhitecturilor CPU, deci mai generică decât inițializarea DRAM, care este specifică fiecărui chipset și placă principală.
Pentru majoritatea platformelor x86 moderne, componentele cu sursă închisă numai binare furnizate de furnizor sunt utilizate pentru configurarea DRAM. Pentru sistemele Intel, este necesar FSP-M, în timp ce AMD nu are suport curent. Binarul AGESA este utilizat în prezent pentru firmware UEFI proprietar pe sistemele AMD și se așteaptă ca acest model să fie transferat la orice viitor suport coreboot asociat AMD.
Dezvoltarea și depanarea coreboot-ului
Deoarece coreboot trebuie să inițializeze hardware-ul gol, acesta trebuie să fie portat la fiecare chipset și placă de bază pe care le acceptă. Înainte de a inițializa memoria RAM , coreboot inițializează portul serial (numai adresele cache și înregistrări), astfel încât să poată trimite text de depanare către un terminal conectat . De asemenea, poate trimite coduri de octeți la portul 0x80 care sunt afișate pe un afișaj cu două cifre hexagonale ale unui card POST conectat .
Un alt ajutor de portare a fost produsul comercial „RD1 BIOS Savior” de pe www.ioss.com.tw, (nu trebuie confundat cu personalul de asistență al US Interagency OPSEC la www.iad.gov/ioss/), care a fost o combinație de două memorii de boot dispozitive care se conectează la mufa de memorie de încărcare și are un comutator manual pentru a selecta între cele două dispozitive. Computerul ar putea porni de pe un dispozitiv, iar apoi comutatorul poate fi comutat pentru a permite computerului să reprogrameze sau să „blocheze” al doilea dispozitiv. O alternativă mai scumpă este un programator de bliț extern EEPROM / NOR .
Există, de asemenea, emulatoare de CPU care fie înlocuiesc CPU - ul, fie se conectează printr-un port JTAG , Sage SmartProbe fiind un exemplu. Codul poate fi construit sau descărcat pe emulatoarele BIOS, mai degrabă decât intermitentul dispozitivului BIOS.
Sarcini utile
Coreboot poate încărca o sarcină utilă, care poate fi scrisă utilizând biblioteca de ajutor libpayload . Sarcinile utile existente includ următoarele:
- SeaBIOS , o mică implementare a BIOS-ului x86, scris în cea mai mare parte pe 16 biți C folosind compilatorul GNU C.
- TianoCore , o implementare gratuită și open-source a UEFI
- OpenBIOS , o implementare gratuită și open-source a Open Firmware
- GNU GRUB , un bootloader
- FILO, un bootloader asemănător GRUB cu suport USB de încărcare
- Etherboot , poate porni un sistem de operare prin rețea
- gPXE / iPXE , succesorul Etherboot, funcționează atunci când rulează sub SeaBIOS sau TianoCore
- Taxa de adâncime este utilizată de Google pentru sistemul de operare Chrome
- O ramură a Das U-Boot a fost folosită de Google pentru Chromium OS în trecut
Conferința europeană Coreboot
O întâlnire fizică este Conferința europeană Coreboot, care a fost organizată în octombrie 2017 și a durat 3 zile.
Istoria conferinței
| Eveniment și an | Data | Orașul gazdă | Locul de desfășurare | Resurse | Teme |
|---|---|---|---|---|---|
| ECC2017 | 26.10. - 29.10 | Bochum , Germania | Centrul de convenții RUB | https://ecc2017.com |
Variante
Coreboot are o serie de variante din baza de cod originală, fiecare cu obiective ușor diferite:
- librecore - O variantă cu mai multă atenție asupra libertății , calculatoarelor de seturi de instrucțiuni non-x86 și cadrelor de dezvoltare firmware.
- Libreboot - O variantă cu un accent principal pentru a elimina toate bloburile binare.
Libreboot a fost stabilit ca o distribuție de coreboot fără bloburi binare proprietare . Libreboot nu este o furcă dreaptă de coreboot; în schimb, este un efort paralel care lucrează îndeaproape și se re-bazează din când în când pe cel mai recent coreboot ca furnizor din amonte, cu patch-uri îmbinate în amonte ori de câte ori este posibil. În plus față de eliminarea software-ului proprietar, libreboot încearcă, de asemenea, să faciliteze utilizarea coreboot-ului prin automatizarea proceselor de construire și instalare.
Proiectul Libreboot a făcut posibile modificările necesare pentru variantele complet libere ale unor laptopuri Chromebook ThinkPad , MacBook și ARM .
Vezi si
Referințe
Lecturi suplimentare
- În cadrul procesului de boot Linux , de M. Jones, IBM
- Deschideți BIOS-urile pentru Linux , de Peter Seebach (numai arhivă)
- LinuxBIOS gata să devină mainstream , de Bruce Byfield
- Prima placă de bază desktop acceptată de LinuxBIOS: GIGABYTE M57SLI-S4 , de Brandon Howard
- Înregistrare video a discursului LinuxBIOS al lui Ron Minnich din FOSDEM 2007
- Coreboot Your Service , Linux Journal , octombrie 2009
- media.ccc.de - Căutați „Peter Stuge”
linkuri externe
-
Medii legate de Coreboot la Wikimedia Commons -
Site oficial