Virtualizarea - actualizarea microcodului intel și amd în vmware esxi - cum funcționează

VMware din blogul său a atins un subiect interesant - actualizarea microcodului pentru procesoarele Intel și platformele AMD din hypervisor VMware ESXi, care face parte din vSphere. Esența problemei aici este aceasta: procesoarele moderne oferă posibilitatea de a-și actualiza microcodul la pornire, ceea ce vă permite să corectați erorile produse de furnizor sau să remediați locațiile problematice. De obicei, actualizările microcodului merg împreună cu actualizarea BIOS, pentru care sunt responsabili furnizorii de procesoare (Intel sau AMD) și furnizorii de platforme (HP, Dell și alții).







Între timp, nu toți producătorii de platforme fac actualizări BIOS la timp, așa că este nevoie de mult timp pentru a obține actualizarea microcodului, care poate fi critică dacă eroarea din versiunea actuală a microcodului este foarte gravă. ESXi are propriul mecanism de încărcare microcod, care vă permite să descărcați actualizări ale microcodului atunci când îl descărcați în cazul în care ați primit aceste actualizări de la furnizor și știți ce faceți.

Trebuie să spun că în versiunea VMware vSphere 6.0 actualizările microcodului sunt lansate numai la momentul încărcării și numai într-un stadiu foarte timpuriu, deoarece o descărcare ulterioară poate schimba datele deja inițializate de VMkernel încărcate.

De asemenea, VMware nu utilizează cele mai recente actualizări ale microcodului pentru procesoare, deoarece doar cele mai importante actualizări sunt lansate pentru o securitate maximă, iar furnizorii de platforme solicită timp pentru a testa actualizările.

Există două moduri de a actualiza microcodul procesoarelor în ESXi - prin instalarea pachetului VIB și prin actualizarea fișierelor pachet de microcode din spațiul de stocare ESXi. Dacă te uiți în dosarul / bootbank. atunci veți vedea acele fișiere:

Aceste fișiere conțin, de asemenea, actualizări de microcod și se duc la pachetul CPU-microcod VIB al hypervisorului ESXi. Mai jos vom descrie procedura de actualizare a microcodului pentru ESXi utilizând ambele metode. Metoda preferată este să faceți actualizarea prin pachetul VIB, deoarece aceasta este cea mai sigură. De asemenea, veți avea nevoie de o mașină Lunix pentru manipularea microcodului. Tot ceea ce faci mai jos se face la propriul risc și risc.

1. Descărcați actualizări microcod.







Pentru Intel, executați comanda:

După despachetare, veți primi un fișier microcode.dat. Acest fișier este în format ASCII, va trebui să fie convertit în binar. AMD are un fișier binar (3 bucăți, toate necesare) în depozit.

2. Faceți un pachet de microcoduri binare.

Creați următorul script python și îl numiți intelBlob.py:

#! / usr / bin / python
• Faceți o blob binară brut din formatul microcodului Intel.
# Necesită Python 2.6 sau o versiune ulterioară (inclusiv Python 3)
# Utilizare: intelBlob.py

pentru linia în sys.stdin:
dacă linia [0] == '/':
continua
hvals = line.split (',')
pentru hval în hali:
dacă hval == '\ n' sau hval == '\ r \ n':
continua
val = int (hval, 16)
pentru schimbare în (0, 8, 16, 24):
outf.write (bytearray ([(val >> schimbare) 0xff]))

Apoi, creați binarele de microcode. Pentru Intel:

pisă intel / *. dat | ./intelBlob.py uc_intel
gzip uc_intel

3. Metoda de înlocuire a fișierelor cu actualizarea microcodului.

Totul este simplu. Executăm una dintre următoarele comenzi pentru fișierele primite:

Apoi puteți trece la pasul 5.

4. Metodă de creare a unui pachet VIB și instalarea acestuia.

Aici trebuie să utilizați utilitarul VIB Autor. care poate fi pusă pe o mașină Linux (în momentul în care utilitatea este în format RPM, optimizată pentru SuSE Enterprise Linux 11 SP2, care este sugerată a fi utilizată). Descărcați fișierul cpu-microcode.xml și modificați-l cu privire la versiunea microcod.

Apoi faceți pachetul VIB cu următoarea comandă:

vibauthor -c -d cpu-microcode.xml \
-p uc_intel.gz, boot, uc_intel, 200 \
-p uc_amd.gz, boot, uc_amd, 201

Dacă nu aveți nevoie să includeți microcodul de la unul dintre furnizorii procesorului în fișierul VIB, trebuie doar să eliminați partea de comandă de la "-p".

Apoi, setați VIB prin esxcli:

acceptarea software-ului esxcli set --level = CommunitySupported
software-ul esxcli vib install \
-v file: /vmfs/volumes/datastore1/cpu-microcode-6.0.0-0.test.0.vib

Apoi verificați fișierele uc _ *. B00. pe care l-ați făcut la pasul 2, în directorul / altbootbank.

După ce reporniți gazda ESXi, căutați în jurnalul /var/log/vmkernel.log pentru mesajele MicrocodeUpdate. De asemenea, puteți să vă uitați prin fișierele / hardware / cpu / cpuList / *. în care, undeva în final, vor fi următoarele linii:

Numărul actualizărilor microcodului: 1
Revizuire originală: 0x00000011
Revizia curentă: 0x00000017

Aceasta înseamnă că ați actualizat microcodul procesoarelor. ESXi actualizează microcodul tuturor procesoarelor în serie. Puteți verifica acest lucru uitând la parametrul actual de revizuire.

De asemenea, puteți dezactiva toate actualizările microcodului pe gazdă setând opțiunea microcodeUpdate = FALSE din partiția de boot VMkernel. De asemenea, este interzisă actualizarea microcodului la versiunile anterioare (downgrade) și la versiunile experimentale. Aceasta poate fi dezactivată utilizând opțiunea microcodeUpdateForce = TRUE (cu toate acestea, microcodul majorității procesoarelor poate fi actualizat numai dacă există o semnătură digitală a furnizorului). În plus, pentru a pune actualizarea experimentală a microcodului, trebuie să activați opțiunile "debug mode" sau "debug interface" din BIOS-ul serverului, apoi reporniți-l complet.







Trimiteți-le prietenilor: