Se aprinde intermitent BIOS-ul. Flashing BIOS-ul din Linux Mecanisme pentru accesarea Flash ROM și protecție la scriere

Acest articol continuă subiectul legat de amenințarea corupției BIOS-ului plăcii de bază
scânduri malware. În materialul publicat anterior
si a fost
Un exemplu de program care scrie în Cipul BIOS, considerat
mecanismele de protecție utilizate de producătorii de plăci de bază și motivele pentru care
pentru care aceste mecanisme sunt adesea ineficiente. Să vă reamintim că asta
problema a apărut acum mai bine de 10 ani când a fost introdus media BIOS
utilizați cipuri Flash ROM care permit suprascrierea conținutului fără
interferențe fizice cu computerul. Astfel, posibilitatea de operare
rescrierea (actualizarea) BIOS-ului, a condus la efect secundar– riscul accidentului acestuia
sau denaturare intenționată.

S-ar părea că astăzi s-a spus totul pe această temă. Dar pe măsură ce timpul trece, ele apar
noi tipuri de cipuri Flash ROM și interfețe pentru conectarea acestora. Acest
este însoțită de apariția unor noi metode de protejare a BIOS-ului împotriva persoanelor neautorizate
distorsiuni și, bineînțeles, noi vulnerabilități. În materialul publicat anterior,
un link către care este dat la începutul articolului, subiectul luat în considerare este tratat la
exemplu de platformă care utilizează cipul SST 49LF004A conectat la
Interfață LPC (Low Pin Count). Astăzi, a fost înlocuit cu o interfață SPI
(Interfață periferică serială)
. Amintiți-vă că pentru a suprascrie conținutul
Cip BIOS, programul trebuie să interacționeze cu două blocuri de registre:
registre Interfață flash ROM situat ca parte a „puntului de sud” al chipset-ului și
registre care fac parte din cipul Flash ROM în sine. La mutarea din
Interfața LPC la SPI, arhitectura celor două blocuri indicate s-a schimbat semnificativ.
Prin urmare, este logic să luăm în considerare interacțiunea programelor cu cipul BIOS,
mecanismele de protecție și vulnerabilitățile acestora în raport cu platformele moderne.
Materialul este furnizat cu exemple în asamblare. Folosit pentru experimente
placa de baza Gigabyte GA-965P-S3, construit pe chipset-ul Intel 965,
descris în . Media BIOS folosită pe această placă este
chip SST 25VF080B, descris în. Acest cip are o capacitate de 8 Megabiți
(1 Megaoctet) și se conectează la interfața SPI. Unele chips-uri ale altora
producătorii care folosesc aceeași interfață sunt descriși în . Descriere
Interfața SPI este dată în . Când interacționăm cu controlerul SPI, noi
va trebui să utilizați mecanisme pentru a accesa spațiul de configurare,
descrise în documente.

Interfață SPI: Context istoric

După cum se știe, viteza unui cip de memorie doar pentru citire
(Flash ROM) folosit ca suport BIOS nu are practic niciun efect asupra
performanța generală a computerului. Acest lucru se datorează faptului că la pornire
placa de bază, BIOS-ul este rescris (sau dezambalat) în RAM
Umbra memorie RAM și atunci când accesați BIOS-ul într-o sesiune de sistem de operare, programele funcționează cu
RAM, și nu cu un cip Flash ROM. Prin urmare, spre deosebire de
procesor, memorie, subsistem grafic, a cărui evoluție este însoțită de
creșterea performanței, cipurile Flash ROM și interfețele lor evoluează în
altă direcție. Principalele criterii aici sunt reducerea costurilor,
consumul de energie și spațiul ocupat pe placa de bază. Metoda principală
atingerea acestor obiective - reducerea numărului de conductori între cipul BIOS
și un controler, de obicei parte din „puntea de sud” a chipset-ului. Din punct de vedere
metoda de conectare a cipului BIOS, se pot distinge trei generații de plăci de bază
taxe:

