Sisteme bios deschise pentru linux

Deși poate părea destul de natural ca PC-ul să vibreze când este pornit, de fapt, există un fragment de cod care îl face să facă acest lucru. Acest fragment este integrat în bootloader. În majoritatea PC-urilor, se numește BIOS. (Cuvântul este acronimul sistemului de intrare / ieșire de bază (sistem de intrare / ieșire de bază)). BIOS oferă suport pentru hardware-ul de bază pe care sistemele de operare de la începutul anului x86 le-au folosit pentru a accesa discuri, monitoare și aproape orice altceva.

Unul dintre primele lucruri pe care BIOS-ul le face este să efectueze diverse teste on-off: identificarea (și eventual testarea) memoriei disponibile, determinarea frecvenței ceasului și așa mai departe. În cazul în care testul are succes, computerul bâjbâi o dată. Acest proces se numește test auto-test sau POST. Fanii vorbitori de limbă engleză vor folosi de obicei acest termen ca verb: "Această mașină nu va fi chiar POST, așa că ar trebui să schimbăm memoria". (Această mașină nu trece chiar testul BIOS (POST), deci trebuie să schimbați memoria.)

Ce a făcut BIOS-ul vreodată pentru noi?

Un sistem de operare precum MS-DOS poate încărca drivere suplimentare de dispozitive, cum ar fi o unitate CD-ROM, dar necesită încărcarea tuturor driverelor hardware la pornirea sistemului. Interfața standard furnizată pentru aceste drivere este susținută de BIOS și din acest motiv BIOS trebuie să examineze dispozitivele, să le identifice și, eventual, să le inițieze pentru utilizare.

În mod similar, BIOS este responsabil pentru inițializarea memoriei. Nu toate sistemele de operare necesită ca memoria a fost inițializată, dar mai devreme DOS este de obicei necesară, și chiar și astăzi cele mai multe BIOS-uri, probabil, face acest lucru de dragul de compatibilitate. Numai un singur proces poate fi foarte lung și multe sisteme moderne îl pot deconecta complet sau parțial. În același timp, BIOS-ul va încerca să determine cantitatea de memorie disponibilă. Printre alte acte comise atunci când încărcarea, poate fi inițializa și pentru a permite setarea procesorului cache este dublu CPU, tabelul cu informații despre construcția de procesoare, crearea unei liste de dispozitive PCI atașate la sistem, și chiar lansarea downloaders hardware furnizate de acele dispozitive care pot descărca suplimentare drivere.

Deci, este necesar să facem mult. Atat de mult, recunosc, facand POST si apoi initializand driverele poate dura un minut sau mai mult. BIOS-ul poate efectua diverse interogări hardware în căutarea dispozitivelor de încărcare, iar în unele sisteme chiar încercarea de a efectua boot de rețea prin Ethernet. Cred că un sistem petrece aproximativ cinci secunde inițializarea parametrilor de pornire în rețea, chiar dacă boot-ul de rețea este dezactivat. Este o rușine!

Ultima ordine, dar nu importanta - BIOS-ul face o cantitate destul de mare de lucru la initializare. Ceva, dar nu toate, este util indiferent de ceea ce urmează să descărcați. Alocarea cererilor de întrerupere (IRQ) către dispozitive este probabil adevărată, un serviciu util, deoarece permite sistemului de operare să ia o listă de dispozitive și să înceapă să lucreze fără să le programeze. Multe dispozitive au registre de configurare în care BIOS-ul poate înregistra valori adecvate sau corecte pe baza setărilor din memoria de sistem disponibilă pentru scriere. (În general, această memorie este numită CMOS, deși nu este strict necesar ca aceasta să fie implementată utilizând această tehnologie.)

Ce se întâmplă după ce BIOS-ul face totul? Este undeva (mai des pe disc) găsește un bloc de cod și îl execută, de obicei prin încărcarea sistemului de operare. Dacă sistemul de operare este DOS sau ceva de genul acesta, toată această lucrare de instalare înseamnă că primiți imediat promptul de comandă.

Lucrați dublu

Dar Linux, BSD sau Windows® are drivere proprii. Deci, sistemul de operare citește lista dispozitivelor PCI atașate și începe să descarce aceste drivere. Activitatea efectuată de BIOS este ignorată în cea mai mare parte; Sistemul de operare, odată ce driverul SCSI este încărcat, va examina propriu-zis magistrala SCSI. BIOS-ul oferă doar informații, nimic mai mult și o mare parte din acesta nu este folosit. Tot ce era cu adevărat necesar din BIOS era să încarce prima porțiune a codului (numită încărcător sau bootloader de bootstrap) și să permită funcționarea mașinii.

