Coreboot

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 7 iulie 2022; verificarea necesită 1 editare .

coreboot
Tip de software încorporat , încărcător de sistem de operare și software gratuit și open source
Autor Ronald G. Minnich, Eric Biederman, Li-Ta (Ollie) Lo, Stefan Reinauer și comunitatea coreboot
Scris in C și limbajul de asamblare
Prima editie septembrie 1999 [2]
Platformă hardware ARM , IA-32 și x86_64
ultima versiune
Stat la zi, în curs de dezvoltare
Licență GNU GPL 2
Site-ul web coreboot.org
 Fișiere media la Wikimedia Commons

coreboot (fostul LinuxBIOS [3] ) este un proiect de firmware gratuit pentru un număr de PC-uri aprobat de Free Software Foundation . Scopul proiectului este de a înlocui sistemele BIOS și UEFI proprietare și închise utilizate de majoritatea computerelor personale cu unul ușor proiectat exclusiv pentru a porni și a rula sisteme de operare moderne pe 32 și 64 de biți .

Deoarece coreboot inițializează hardware-ul, designul trebuie adaptat pentru fiecare chipset și fiecare placă de bază . Ca rezultat, coreboot este disponibil doar pentru un număr limitat de platforme hardware și modele de plăci de bază.

O variantă de coreboot este Libreboot , o variantă de coreboot care își propune să elimine complet firmware-ul proprietar (Blobs) .

Informații generale

Sarcina tipică a coreboot este de a încărca nucleul Linux , dar în plus, coreboot poate încărca și rula fișiere executabile ELF , denumite în mod obișnuit încărcături utile .  Sarcina utilă poate fi, de exemplu, Etherboot , care poate porni Linux prin rețea, sau SeaBIOS  , o implementare BIOS gratuită care vă permite să porniți sistemele Windows 2000/XP/Vista/7 și *BSD (anterior încărcarea ADLO era folosită pentru aceasta ). Coreboot poate porni sistemul de operare de pe orice dispozitiv acceptat, cum ar fi Myrinet , QsNet sau SCSI .

Coreboot efectuează inițializarea hardware, pe care sistemul de operare nu o poate realiza complet, după care transferă controlul către modulul Payload, care poate efectua încărcare suplimentară a sistemului de operare sau poate efectua alte acțiuni utile.

Coreboot acceptă arhitecturile x86 , x86-64 , ARM , ARM64, MIPS și RISC-V .

Diferența dintre coreboot și Legacy BIOS este că versiunea x86 pornește în modul protejat după ce a executat doar șaisprezece instrucțiuni de procesor, în timp ce BIOS-urile x86 tipice rulează mai ales în modul real al procesorului. Combinația acestor factori și simplitatea designului intern face ca bootarea de la Coreboot să fie foarte rapidă (în prezent, recordul de pornire la rece cu CoreBoot este de aproximativ 3 secunde).

Deși LinuxBIOS avea cuvântul Linux în numele său, LinuxBIOS putea încărca și alte nuclee de sistem de operare. De exemplu, LinuxBIOS ar putea încărca direct nucleul Plan 9 . Prin urmare, a fost redenumit coreboot .

Sarcină utilă

Coreboot în sine este doar un mic program care inițializează hardware-ul de pe placa de bază, apoi controlul este transferat la unul dintre programele de încărcare utilă:

Dezvoltarea și depanarea coreboot

Deoarece coreboot trebuie să inițializeze hardware-ul, acesta trebuie să fie adaptat pentru a suporta fiecare controler de sistem ( chipset ) și fiecare placă bazată pe un astfel de controler. Adăugarea suportului pentru orice placă nouă este complicată de dificultățile de depanare: informațiile de depanare sunt scoase folosind acest hardware sau acel hardware, dar cum se organizează ieșirea atunci când mijloacele de ieșire nu au fost încă inițializate?

Coreboot folosește mai multe dispozitive și trucuri pentru a ușura depanarea:

Inițializare RAM

Cea mai complexă parte a coreboot-ului este codul care inițializează RAM și controlerul RAM. Cert este că până la inițializarea memoriei RAM nu poate fi folosită. Modul evident de a inițializa controlerul RAM și RAM în sine fără a-l accesa este utilizarea registrelor de uz general ale procesorului. Pentru a simplifica această sarcină complexă, a fost dezvoltat un compilator special în limbaj C  - romcc ( eng.  romcc ) , care generează cod care nu face acces la RAM în timpul lucrului său. romcc compilează codul care inițializează RAM accesând SPD ROM pe DIMM-uri prin SMBus . După executarea acestui cod, memoria RAM poate fi utilizată.

Vezi și

Note

  1. Roth M. Anunțând coreboot 4.1 - 2022.
  2. https://www.linuxjournal.com/article/7170
  3. [LinuxBIOS] Bun venit la coreboot (12 ianuarie 2008). Preluat la 2 iulie 2019. Arhivat din original la 1 iunie 2013.
  4. Copie arhivată . Preluat la 18 martie 2012. Arhivat din original la 23 aprilie 2012.

Link -uri