1) Pe plăcile care utilizează magistrala ISA au fost instalate cipuri permanente
dispozitive de stocare cu adrese separate, date și linii de control. La
aceasta pentru fiecare adresă și bit de date, precum și pentru fiecare semnal de control
(citirea, scrisul) avea nevoie de un fir propriu, sau mai degrabă de un conductor tipărit pe tablă.

2) Odată cu apariția chipset-urilor Intel 810, 815, bazate pe arhitectura „hub”,
Autobuzul ISA este de domeniul trecutului. Un număr de dispozitive de pe placa de bază conectate anterior
ISA (controler de dischetă, porturi COM și LPT, cip BIOS), „mutat” în
Număr scăzut de pini sau interfață LPC, al cărei nume se traduce prin „mic
număr de semnale". Adresă, date și semnale de control în această interfață
transmise pe cinci linii (fără a număra semnalele de resetare, ceasul și liniile
alimentare), în modul de multiplexare în timp. Cipurile BIOS folosite
în astfel de platforme, uneori numite Firmware Hub sau FWH. Exemplu de program
ștergerea și scrierea cipului BIOS, dat într-un articol publicat anterior
„BIOS ROM Penetration” N1 și N2” este destinat unor astfel de platforme.

3) Începând de la Chipset Intel 945, „podul de sud” include un controler
magistrală serială specializată Serial Peripheral Interface sau SPI,
folosind transmisia de date de citire și scriere, precum și date de control și stare
informații pe un canal serial de un bit. Acest lucru a făcut posibilă utilizarea
Carcasă cu 8 pini pentru cip BIOS. Acest articol este dedicat luării în considerare
doar astfel de platforme.

Rețineți că interfața LPC este acceptată și de chipset-urile moderne și
Dezvoltatorul plăcii de bază poate folosi cipul BIOS pentru a se conecta
atât LPC cât și SPI. Domeniul de aplicare al interfeței SPI nu este limitat
plăci de bază pentru computere. Un cititor atent ar putea observa
că datorită trecerii la un format de date seriale, fiecare dintre cele descrise
Interfețele utilizează mai multe cicluri de ceas pentru a efectua operațiuni de citire și scriere,
decât predecesorul său, care este plin de o scădere a performanței. Dar asta nu este
apare, întrucât această împrejurare este compensată de o creștere a frecvenței și
optimizarea formatelor de date. Autobuzul ISA funcționează la frecvențe de 5-8MHz, LPC la
33MHz, SPI la 33-50 MHz.

SPI Flash ROM Chip Architecture

Cipurile SPI Flash, în special SST25VF080B, folosesc trei semnale pentru
primirea si transmiterea datelor. SCK (Serial Clock) – intrare pentru ceas
date transmise sau primite. SI (Serial Input) – intrare pentru transmisie
date de la controler la cip, adresa este transmisă bit cu bit de-a lungul acestei linii,
datele care urmează să fie scrise și codurile de comandă de control al microcircuitelor. SO (ieșire serială)
ieșire pentru transferul de date de la cip la controler, bit cu bit de-a lungul acestei linii
Sunt transmise date care pot fi citite, precum și informații despre starea cipului.
Controlerul controlează cipul prin comenzi care inițiază operațiuni
citirea și scrierea datelor, ștergerea, citirea ID-urilor cipurilor, citirea și
intrări în registrul de stare etc.

Scopul fiecăruia dintre cei opt pini ai microcircuitului, o descriere a tuturor comenzilor și
de asemenea, alte detalii sunt cuprinse în.

Arhitectura controlerului SPI

Controlerul SPI inclus în Intel ICH8 southbridge conține mai mult de
20 registre de control și stare. Registrele sunt adresate în spațiul de memorie cu
folosind tehnologia I/O mapată cu memorie, discutată mai devreme
articol publicat „Dispozitive suport de sistem. Cercetare
N ". O descriere a tuturor registrelor și comenzilor controlerului SPI este în afara domeniului de aplicare
În acest articol, vom lua în considerare principalele diferențe dintre modelul software de interfață SPI și
predecesorul său - interfața LPC, concentrându-se pe registre,
folosit la efectuarea operaţiilor de bază - citirea identificatorilor, scrierea şi
ștergerea Flash ROM.

