Обновление микрокода процессора Intel
Установка обновлений
Подготовка для установки:
определить версию процессора. Для этого версии пакетов необходимо указать следующим образом:
lscpu
CPU family: 6
Model: 142
Stepping: 12Преобразовать в hex code полученные параметры:
printf "%x\n" 6 = 6
printf "%x\n" 142 = 8е
printf "%x\n" 12 = ссогласно примеру, получим версию 6-8е-0с (текущая версия процессора)
Перед установкой пакетов необходимо найти необходимые версии в GitHub Intel (в разделе Releases согласно полученной на предыдущем шаге версии процессора).
Проверить активную версию микрокода процессора
cat /proc/cpuinfo | grep microcode | sort | uniq
microcode : 0xd2При использовании многонодового кластера, необходимо провести установку с использованием одной из нод. Для этого необходимо пометить ноду неисполняемой:
kubectl cordon $NODENAME
.Необходимо повторить процесс обновления для всех нод. Подробнее об использовании режима по ссылке.
Проверить наличие директории
/lib/firmware/intel-ucode
и создать, если ее нет:mkdir -p /lib/firmware/intel-ucode
Если есть, то сделать бэкап текущей версии:
rsync -av /lib/firmware/intel-ucode /lib/firmware/intel-ucode.bak
Переместить скопированный микрокод в каталог
/lib/firmware
mv 06-03-02 /lib/firmware/intel-ucode
cd /lib/firmware/intel-ucodeПереместить новый микрокод в
/lib/firmware/intel-ucode
Если микрокод с таким же семейством моделей ЦП уже существует в
/lib/firmware/intel-ucode
, вы должны удалить старый существующий микрокод перед добавлением нового микрокода в каталог. В приведенном ниже примере удаляется подпись микрокода 06-55-04.rm -rf /lib/firmware/intel-ucode/family-model-stepping // e.g. rm -fr 06-55-04
Далее скопируйте микрокод, полученный ранее из репозитория (на шаге 1b).
cp family-model-stepping /lib/firmware/intel-ucode/
# e.g. cp 06-55-04 /lib/firmware/intel-ucode/Обновите initrd
update-initramfs -c -k $(uname -r)
reboot
Проверьте, что enclave поднялся:
Проверить поднятые поды enclave
kubectl get pods -A |grep enclave
#необходимо проверить наличие поднятого инстанса и логовУбедиться, что в логах пода указано, что он запущен:
kubectl -n logs exec -it <pod name> -c enclave-server
# в последних строках должно быть указано “server is running on …” или “response time …. ”Так же можно проверить через Grafana:
Перейти к витрине “Kubernetes/Views/Pods”, выбрать enclave из списка подов и проверить наличие трафика в интерфейсе.
Проверка установленной версии
Проверить активную версию микрокода процессора и сверить ее с версией, которую необходимо было установить.
cat /proc/cpuinfo | grep microcode | sort | uniq
microcode : 0xd2
Установка предыдущей версии
Необходимо в случае неработоспособной версии микрокода.
Для установки более ранней версии необходимо
Загрузить ранее сформированную резервную копию из
rsync -av /lib/firmware/intel-ucode /lib/firmware/intel-ucode.bak
Переместить скопированный микрокод в каталог
/lib/firmware
mv 06-03-02 /lib/firmware/intel-ucode
cd /lib/firmware/intel-ucodeУдалите ядро Linux
dpkg --list | grep linux-image
sudo apt-get remove linux-image-`uname -r`Установите еще раз ту же версию ядра. Таким образом после перезагрузки системы установится нужная версия ядра из папки в initramfs.
apt install ./linux-image-<версия ядра>.deb
Перезарузите систему
update-initramfs -c -k $(uname -r)
reboot