Skip to main content
Version: 1.1.0

Обновление микрокода процессора Intel

Установка обновлений

  1. Подготовка для установки:

    1. определить версию процессора. Для этого версии пакетов необходимо указать следующим образом:

      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с (текущая версия процессора)

    2. Перед установкой пакетов необходимо найти необходимые версии в GitHub Intel (в разделе Releases согласно полученной на предыдущем шаге версии процессора).

    3. Проверить активную версию микрокода процессора

      cat /proc/cpuinfo | grep microcode | sort | uniq
      microcode : 0xd2
    4. При использовании многонодового кластера, необходимо провести установку с использованием одной из нод. Для этого необходимо пометить ноду неисполняемой: kubectl cordon $NODENAME.

      Необходимо повторить процесс обновления для всех нод. Подробнее об использовании режима по ссылке.

  2. Проверить наличие директории /lib/firmware/intel-ucode и создать, если ее нет: mkdir -p /lib/firmware/intel-ucode

  3. Если есть, то сделать бэкап текущей версии:

    rsync -av /lib/firmware/intel-ucode /lib/firmware/intel-ucode.bak

  4. Переместить скопированный микрокод в каталог /lib/firmware

    mv 06-03-02 /lib/firmware/intel-ucode
    cd /lib/firmware/intel-ucode
  5. Переместить новый микрокод в /lib/firmware/intel-ucode

    1. Если микрокод с таким же семейством моделей ЦП уже существует в /lib/firmware/intel-ucode, вы должны удалить старый существующий микрокод перед добавлением нового микрокода в каталог. В приведенном ниже примере удаляется подпись микрокода 06-55-04. rm -rf /lib/firmware/intel-ucode/family-model-stepping // e.g. rm -fr 06-55-04

    2. Далее скопируйте микрокод, полученный ранее из репозитория (на шаге 1b).

      cp family-model-stepping /lib/firmware/intel-ucode/
      # e.g. cp 06-55-04 /lib/firmware/intel-ucode/
    3. Обновите initrd

      update-initramfs -c -k $(uname -r)
      reboot
  6. Проверьте, что enclave поднялся:

    Проверить поднятые поды enclave

    kubectl get pods -A |grep enclave
    #необходимо проверить наличие поднятого инстанса и логов

    Убедиться, что в логах пода указано, что он запущен:

    kubectl -n logs exec -it <pod name> -c enclave-server
    # в последних строках должно быть указано “server is running on …” или “response time …. ”
  7. Так же можно проверить через Grafana:

    Перейти к витрине “Kubernetes/Views/Pods”, выбрать enclave из списка подов и проверить наличие трафика в интерфейсе.

Проверка установленной версии

Проверить активную версию микрокода процессора и сверить ее с версией, которую необходимо было установить.

cat /proc/cpuinfo | grep microcode | sort | uniq
microcode : 0xd2

Установка предыдущей версии

Необходимо в случае неработоспособной версии микрокода.

Для установки более ранней версии необходимо

  1. Загрузить ранее сформированную резервную копию из rsync -av /lib/firmware/intel-ucode /lib/firmware/intel-ucode.bak

  2. Переместить скопированный микрокод в каталог /lib/firmware

    mv 06-03-02 /lib/firmware/intel-ucode
    cd /lib/firmware/intel-ucode
  3. Удалите ядро Linux

    dpkg --list | grep linux-image
    sudo apt-get remove linux-image-`uname -r`
  4. Установите еще раз ту же версию ядра. Таким образом после перезагрузки системы установится нужная версия ядра из папки в initramfs.

    apt install ./linux-image-<версия ядра>.deb
  5. Перезарузите систему

    update-initramfs -c -k $(uname -r)
    reboot