Obywatelu lecz się sam, czyli jak uaktualniać firmware CPU w Windows
27.11.2019 | aktual.: 02.12.2019 12:46
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).
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:
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).