постоянное обновление микрокода в Linux

947
ccprog

Я просто попытался обновить микрокод для моего процессора Intel Core i3-3217U, следуя инструкциям Intel . Я использую Linux Mint Debian, выпуск 2 (ядро 3.16.0-5-amd64).

Что я сделал:

  • Eсть /sys/devices/system/cpu/microcode/reload
  • Нет /lib/firmware/intel-ucode, только кот /lib/firmware/intel. Я все равно добавил папку из загруженного пакета.
  • Согласно инструкции, как SU я выполнил

    echo 1 > /sys/devices/system/cpu/microcode/reload 

cat /proc/cpuinfo | grep microcodeдает мне 0x1f, которая является обновленной версией - но только до тех пор, пока система работает. После перезагрузки я вернулся к 0x12.

Как сделать обновление постоянным?

1

4 ответа на вопрос

2
Johan Myréen

Вы не можете сделать обновление микрокода Intel постоянным, оно должно загружаться после каждой загрузки. Микрокод хранится в энергозависимой оперативной памяти в процессоре.

2
port443

В качестве промежуточного решения, когда обновление микрокода не перенесено в Debian, вы можете добавить «echo 1> / sys / devices / system / cpu / microcode / reload» в /etc/rc.local после установки обновления микрокода в соответствии с инструкциями Intel. Это довольно позднее исправление, но, вероятно, все в порядке, если вы доверяете своей загрузочной среде :)

1
ccprog

Я обнаружил, что могу загрузить микрокод на начальный виртуальный диск, используя код из пакета debian intel-microcode . В настоящее время это более старая версия микрокодов, но они могут быть переопределены.

После установки пакета я вручную удалил все файлы /lib/firmware/intel-ucodeи заменил их новыми версиями из загрузки Intel. После этого я мог бы обновить initrd.img-<kernel version>с

update-initramfs -u 

grub-mkconfig также выполнит это.

Насколько я понимаю, intel-ucode.imgупомянутый в другом ответе будет так называемый «архив ранних initramfs». Похоже, что скрипт подключения initramfs-tools, включенный в пакет, сам выбирает, помещать ли модуль обновления в отдельный файл .img или в основной файл initrd.img.

Редактировать: Кажется, что новые версии микрокода уже попали в нестабильный пакет . Зависимости не изменяются, поэтому они могут работать на растяжке Debian (или на jessie, на котором я все еще работаю). Я подозреваю, что пройдет всего несколько дней, пока новая версия пакета не будет перенесена обратно. Тогда установки будет достаточно.

0
kori

Обновления микрокода применяются во время загрузки и, следовательно, должны быть добавлены в загрузчик, например, GRUB2 или systemd-boot. В частности, /boot/intel-ucode.img (или там, где этот файл находится в вашей системе) должен быть добавлен в качестве первого образа initrd вашего процесса загрузки (но он не должен заменять ваш обычный образ initrd). Как только пакет обновления микрокода установлен, скрипт grub-mkconfig обычно позаботится об этом сам, но вы можете проверить, есть ли в файле /boot/grub/grub.cfg похожая строка:

initrd /intel-ucode.img /initramfs-linux.img 

Если нет, вы можете либо переустановить пакет микрокода, либо запустить скрипт grub-mkconfig вручную.

Загрузка Intel не включает файлы .img, но только сырой микрокод. Он должен быть встроен в модуль локально, смотрите мой ответ. ccprog 6 лет назад 0
Соглашение Debian, по-видимому, встраивает микрокод как модуль в существующий образ ядра, но мой совет переустановить пакет микрокода все еще остается в силе. Из файла README пакета intel-microcode в Debian Stretch: в системе Debian по умолчанию (которая использует ядро ​​Debian, загрузчик grub и инструменты initramfs для создания initramfs для ядра), установите «intel-microcode» пакет и его зависимости и перезагрузка. kori 6 лет назад 0
Как я уже сказал, единственным предостережением является то, что в настоящее время версии микрокодов, включенных в пакет, старше, чем версии, опубликованные Intel. Существует пост-установочный хук для обновления initrd.img сразу после установки пакета. Чтобы получить новые версии, вы должны пересобрать вручную после обмена файлами микрокода. ccprog 6 лет назад 0
О боже, я полностью пропустил ту часть, которую вы скачиваете прямо с Intel! Я прошу прощения за это. Вы можете попробовать стрейч-бэкпорт для более новой версии, но он все еще может устареть (3.20171117). Если вам повезет, вы можете установить пакет из Sid (нестабильный), который имеет текущую версию [3.20180312.1] (https://packages.debian.org/sid/intel-microcode) - глядя на зависимости и их версии, он должен работать прямо из коробки. kori 6 лет назад 1
Спасибо за ссылку, я пропустил эту. Депы не изменились, так что, надеюсь, это скоро придет в бэкпорт. ccprog 6 лет назад 0

Похожие вопросы