Să vă reamintim că accesul fizic la cipul BIOS (a nu fi confundat cu zona
Shadow RAM) se realizează printr-o fereastră adiacentă marginii superioare
interval 0-4 GB. De exemplu, un ROM Flash de 1 MB va fi disponibil în gamă
FFF00000h-FFFFFFFFh. Pe platforme care utilizează interfețe ISA și LPC, prin
același interval, la efectuarea operațiunilor de ștergere și scriere, se realizează transmisia
comenzi și date scrise pentru cipul Flash ROM, precum și citirea acestuia
stare. Platforma care utilizează interfața SPI discutată în acest articol este
acceptă, de asemenea, citirea conținutului cipului BIOS într-un interval specificat,
ci pentru a transmite informații de control și stare în timpul înregistrării și ștergerii
Flash ROM, se folosește o metodă de acces diferită. Informații pentru pornirea ciclului
Autobuzul SPI (adresă și date) este scris în registrele speciale ale controlerului SPI
(Adresă Flash și, respectiv, Date Flash), apoi în registrul de secvențiere software
Flash Control este trimisă o comandă pentru a efectua un ciclu de accesare a Flash ROM
(citește sau scrie). După aceasta, prin registrul Software Sequencing Flash Status
puteți determina când operațiunea este finalizată și puteți verifica erorile.
Datele citite din Flash ROM se află în registrul Flash Data.

Pe platformele cu interfețe ISA și LPC, transmiterea comenzilor a fost efectuată de
Scrierea directă a octetului codului de comandă în intervalul de adrese Flash ROM. Interfață SPI
folosește o metodă indirectă de trecere a comenzilor printr-un registru de 8 octeți
Meniul OpCode. Fiecare octet al acestui registru stochează codul uneia dintre comenzile pentru
Gestionare flash ROM (scriere, ștergere, citire identificator etc.). Pentru
pentru a începe operația necesară, programul trebuie să transmită numărul de octeți (de la 0 la 7),
care contine codul acestei operatii. Acest număr este transmis în câmpul COP de 3 biți
(Cycle Opcode Pointer), care face parte din codul pe 32 de biți în care este scris
Registrul Software Sequencing Flash Control pentru a declanșa comanda de execuție.
Blocul de registru OpCode Menu inițializează de obicei BIOS-ul când platforma pornește.
Locația octeților opcode într-un bloc de 8 octeți depinde de implementarea BIOS-ului
și poate fi arbitrară, deci programul trebuie să scaneze acest bloc și
determinați sub ce număr se află comanda necesară în ea. Acest număr și
va fi folosit la completarea câmpului COP.

Să ne uităm la utilizarea Software Sequencing Flash Status și
Software Sequencing Flash Control mai multe detalii. Software Sequencing Flash Register
Status are o lățime de 8 biți și este situat la un offset de 90h față de
adresa de bază a controlerului SPI (SPIBAR+90h). Software Sequencing Flash Register
Controlul are o lățime de 24 de biți și este situat la offset 91h. La
programand controlerul, este convenabil sa accesezi cele doua registre specificate cu unul singur
O operație de citire sau scriere pe 32 de biți la adresa 90h. În acest caz, biții 0-7
corespunde registrului Software Sequencing Flash Status, iar biții 8-31 corespund registrului
Controlul Flash Sequencing software. Aceasta este metoda de acces folosită în
exemple de asamblare atașate articolului. Luați în considerare alocarea de biți în
conform numerotării descrise mai sus.

Bit 0(SPI Cycle In Progress) – folosit pentru a determina cuplul
finalizarea operațiunii pe magistrala SPI. „0” înseamnă că magistrala SPI este inactivă și programul
poate începe următorul ciclu. „1” înseamnă că magistrala SPI este ocupată, rulează
tranzacţie. Bit-ul este setat și resetat de hardware și este disponibil numai pentru
citind.

Bit 1(Rezervat) – nu este folosit.

Bit 2(Stare Cycle Done) – setat la „1” de hardware, când
finalizarea tranzacției pe magistrala SPI. Pentru a reseta, programul trebuie să scrie „1” la
bit dat.

