Микрокодом называют прошивку центрального процессора компьютера. Хотя микрокоды и содержатся в прошивке материнской платы (BIOS или UEFI), ядро Linux имеет возможность обновлять микрокод центрального процессора на начальном этапе загрузки системы. Обновление микрокода позволяет как исправить ошибки, допущенные на этапе проектирования центрального процессора компьютера, так и в некоторой мере оптимизировать его работу. Сами же обновления микрокодов выпускаются в формате обычных файлов и размещаются в специальной директории для прошивок устройств в рамках файловой системы Linux.
Данное руководство описывает процесс обновления микрокодов центральных процессоров производства компаний Intel и AMD.
Для того, чтобы определить, какая версия микрокода используется в данный момент, проще всего прочитать содержимое виртуального файла с информацией о центральном процессоре:
$ cat /proc/cpuinfo | grep microcode
microcode : 0xa
microcode : 0xa
microcode : 0xa
microcode : 0xa
Вывод нескольких строк объясняется тем, что рассматриваемый файл содержит по одной секции на каждое ядро центального процессора и каждый центральный процессор.
После этого следует определиться в том, осуществляется ли обновление микрокода на этапе загрузки системы вообще с помощью команды dmesg:
$ sudo dmesg | grep microcode
[ 0.000000] microcode: microcode updated early to revision 0xa, date = 2018-05-08
[ 0.146477] MDS: Vulnerable: Clear CPU buffers attempted, no microcode
[ 1.383534] microcode: sig=0x106e5, pf=0x2, revision=0xa
[ 1.383655] microcode: Microcode Update Driver: v2.2.
Из вывода видно, что на начальном этапе загрузки микрокод центрального процессора был обновлен до версии 0xa от 08.05.2018. Если строки формата "microcode: microcode updated early to revision ..., date = ..." не обнаруживается в выводе, то обновление микрокода средствами Linux попросту не выполяется. В этом нет ничего страшного - возможно, прошивка материнской платы вашего компьютера содержит его новейшую версию. В любом случае, строка формата "microcode: sig=..., pf=..., revision=..." будет содержать информацию об используемой версией микрокода (значение параметра revision).
Популярные дистрибутивы Linux содержат пакеты с обновленными микрокодами для центральных процессоров производства компаний Intel и AMD. В дистрибутивах Linux Mint/Ubuntu/Debian данные пакеты носят имена intel-microcode и amd64-microcode (они содержат микрокоды для процессоров производства Intel и AMD соответственно), в дистрибутиве Fedora Workstation - имена linux-firmware и microcode_ctl (в первом пакете поставляются прошивки для всего оборудования, а также микрокоды для процессоров производства Intel и AMD, во втором - утилиты для обновления микрокодов). Обычно эти пакеты устанавливаются и обновляются вместе с ядром Linux, но если вы не устанавливаете обновления, следует обновить их вручную с помощью следующей команды:
Linux Mint/Ubuntu/Debian
sudo apt upgrade intel-microcode amd64-microcode
Fedora Workstation
sudo dnf update linux-firmware microcode_ctl
В том случае, если будет установлено обновление, следует перезагрузить компьютер и проверить, имел ли место факт обновления микрокода с помощью команд, рассмотренных в предыдущем разделе.
Не стоит устанавливать микрокоды от производителей центральных процессоров без острой необходимости - в большинстве случаев те версии микрокодов, которые распространяются посредством официальных репозиториев дистрибутивов являются оптимальными. Тем не менее, вы можете самостоятельно загрузить опубликованные производителями процессоров микрокоды из репозиториев и разместить их в файловой системе. В случае процессоров от компании Intel следует загрузить содержимое репозитория https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/tree/main/intel-ucode и скопировать файлы в директорию /lib/firmware/intel-ucode. В случае процессоров от компании AMD - загрузить содержимое репозитория https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amd-ucode и скопировать файлы в директорию /lib/firmware/amd-ucode. После этого нужно пересоздать начальную файловую систему initrd с помощью следующей команды:
Linux Mint/Ubuntu/Debian
sudo update-initramfs -c
Fedora Workstation
sudo dracut --regenerate-all --force
Далее нужно перезагрузить компьютер. В процессе загрузки должна использоваться новая версия микрокода.
Хотите узнать о других настройках и приемах работы с Linux-системами? На данном веб-сайте размещено большое количество подобных материалов.