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) .
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 .
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ă:
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:
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ă.