Bit 3(Flash Cycle Error) – setați la „1” în hardware dacă
au existat erori în timpul tranzacției: protecție înregistrărilor sau încercare de pornire
următoarea tranzacție înainte ca cea anterioară să fie finalizată. Pentru a reseta, programul trebuie
scrie „1” la acest bit.

Bit 4(Acces Error Log) – setat la „1” de hardware dacă există
locul încercării de a accesa cipul BIOS, încălcând drepturile de acces specificate
intervalele de adrese programate în registrele de configurare a controlerului
SPI.

Biții 5-7

Bit 8(Rezervat) – nu este folosit. După cum se arată mai sus, biții 8-31
Cuvântul de 32 de biți în cauză corespunde biților 0-23 ai registrului software
Controlul blițului secvențial.

Bit 9(SPI Cycle Go) – începeți o tranzacție pe SPI. Scriind un „1” la acest bit
începe executarea unei tranzacții, al cărei tip și conținut sunt determinate
starea biților 10-31 ai aceluiași registru.

Bit 10(Atomic Cycle Sequence) – la transmiterea unui ordin de execuție
tranzacții, scrierea unui „1” la acest bit previne interferența cu evenimentele externe
procesele care au loc pe interfața SPI până la trei
faze: transmiterea comenzii prefix, transmiterea comenzii principale și terminarea
executarea comenzii principale.

Rețineți că în acest fel unul dintre mecanismele de protecție împotriva
coruperea accidentală a conținutului cipului BIOS. Așa-numitul prefix
comenzile (de exemplu, Write Enable) trebuie să precedă comenzile care se modifică
conținutul cipului (de exemplu, Scriere, ștergere). După ce a primit codul de comandă care conține
„1” în acest bit, controlerul realizează toate cele trei faze în hardware, fără
intervenția procesorului înainte de finalizarea instrucțiunii principale.

Bit 11(Sequence Prefix Opcode Pointer) – când utilizați prefix
comenzi (când bitul 10 este setat la „1”, vezi mai sus), acest bit selectează una dintre două
octeți să fie trimiși ca o comandă de prefix către cipul SPI
Flash. Când „0” este selectat octetul mic al registrului de configurare a codului operațional prefix
Înregistrare, cu „1” – senior.

Bitul 12-14(Cycle Opcode Pointer) – acest câmp de biți selectează unul dintre
opt octeți, care vor fi transmise ca comandă principală către cip
SPI Flash. Octeții specificați sunt în registrul Opcode Menu Configuration
Inregistreaza-te.

Bit 15(Rezervat) – nu este folosit.

Biții 16-21(Data Byte Count) – setează numărul de octeți de date pentru
operațiuni de citire sau scriere a datelor. Cantitatea este egală cu valoarea acestui câmp plus 1.
De exemplu: 000000b=1 octet, 111111b=64 octet.

Bit 22(Data Cycle) – Specifică prezența octeților de date în comandă. "0"
înseamnă că nu există date (de exemplu, într-o comandă de ștergere), „1” înseamnă că
datele sunt prezente (de exemplu, în comanda de stare citire, datele sunt
conținutul registrului de stare).

