Obywatelu lecz się sam, czyli jak uaktualniać firmware CPU w Windows (2019)
Submitted by marcin on Wed 27-Nov-2019

Polski
Polski blog
dobreprogramy.pl
Windows
OS
x86


Artykuł został opublikowany w serwisie dobreprogramy.pl

Jak wszyscy powszechnie wiedzą, obecne procesory to nie tylko kawałek krzemu, ale również potężna dawka wewnętrznego oprogramowania (microcode).

Chciałbym tu przedstawić działające rozwiązanie pozwalające uaktualniać je, zanim zrobi to Microsoft / producent płyty głównej.

Całość została przetestowana pod Windows 10 z procesorem Intela, powinna działać pod różnymi wersjami okienek nie używających Hyper-V, prawdopodobnie może być zastosowana do układów AMD (nie przetestowałem).

image

Pliki Intela

Pobieramy dowolne narzędzie pokazujące nam rodzinę naszego procesora (Family), model (Ext. Model) i wersję (Stepping) - może to być np. CPU-Z z http://cpuid.org.

Ostatnia wersja microcode na stronie Intela pochodzi z sierpnia 2018 (pozostawię bez komentarza...), dlatego polecam udać się do https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/tr... albo https://git.launchpad.net/ubuntu/+source/intel-microcode/tree/intel-uc...

Potrzebujemy stamtąd pobrać plik odpowiadający naszemu Family-Ext.Model-Stepping (np. dla liczb 6, 5E, 3 jest to plik 06-5E-03) i zapisać go w katalogu o nazwie "intel-ucode"

Plik jest w formie binarnej i musimy zmienić jego format - ze strony https://onedrive.live.com/?authkey=%21AE%5F9xt1wnaLT5lk&id=11F4002... z katalogu Executable pobieramy program, w którym wskazujemy katalog nadrzędny do "intel-ucode".

Program stworzy nam plik microcode.dat w nowo stworzonym podkatalogu "Output intel-ucode to microcode.dat".

Pliki AMD

Idziemy do https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmwar... i pobieramy pliki microcode_amd.bin i microcode_amd_fam15h.bin.

Narzędzie

Pobieramy sterownik ze strony https://flings.vmware.com/vmware-cpu-microcode-update-driver, rozpakowywujemy zawartość do nowego katalogu, kopiujemy tam microcode.dat, microcode_amd.bin i microcode_amd_fam15h.bin i z uprawnieniami administratora uruchamiamy install.bat.

Po pomyślnej instalacji wartość dokonać edycji Rejestru i w kluczu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cpumcupdate zmienić wartość Start na niższą (z 2 na 1), co wymusi ładowanie sterownika we wcześniejszym etapu startu systemu.

Potem już tylko wystarczy restart...

Weryfikacja

Informacja o pomyślnym uaktualnieniu pokazuje się w logu systemowym Windows:

image

Wersję mikrokodu możemy też sprawdzić używając HWiNFO z http://www.hwinfo.com (Microcode Update Revision w sekcji procesora).

Ograniczenia

Operację ładowania trzeba z oczywistych względów robić po każdym restarcie (i to nas będzie spoczywać obowiązek sprawdzania, czy przypadkiem nie pojawiła się nowa wersja mikrokodu).

Drugi problem związany jest z Hyper-V. Wymaga on hyperwizora i z jakichś powodów sterownik VMWare jest z nim niezgodny, na chwilę obecną trzeba go usunąć z systemu albo tymczasowo deaktywować używając komendy:

bcdedit /set hypervisorlaunchtype off

(wymagane oczywiście uprawnienia administratora i restart; włączenie można zrobić tą samą komendą z wartością "auto").

PS. Po napisaniu i publikacji w komentarzach zobaczyłem uwagę, że polecane jest pobieranie programu (jednego) z prywatnej plikowni - widzę, że autor uaktualnia to repozytorium i podaje kod źródłowy; jeżeli ktoś zna coś lepszego, proszę się podzielić (ja teraz na szybko znalazłem jeszcze skrypt bin2dat.py).