Diferența exactă de viteză depinde de sistemul de operare. Cu toate acestea, știm că scanarea Linux poate avea loc foarte, foarte rapid la momentul încărcării. Aceasta înseamnă că BIOS-ul nu durează doar aproape jumătate din timpul de pornire până la încărcarea ultimului driver; el petrece probabil mult mai mult. Acest lucru se observă în mod special atunci când mai puțin importante module de kernel (cum ar fi driverele de sunet) pot fi descărcate mai târziu, probabil după încărcarea unor lucruri mai critice (cum ar fi serviciile Web).

Tot ce vrem este să găsim o modalitate de a încărca nucleul fără a aștepta BIOS-ul să facă o mulțime de instalări pe care le va face kernelul, mult mai rapid, mai bine și poate mai fiabil.

Puneți kernel-ul într-o bliț

Există o problemă evidentă care apare atunci când eliminăm toate driverele de dispozitive din BIOS: dacă BIOS-ul nu le încarcă, cum poate citi nucleul? O soluție simplă este să folosiți întregul spațiu, eliberat după eliminarea driverelor, pentru a stoca nucleul minim. Tot ceea ce va trebui să încarce acest kernel este un driver pentru disc, care conține alte module, descărcabile. După ce kernelul începe să funcționeze, pot fi încărcate dinamic.

Mărimea chipsurilor flash BIOS moderne face ca această alternativă să fie surprinzător de viabilă. În multe sisteme, există unul sau două megabytes de memorie flash disponibilă pentru BIOS. Uneori BIOS-ul este într-adevăr atât de mare. În alte cazuri, memoria este mai mult decât necesară, pur și simplu pentru că "în vrac a fost mai ieftin". Și nucleu suficient de analizat comprimat se pot potrivi cu ușurință în acest spațiu, iar noi Linux'ovyh downloader au o vastă experiență în crearea decompressors mici de decompresie miezuri comprimate.

Este posibil ca această soluție să nu fie cea mai bună pentru oamenii care fac dezvoltarea activă a kernel-ului, dar pentru un sistem în care doriți să accelerați o posibilă descărcare, aceasta poate fi o alegere bună. Proiectul LinuxBIOS (vezi Resurse) lucrează la această soluție și ar trebui să fie cel mai potrivit pentru cei care folosesc servere și sisteme încorporate.

Deschideți firmware-ul

Principala sursă de origine pentru încărcătoare încorporate, care nu este proiectată pentru MS-DOS, este Open Firmware. folosit inițial de Sun și Apple, standardul deschis pentru încărcător încorporat este proiectat cu mai puțină atenție sistemului în stil DOS și de mare interes pentru astfel de sisteme, ca și originalul Mac OS, Mac OS X sau Solaris, care se lucreze cu drivere. Deschideți Firmware avantaj semnificativ - este că el „a apărut o dată, a alerga oriunde“: dispozitive cu bootloader hardware pentru Open Firmware va funcționa bine în orice sistem de Open Firmware la autobuz, pe care o puteți insera. Captura este că foarte puține dispozitive create pentru x86 PC au built-in încărcătoare Open Firmware. Cu toate acestea, dacă puteți găsi un astfel de dispozitiv, acesta poate fi o alegere bună; acest lucru, desigur, necesită să vă puteți determina hardware-ul și să standardizați componentele individuale.

Open Firmware - probabil widget-ul cel mai prietenos pentru programele răcoroase. Nu se concentrează pe descărcări rapide, cum ar fi LinuxBIOS, dar, în general, mult mai rapid decât BIOS-ul tradițional al PC-urilor și extrem de prietenos pentru utilizatorii care caută modalități de configurare a mașinilor.

Lumea va fi mai frumoasă dacă producătorii x86 vor începe să utilizeze implicit Open Firmware.

Alte modalități de a crea un BIOS gratuit

Chiar și un BIOS care încearcă să repete funcțiile de bază ale unui BIOS mai tradițional poate face adesea lucrurile mai rapide și mai deschise. De exemplu, puteți ajusta timpul petrecut pentru verificarea dispozitivelor, dacă știți că nu există dispozitive pe acest sistem care să necesite verificarea de la 5 la 10 secunde.

Un lucru important pe care BIOS-ul gratuit îl poate face este să fie puțin mai flexibil în dezvoltarea încărcătoarelor de încărcare. De exemplu, designul OpenBIOS a fost utilizat în combinație cu LinuxBIOS, din care a fost luat codul de nivel scăzut și OpenBIOS Forth nucleu ca sarcină utilă, pentru a îmbunătăți sistemul de la Open Firmware. Cele mai multe dintre cele mai grele lucruri pe sistemele x86 este de a crea un mic bloc de cod care încarcă încărcătorul real; un BIOS mai flexibil ar putea face acest lucru și acest lucru ar rezolva problema.

Există mai multe programe de BIOS destul de specializate, dar nu și gratuite. De exemplu, echipamentul Soekris Engineering, care vine cu un BIOS numit comBIOS, care este mult mai simplu și mai mic decât BIOS-ul standard și se încarcă mult mai repede.

O atenție deosebită și nicio documentație