Bit 23(SPI SMI# Enable) – permisiunea de a genera o cerere de întrerupere
Întreruperea managementului sistemului după finalizarea tranzacției, 0=dezactivat,
1=permis.

Biții 24-26(SPI Cycle Frequency) – setează frecvența biților
sincronizare la efectuarea unei tranzacții pe SPI. Se folosesc două valori
(restul sunt rezervate): 000b=20MHz, 001b=33MHz.

Biții 27-31(Rezervat) – nu este folosit.

Rețineți că precompletarea a opt octeți a registrului Opcode Menu
Registrul de configurare și doi octeți ai registrului de configurare a codului opțional prefix
Register execută BIOS-ul când platforma pornește. Prin urmare, la formarea bitmap-urilor
câmpurile selectând codul de comandă și codul de prefix, programul trebuie să scaneze
registrele indicate și găsiți sub ce număr codurile celor solicitate
operațiuni. Opțiunile de umplere pot varia, chiar și între plăcile de bază
un model folosind diferite Versiunea BIOS. Unele utilitare de rescrie
Flash modifică conținutul registrelor specificate.

O descriere detaliată a tuturor registrelor și comenzilor controlerului SPI este dată în.
O descriere a comenzilor chipului SPI Flash este dată în. Informații furnizate
de mai sus, este, de asemenea, ilustrat cu exemple de asamblare atașate articolului.

Mecanisme de acces la ROM Flash și protecție la scriere

În general, pentru a iniția operațiuni de ștergere sau rescriere a cipului
BIOS, programul trebuie să efectueze patru acțiuni:

  1. Configurați înregistrările „punte de sud” ale chipset-ului care controlează plasarea
    cipuri BIOS în spațiul de adrese pentru a oferi acces la întreg
    volumul microcircuitului.
  2. Dezactivați modul de protecție intrări în BIOS, implementat prin intermediul „potului de sud”
    chipset.
  3. Dezactivați modul de protecție la scriere BIOS implementat de cip
    Flash ROM.
  4. Trimiteți o comandă de ștergere sau de scriere pe cipul Flash ROM.

Să luăm în considerare mai detaliat aceste proceduri, mecanismele de protecție care le împiedică
execuția neautorizată și, bineînțeles, vulnerabilitatea acestor mecanisme.

După cum am menționat mai sus, atunci când efectuați operațiuni de scriere și ștergere, software-ul
accesul la cipul SPI Flash se realizează prin registrele controlerului
SPI, fără a utiliza domeniul de adrese în care este disponibilă imaginea cipului
BIOS. Prin urmare, reconfigurarea chipset-ului pentru a accesa intervalul FFF00000h-FFFFFFFFh
V în acest exemplu nu este necesar.

Protecția la scriere implementată de Intel ICH8 „south bridge” se bazează pe aceeași
schema, ca și în platformele generațiilor anterioare, doar adresele diferă
registre Prin urmare, procedura de eliminare a acestei protecție este similară cu procedura
discutat în publicațiile anterioare. BIOS controlează accesul la cip
Registrul BIOS_CNTL pe 8 biți (coordonatele sale în spațiul de configurare
Bus=0, Dispozitiv=1Fh, Funcție=0, Register=DCh). Bit 0 al acestui registru (bit BIOSWE,
BIOS Write Enable) controlează permisiunea de a scrie pe cipul BIOS, 0=dezactivat,
1=permis. Bit 1 al aceluiași registru (bit BLE, BIOS Lock Enable) furnizează
interceptarea opririi neautorizate a protecției. Dacă bitul BLE=1, atunci când încerci
setați BIOSWE=1 bit pentru a genera o întrerupere SMI (System Management).
Întreruperea) cu un apel la o procedură specială inclusă în BIOS. Mai mult, dacă
BIOS-ul va seta BLE=1 bit la pornire; chipsetul nu poate fi resetat programatic
permite, modul de interceptare va fi dezactivat numai după o resetare hardware (de către
semnal RESET). Detalii în.

Practica arată că acest mecanism de „protecție împotriva neprotecției” nu este de obicei
activat de dezvoltatorii BIOS. În toate plăcile de bază examinate
de către autor, bitul BLE = 0, deci pentru a elimina protecția la scriere este suficient să setați bitul
BIOSWE=1, această operațiune nu va fi interceptată.

Cipul Intel ICH8 acceptă și protecția conținutului cipului BIOS,
prin specificarea intervalelor de adrese care sunt protejate de citire și (sau) scriere.
Teoretic, pe baza acest mecanism poate fi implementată o protecție eficientă,
deoarece interdicția este un software activat de procedurile BIOS atunci când platforma pornește și
poate fi eliminat doar cu o resetare hardware. Dar acest mecanism de obicei nu este
activat de dezvoltatorii BIOS.

(Va urma)

Surse de informare


developer.intel.com.

1) Specificația interfeței Intel Low Pin Count (LPC). Revizia 1.1. Document
Număr 251289-001.
2) Fișă de date pentru familia de chipset Intel P965 Express – pentru memoria Intel 82P965
Controller Hub (MCH). Număr document: 313053-001.
3) Fișă de date pentru familia Intel I/O Controller Hub 8 (ICH8) – Pentru Intel 82801HB
Hub-uri de control I/O ICH8 și 82801HR ICH8R. Număr document: 313056-001.

