Aktualizacja mikrokodu firmy Intel w VMware
VMware zapewnia regularne aktualizacje mikrokodów dla procesorów Intel w ESXi. Po zainstalowaniu tych aktualizacji, nowe wersje mikrokodu firmy Intel są automatycznie instalowane podczas procesu uruchamiania. W tym artykule pokazujemy jak sprawdzić wersję mikrokodu na serwerze z uruchomionym VMware ESXi 6.7 i jak można zainstalować nowszą wersję mikrokodu w razie potrzeby.
Przykładowa konfiguracja
W tym przykładzie wykorzystujemy następującą konfigurację:
- Server z płytą główna ASUS P10S-M z BIOS-em w wersji 4401 (Uwaga: ten przykładowy system nie znajduje się na HCL (Hardware Compatibility List) firmy VMware)
- VMware ESXi 6.7 (bezpośrednio po instalacji, bez poprawek)
Ten przykład został wykonany 27.08.2018 r. z najnowszymi wersjami BIOS-u, mikrokodu i oprogramowania dostępnymi w tym czasie. Pokazuje on, w jaki sposób można zainstalować najnowsze aktualizacje bezpieczeństwa w środowiskach o kluczowym znaczeniu dla bezpieczeństwa, zarówno pod względem mikrokodu, jak i aktualizacji oprogramowania.
Wersja BIOS-u
Najpierw sprawdzamy wersję BIOS-u płyty głównej:
[root@localhost:~] esxcfg-info | grep -i bios |----BIOS UUID................................................0x50 0xaa 0xab 0xc 0x5d 0x93 0x17 0x2c 0x39 0x7b 0x2c 0x4d 0x54 0x47 0xd 0xc1 |----BIOS Vendor..............................................American Megatrends Inc. |----BIOS Version.............................................4401 |----BIOS ReleaseDate.........................................2018-03-05T00:00:00 |----BIOS Asset Tag...........................................To Be Filled By O.E.M. |----Name............................................HardwareSMBIOSHeap |----Group Name..........................HardwareSMBIOS |----World Command Line.................................grep -i bios |----Option Name........................................ignoreHwSMBIOSInfo [root@localhost:~]
Jeśli jest to system Thomas-Krenn, to najnowszą wersję BIOS-u dla płyty głównej można znaleźć w artykule Aktualizacje bezpieczeństwa BIOS-ów. W tym przykładzie została wykorzystana najnowsza aktualnie dostępna wersja BIOS-u.
Wersja mikrokodu
Wersja aktualnie wykorzystywanego mikrokodu możne zostać sprawdzona w shellu SSH poleceniem vsish:
[root@localhost:~] vsish -e cat /hardware/cpu/cpuModelName Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz [root@localhost:~] vsish -e cat /hardware/cpu/cpuList/0 | grep -i -E 'family|model|stepping|microcode|revision' Family:6 Model:158 Stepping:9 Number of microcode updates:0 Original Revision:0x00000084 Current Revision:0x00000084 [root@localhost:~]
W tym przykładzie jest wykorzystywana wersja mikrokodu 0x84.
W dokumencie Microcode Update Guidance udostępnia Intel informacje o dostępnych wersjach mikrokodu (vide Mikrokod firmy Intel - Wersje mikrokodu). W niniejszym dokumencie procesory są wymienione według CPUID (nie na podstawie informacji o rodzinie/modelu/steppingu - Family/Model/Stepping). Po wprowadzeniu polecenia vsish cpuList CPUID jest widoczne w obszarze 1:CPUID leaf obok EAX (w tym przypadku 0x906e9):
[root@localhost:~] vsish -e cat /hardware/cpu/cpuList/0 CPU information { Family:6 Model:158 Type:0 Stepping:9 [...] CPUID:CPUID content { 0:CPUID leaf { EAX:0x00000016 EBX:0x756e6547 ECX:0x6c65746e EDX:0x49656e69 } 1:CPUID leaf { EAX:0x000906e9 [...] Number of microcode updates:0 Original Revision:0x00000084 Current Revision:0x00000084 [...]
Alternatywnie CPUID może zostać określone na podstawie wartości przy Family/Model/Stepping:
- Najpierw należy zapisać wartości znajdujące się przy Family/Model/Stepping w systemie heksadecymalny. W pliku /proc/cpuinfo wartości te są podane w formacie dziesiętnym:
- Family: 6 -> 0x6
- Model: 158 -> 0x9e
- Stepping: 9 -> 0x9
- CPUID ma strukturę 0FFM0FMS. Określając CPUID z wartości przy Family/Model/Stepping należy rozpocząć od końca, od steppingu:
- S (Stepping) = 9
- M (ostatnia cyfra modelu) = e9
- F (Family) = 6e9
- Cyfra 0 = 06e9
- M (przedostatnia cyfra modelu) = 906e9
Poszukując 906e9 w Microcode Update Guidance z 08.08.2018 r., znajdujemy w kolumnie New Production MCU Rev wersję mikrokodu 0x8E. W tym przypadku Intel udostępnia nowszą wersję mikrokodu niż ta, która jest obecnie dostępna w systemie.
Instalacja patcha
VMware udostępnia do pobrania aktualizacje mikrokodu razem z innymi aktualizacjami.
Zainstaluj wszystkie dostępne aktualizacje (tak jak jest opisane w artykule Aktualizacje w VMware ESXi. W tym przykladzie jest to update ESXi670-201808402-BG, ktory zawiera nowy mikrokod.[1]
Kontrola mikrokodu
Kontrola wersji mikrokodu, po zainstalowaniu patcha i restarcie hosta, pokazuje nowy mikrokod w wersji 0x8E:
[root@localhost:~] vsish -e cat /hardware/cpu/cpuList/0 | grep -i -E 'family|model|stepping|microcode|revision' Family:6 Model:158 Stepping:9 Number of microcode updates:1 Original Revision:0x00000084 Current Revision:0x0000008e
Odnośniki
- ↑ VMware ESXi 6.7, Patch Release ESXi670-201808402-BG - Updates cpu-microcode VIB (VMware Knowledge Base Artikel 56538)
Dodatkowe informacje
- Using the ESXi 6.0 CPU Microcode Loading Feature (blogs.vmware.com, 08.05.2015)
Autor: Werner Fischer