Când oamenii se confruntă cu probleme legate de computer, una dintre cele mai frecvente sfaturi pe care le primesc este actualizarea BIOS-ului. De ce? Teoretic, BIOS-ul nu este folosit după ce sistemul este pornit. Dar, de fapt, munca de inițializare efectuată de BIOS poate fi decisivă. De exemplu, la sistemul de un x86 secundă am folosit, controlorul de autobuz CardBus a fost inutilizabil, deoarece trebuia să fie programat IRQ; în BIOS-ul actualizat a fost fixat. Teoretic, sistemul de operare ar putea fi, probabil, o recunoaștere specială cod al acestui model special, controlerul CardBus și programarea în ea IRQ, dar placa de producător este mai ușor să scrie codul de programare corect controller, în special pentru acest consiliu special.

În mod tradițional, se crede că în sistemele cu sursă deschisă este mai probabil să prindeți erori. Cu toate acestea, în cazul BIOS-ului, acest lucru nu este atât de evident. În final, creatorii echipamentului pot avea informații suplimentare pe care dezvoltatorii BIOS-urilor cu scop general nu le au. Un BIOS cu utilizare generală liberă ar trebui să poată funcționa pe o duzină de plăci; pe de altă parte, producătorul poate face presupuneri fără să se preocupe de ce va face programul pe alte echipamente.

Adevărat, abordarea deschisă are multe avantaje. De exemplu, BIOS-ul de pe vechiul sistem Alpha pe care l-am folosit acceptă jetoanele controlerului Symbios Logic '875 SCSI. Cu toate acestea, are o listă cu coduri greu de perechi de producători / ID de produs PCI pentru care există suport și va funcționa numai cu carduri din această listă; O hartă de lucru corectă care nu este inclusă în listă este pur și simplu ignorată. Deoarece BIOS-ul este un cod privat, și de fapt ceva vag, nu am putut chiar să reparăm masa; A trebuit să cumpăr un card SCSI de la un anumit producător pentru US $ 220, în loc să utilizez identitatea fizică disponibilă pentru US $ 75.

Este posibil ca un punct de atracție să apară atunci când producătorii de plăci de bază decid să utilizeze BIOS-ul open source în locul asocierii cu una dintre ofertele comerciale principale. Nu știu când se va întâmpla acest lucru și dacă se va întâmpla deloc, dar ar fi frumos să vezi un BIOS cu suport și documentare mai bune.

Utilizați toate acestea

Pentru majoritatea utilizatorilor, toate acestea sunt impracticabile. Pericolul unui cip BIOS programat incorect este destul de grav: calculatorul nu va funcționa deloc până când cipul nu este reprogramat și, deoarece calculatorul nu poate porni să programeze cipul, veți avea nevoie de echipament special. Nu toate, dar unele sisteme au două cipuri de memorie flash și permit să se încarce și apoi să se programeze un al doilea. Astfel, pentru majoritatea oamenilor, experimentarea cu crearea unui BIOS alternativ va fi probabil oarecum riscantă. Cu toate acestea, dacă găsiți un computer vechi în stoc pe care nu vă veți teme să-l stricați și care este susținut de unul dintre BIOS-urile distribuite în mod liber, va fi distractiv să riscați. Oamenii entuziasmați l-ar găsi tentanți.

Până în prezent, această tehnologie este de natură să aducă beneficii persoanelor care lucrează pe grupuri de servere sau sisteme încorporate. Dacă vă interesează cât durează repornirea, atunci acesta este un stimulent serios pentru a investi în muncă și timp pentru a obține ceva care va funcționa pe echipamentul pe care îl utilizați. În plus, niciun proiect de dezvoltare încorporat nu vă va plăcea ca și cum ați face ceva nebun și nesuportat.

În cele din urmă, această tehnologie va oferi producătorilor o alegere mai mare. Producătorii de sisteme încorporate au mai multe opțiuni pentru alegerea unui bootloader încorporat, iar creșterea numărului acestora ne va ajuta să ne îndepărtăm de la un set modest de BIOS-uri proprietare la o piață mai deschisă și mai competitivă.

Obțineți produse și tehnologii

  • Proiectul LinuxBIOS se concentrează direct pe susținerea sistemului Linux.
  • Proiectul OpenBIOS creează o implementare distribuită liber a Open Firmware, care rulează atât pe sistemul PowerPC®, cât și pe x86.
  • PC Weasel este util dacă aveți un BIOS nou sau unul vechi. Oferă consolei consecutive acces la mașină, care crede că are o placă VGA și o tastatură și oferă acces la codurile POST.
  • Sistemele Technologic are o altă versiune a programului BIOS acasă, care se folosește pe sistemele x86 foarte încorporate.
  • Soekris Engineering distribuie BIOS-ul homebrew și, de asemenea, face jucării drăguțe cu lumini intermitente.
  • Creați următoarea dezvoltare în Linux cu software-ul de testare IBM. disponibilă pentru descărcare direct de la dezvoltatorWorks.

Articole similare