Documente electronice disponibile pe site
www.superflash.com sau
ssti.com.

4) 1 Mbit SPI Serial Flash SST25VF010 Fișă de date. Numarul documentului:
S71233-01-000.
5) 8 Mbit SPI Serial Flash SST25VF080B Fișă de date. Numarul documentului:
S71296-01-000.

Documente electronice disponibile pe site
winbond.com.tw.

6) W25X10A, W25X20A, W25X40A, W25X80A 1M-bit, 2M-bit, 4M-bit și 8M-bit
Memorie flash serială cu sectoare de 4 KB și fișă de date SPI cu dublă ieșire.

Documente electronice disponibile pe site
macronix.com.

7) MX25L802 8M-bit CMOS Serial Flash EEPROM Fișă de date.

Documente electronice disponibile pe site
datakey.com.

8) Specificația interfeței SPI EEPROM. Numărul piesei 223-0017-004 Revizia H.

Documente electronice disponibile pe site
vtitechnologies.com.

9) Specificația interfeței SPI. Nota tehnica 15.

Documente electronice disponibile pe site
pcisig.com.

Documentele de pe pcisig.com sunt disponibile numai pentru membrii PCI
Grup de interes special. A profita motoare de căutare, poate fi găsit
Aceste documente sunt pentru descărcare gratuită.
10) Specificații PCI BIOS. Revizia 2.1.
11) Specificații PCI Local Bus. Revizia 3.0.
12) Specificația arhitecturii punte PCI-la-PCI. Revizia 1.1.

Destul de des, cauza defecțiunii PC-ului este o defecțiune în software. Dacă un astfel de software ca sistem de operare poate fi reinstalat de către un utilizator obișnuit care nu are cunoștințe aprofundate în domeniul IT, este pur și simplu imposibil să reflashați BIOS-ul fără cunoștințe speciale.

Este important de știut!Dacă BIOS-ul nu se încarcă, atunci motivul poate fi orice, chiar și o unitate DVD arsă. Prin urmare, nu trebuie să efectuați intermitent fără a afla cauza defecțiunii.

Acronimul BIOS înseamnă Basic Input Output System, care se traduce literalmente ca un sistem de bază de intrare/ieșire. Când porniți computerul, primul lucru care pornește este acest sistem, care sondajează toate porturile pentru echipamentele conectate, iar dacă dispozitivele defecte sunt conectate la computer, atunci reacția BIOS-ului poate fi foarte diferită - de semnale sonore până când se îngheață sau repornește. Prin urmare, este important să aflați exact de ce computerul nu pornește sau se blochează în timp ce încărcați BIOS-ul.

Figura 1. - Așa arată cipul BIOS pe placa de bază

Dacă aflați că motivul pentru care computerul nu funcționează se află tocmai în acest cip, trebuie să verificați mai întâi cum se comportă computerul la resetarea setărilor stocate în CMOS. Pentru a face acest lucru, trebuie să deconectați bateria de la placa de bază timp de 30 de secunde.

Figura 2 - așa arată o baterie CMOS.

Dacă manipulările de mai sus nu au produs niciun rezultat, atunci este timpul să folosiți artileria grea. Și anume, faceți intermiterea propriu-zisă. Important! Toate manipulările descrise mai jos sunt posibile numai dacă este posibil să intrați în BIOS-ul propriu-zis sau să încărcați sistemul de operare. Cazurile în care este necesară actualizarea unui BIOS funcțional sunt destul de frecvente: dezvoltatorii se grăbesc să-l lanseze pe piață Produs nou, erorile din cod sunt adesea ratate, în urma cărora pot fi observate erori cauzate de BIOS.
Când clipește, este important să vă asigurați că computerul nu este oprit accidental, de atunci fără a merge centru de service insuficient. Dacă ai un laptop, atunci cu excepția încărcător Se recomandă conectarea bateriei.

Pentru informația dumneavoastră! În ultimii ani, puteți găsi două cipuri BIOS pe plăcile de bază: unul funcționează, al doilea este pentru restaurarea firmware-ului original după o actualizare nereușită.

Cel mai simplu mod de a actualiza firmware-ul este direct din sistemul de operare. În primul rând, accesați site-ul web al producătorului și descărcați cel mai mult ultima versiune BIOS pentru placa ta de baza. Pentru a actualiza firmware-ul de sub Windows, există programe speciale, care reduc întregul proces la simplul clic pe butoanele „următorul”. Următoarele trei utilitare de la dezvoltatorii BIOS sunt universale pentru majoritatea plăcilor de bază: utilitarul de actualizare a firmware-ului AMI, utilitarul Award WinFlash și utilitarul Phoenix WinPhlash.
Actualizarea BIOS-ului pe Linux necesită un pic mai mult efort, dar nici nu este o operație super complicată. Mai jos este un exemplu de actualizare a BIOS-ului în distribuțiile bazate pe Debian, care includ Ubuntu, Mint etc. Notă! Toate acțiunile trebuie efectuate ca root.
Și așa am descărcat deja firmware-ul, acum ar trebui să instalăm programul flashrom (http://openbios.info/FlashRom).

#apt-get install flashrom

Înainte de a începe actualizarea, să facem copie de rezervă firmware-ul existent. Pentru a face acest lucru vom folosi următoarea comandă:

#flashrom -r BIOS_bak.bin

Acum puteți începe să coaseți cu liniște, pentru a face acest lucru, introduceți comanda:

#flashrom -Vvw BIOS_new.bin

Dacă firmware-ul pentru chipset-ul dvs. a fost descărcat și programul s-a finalizat cu succes, atunci vă puteți reporni computerul în siguranță.

Dacă nu este posibil să încărcați sistemul de operare, atunci ar trebui să utilizați firmware-ul de pe live-CD (sau să utilizați DOS ca opțiune). Pentru asta avem nevoie dispozitiv extern(unitate flash, CD, dur extern disc, card de memorie etc.) pe care este înregistrat programul de actualizare (de sub DOS folosesc cel mai adesea Award, Uniflash sau AMIFlash) și sistemul live-CD în sine.
Se recomandă actualizarea doar atunci când este cu adevărat necesar. Afișarea intermitentă a unui BIOS care funcționează normal, dar învechit îl poate face inutilizabil. Dacă se întâmplă acest lucru, atunci nu disperați; există încă șansa de a salva pacientul acasă. Pentru a face acest lucru, trebuie să obțineți același microcircuit cu firmware funcțional cunoscut. Încărcăm computerul cu un microcircuit funcțional, legându-l cu fire. Când sistemul de operare este complet încărcat, scoateți cu atenție dispozitivul de lucru, introduceți-l pe cel „mort” și încercați să-l refacă din nou.

flashrom nu funcționează pe placa mea, ce pot face?

  • În primul rând, verificați dacă chipset-ul dvs., cipul ROM și placa de bază sunt acceptate (consultați Hardware acceptat sau utilizați flashrom -L).
  • Dacă placa dvs. are un jumper pentru protecție flash BIOS (verificați manualul), dezactivați-l.
  • Dacă meniul dvs. BIOS are o opțiune de protecție flash BIOS, dezactivați-o.
  • Dacă rulați flashrom pe Linux și vedeți mesaje despre /dev/mem, vedeți următoarea întrebare.
  • Dacă rulați flashrom pe OpenBSD, poate fi necesar să obțineți permisiunea de acces brut prin setare securelevel=-1în /etc/rc.securelevelși repornirea sau repornirea în modul utilizator unic.
  • Consultați această pagină pentru instrucțiuni despre cum să testați corect suportul flashrom (acest lucru poate fi riscant, asigurați-vă că aveți un cip flash de rezervă funcțional).

Ce pot face /dev/mem erori?

  • Dacă flashrom vă spune „/dev/mem mmap a eșuat: Operatie nepermisa":
    • Cea mai comună la momentul scrierii este o opțiune de kernel Linux, CONFIG_IO_STRICT_DEVMEM, care împiedică chiar și utilizatorul root să acceseze hardware-ul din spațiul utilizatorului. Încercați din nou după repornire cu iomem=relaxat în linia de comandă a nucleului dvs.
    • Unele sisteme cu rezervări incorecte de memorie (de exemplu, harta E820) pot avea aceeași problemă chiar și cu CONFIG_STRICT_DEVMEM. În acest caz iomem=relaxat în linia de comandă a nucleului poate ajuta și el.
  • Dacă vă spune „/dev/mem mmap a eșuat: Resursa indisponibilă temporar":
    • Aceasta poate fi o problemă cu PAT (de exemplu, dacă flashrom-ul de memorie încearcă să mapați este deja mapat într-un mod incompatibil). Încercați din nou după repornire cu nopat în linia de comandă a nucleului.
  • Dacă vedeți acest mesaj „Nu se poate mapa memoria mmm folosind /dev/mem: Argument nevalid”:
    • Flashrom-ul dvs. este foarte vechi, mai bine actualizați-l. Dacă problema persistă, încercați opțiunile de kernel menționate mai sus.
  • În general, dacă versiunea dvs. de flashrom este foarte veche, o actualizare ar putea ajuta. Flashrom are acum cerințe mai puțin stricte și funcționează pe mai multe sisteme fără a fi nevoie să schimbe nucleul.

Folosesc flashrom cu linux_spiși nu găsește cipul.Am verificat de două ori toate conexiunile, ce mai pot încerca?

  • În cazul în care nu l-ați setat deja: The linux_spișoferul are o spispeed parametru care ar trebui să fie întotdeauna setat la o viteză rezonabilă (100kHz..10.000kHz, încercați mai întâi frecvențele mai joase). Consultați, de asemenea, pagina de manual flashrom(8).
  • În general,

Am intampinat aceasta problema.
șeful mi-a dat laptopul pe care l-a adus de la benzinărie.
grit, pune-l, scoate-l.
L-am scos - nu vrea pentru că programul de instalare nu găsește hard disk-ul, care este sata.
in service au instalat vechiul BIOS, fara suport usb ceea ce complică foarte mult munca și capacitatea de a determina manual tipul de conexiune la hard disk.
Nu puteți actualiza BIOS-ul prin intermediul discului, deoarece din anumite motive nu vede unitatea în DOS.
dar linia a fost instalată cu un bang și a văzut totul (deși usb-ul a fost încă ignorat)
laptop Acer Aspire 5110
Ideea a venit să instalez o linie și să flash bios-ul prin ea.
Am căutat pe internet și am dat peste un articol.
Cred că va fi de folos.

Practică

Pentru a flashiza un BIOS în Linux, aveți nevoie doar de două lucruri - firmware-ul BIOS-ului însuși și programul care va afișa același BIOS. Programul poate fi descărcat în sursă de aici: http://openbios.info/FlashRom sau instalat în distribuții bazate pe Debian (de exemplu, Ubuntu) folosind APT:

#apt-get install flashrom

Înainte de înregistrare firmware nouîn BIOS, este recomandabil să salvați versiunea veche, adică să copiați firmware-ul care este deja flashat în BIOS, astfel încât mai târziu să puteți restaura cu ușurință totul înapoi:

#flashrom -r MyBIOS.bin

Unde MyBIOS.bin este numele fișierului în care va fi salvat versiune veche firmware. După salvare, puteți scrie firmware-ul descărcat în BIOS pe propriul risc:

#sudo flashrom -w NewBIOS.bin

Unde NewBIOS.bin este numele firmware-ului descărcat. De asemenea, puteți adăuga comutatorul -v, astfel încât programul să verifice firmware-ul înregistrat și puteți adăuga, de asemenea, comutatorul -V, astfel încât rezultatul lucrării să fie mai informativ:

#sudo flashrom -Vvw NewBIOS.bin

Restul cheilor pot fi găsite folosind --help

$flashrom --help

Folosind exemplul, am testat placa de bază GIGABYTE GA-965P-DQ6 rev2.0 cu Ubuntu 8.04 GNU/Linux la bord

Acțiune