Microcode Updation
Позволяет загрузить из BIOS в центральный процессор так называемый микрокод, исправляющий обнаруженные в процессоре ошибки (не секрет, что ранние ревизии процессоров зачастую содержат пусть и не принципиальные, но все же ошибки в отдельных функциональных блоках). Данная возможность появилась, начиная с Pentium II. Рекомендуется всегда включать (Enabled) загрузку микрокода и только в случае нестабильной работы компьютера можно попытаться отключить (Disabled) эту функцию, чтобы выяснить, не является ли это причиной ошибок.
Идентичны рассмотренной:
BIOS Update
CPU Update Data
время выполнения: 0.0132 с;
количество запросов: 4.
© 2008—2012, Александр Микляев.
Все материалы, находящиеся на этом сайте, являются авторскими и защищены российским и международным законодательствами. Использование их в сетевых и офлайновых изданиях без письменного разрешения автора не допускается. Наличие ссылки на оригинал не является оправданием для кражи. Вы можете цитировать описания отдельных опций в частной переписке, при обсуждениях на интернет-форумах, досках объявлений, при написании комментариев к другим статьям при условии наличия рядом с цитатой ссылки на этот сайт. Если вам понравился ресурс, информация, приведенная здесь, помогла в решении ваших проблем с компьютером, буду благодарен за размещение ссылки на данный сайт.
Microcode (Русский)
Состояние перевода: На этой странице представлен перевод статьи Microcode. Дата последней синхронизации: 29 ноября 2018. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Производители процессоров выпускают обновления стабильности и безопасности для микрокода процессора. Несмотря на то, что микрокод можно обновить с помощью BIOS, ядро Linux также может применять эти обновления во время загрузки. Эти обновления предоставляют исправления ошибок, которые могут быть критичны для стабильности вашей системы. Без этих обновлений вы можете наблюдать ложные падения или неожиданные зависания системы, которые может быть сложно отследить.
Особенно пользователи процессоров семейства Intel Haswell и Broadwell должны установить эти обновления, чтобы обеспечить стабильность системы. Но, понятное дело, все пользователи должны устанавливать эти обновления.
Установка
Для процессоров AMD установите пакет amd-ucode .
Для процессоров Intel установите пакет intel-ucode .
Если Arch находится на съемном носителе, вы должны установить микрокод для обоих производителей процессоров.
Включение раннего обновления микрокода
Микрокод должен быть загружен загрузчиком. Из-за большого разнообразия конфигураций ранней загрузки у пользователей обновления микрокода могут быть не применены автоматически конфигурацией Arch по умолчанию. Многие ядра в AUR пошли по пути официальных ядер Arch в этом вопросе.
Чтобы применить эти обновления, добавьте /boot/amd-ucode.img или /boot/intel-ucode.img в качестве первого initrd в конфигурационном файле загрузчика. Это в дополнение к обычному initrd файлу. Смотрите ниже инструкции для популярных загрузчиков.
Примечание: В следующих разделах замените строку производитель_цп вашим производителем, например, amd или intel .
Совет: Для Arch Linux на съемном носителе добавьте оба файла initrd в настройки загрузчика. Их порядок не имеет значения, если они оба указаны до реального образа initramfs.
GRUB
Автоматический способ
Утилита grub-mkconfig автоматически определит обновления микрокода и настроит соответственным образом GRUB. После установки пакета микрокода, перегенерируйте настройки GRUB, чтобы включить обновление микрокода при запуске:
# grub-mkconfig -o /boot/grub/grub.cfg
Ручной способ
Альтернативно пользователи, управляющие настройками GRUB вручную, могут добавить /boot/производитель_цп-ucode.img (или /производитель_цп-ucode.img , если есть отдельный раздел /boot ) следующим образом:
/boot/grub/grub.cfg
. echo 'Loading initial ramdisk' initrd /boot/производитель_цп-ucode.img /boot/initramfs-linux.img .
Повторите это для каждой записи в меню.
systemd-boot
Используйте параметры initrd для загрузки микрокода перед исходным ramdisk следующим образом:
/boot/loader/entries/запись.conf
title Arch Linux linux /vmlinuz-linux initrd /производитель_цп-ucode.img initrd /initramfs-linux.img .
Самый последний микрокод производитель_цп-ucode.img должен быть доступен во время загрузки вашего системного раздела EFI (ESP). ESP должен быть смонтирован как /boot , чтобы обновлять микрокод каждый раз, когда обновляется amd-ucode или intel-ucode . В противном случае копируйте /boot/производитель_цп-ucode.img в ваш ESP при каждом обновлении пакета микрокода.
EFI boot stub / EFI handover
Добавьте два параметра initrd= :
initrd=/производитель_цп-ucode.img initrd=/initramfs-linux.img
The factual accuracy of this article or section is disputed.
Reason: Что это делает, почему этого недостаточно, и почему/как это специфично для данного раздела? (Discuss in Talk:Microcode (Русский)#Addition in EFI Boot stub)
Для ядер, которые были сгенерированы как один файл, содержащий все initrd, cmdline и ядро, сначала сгенерируйте initrd для интеграции, создав новый, следующим образом:
cat /boot/производитель_цп-ucode.img /boot/initramfs-linux.img > my_new_initrd objcopy . --add-section .initrd=my_new_initrd
rEFInd
Отредактируйте опции загрузки в /boot/refind_linux.conf также как в примере EFI boot stub выше, например:
"Boot with standard options" "rw root=UUID=(. ) initrd=/boot/производитель_цп-ucode.img initrd=/boot/initramfs-linux.img"
Пользователи, использующие ручные строфы в esp/EFI/refind/refind.conf для определения ядер, должны просто добавить initrd=/boot/производитель_цп-ucode.img (или /производитель_цп-ucode.img , если есть отдельный раздел /boot ), как требуется для строки опций, а не в основной части строфы. Например:
options "root=root=UUID=(. ) rw add_efi_memmap initrd=/boot/производитель_цп-ucode.img"
Syslinux
Примечание: Между указаниями файлов initrd производитель_цп-ucode.img и initramfs-linux.img не должно быть пробелов. Строка INITRD должна быть точно такой, как показано ниже.
Несколько файлов initrd могут быть разделены запятыми в /boot/syslinux/syslinux.cfg :
LABEL arch MENU LABEL Arch Linux LINUX ../vmlinuz-linux INITRD ../производитель_цп-ucode.img. /initramfs-linux.img .
LILO
LILO и потенциально другие старые загрузчики не поддерживают несколько образов initrd. В этом случае необходимо объединить производитель_цп-ucode.img и initramfs-linux.img в один образ.
Важно: Объединенный образ нужно пересоздавать после каждого обновления ядра!
Примечание: Порядок важен. Исходный образ initramfs-linux.img должен находиться сверху над образом производитель_цп-ucode.img .
Чтобы объединить образы в один initramfs-merged.img , можно использовать следующую команду:
# cat /boot/производитель_цп-ucode.img /boot/initramfs-linux.img > /boot/initramfs-merged.img
Теперь отредактируйте /etc/lilo.conf для загрузки нового образа.
. initrd=/boot/initramfs-merged.img .
И запустите lilo от суперпользователя:
# lilo
Позднее обновление микрокода
Поздняя загрузка обновления микрокода происходит после запуска системы. Для этого используются файлы в /usr/lib/firmware/amd-ucode/ и /usr/lib/firmware/intel-ucode/ .
Для процессоров AMD файлы обновления микрокода предоставляются пакетом linux-firmware .
Для процессоров Intel ни один пакет не предоставляет файлы обновления микрокода (FS#59841). Чтобы использовать позднюю загрузку, вам необходимо вручную извлечь intel-ucode/ из предоставленного Intel архива.
Включение позднего обновления микрокода
В отличие от ранней загрузки, поздняя загрузка обновлений микрокода в Arch Linux включена по умолчанию, используя /usr/lib/tmpfiles.d/linux-firmware.conf . После загрузки файл анализируется с помощью systemd-tmpfiles-setup.service(8) , а микрокод ЦП обновляется.
Для ручного обновления микрокода на запущенной системе запустите:
# echo 1 > /sys/devices/system/cpu/microcode/reload
Это позволяет применять обновления микрокода после обновления linux-firmware без перезагрузки системы. Вы можете даже автоматизировать это с помощью хука pacman, например:
/etc/pacman.d/hooks/microcode_reload.hook
[Trigger] Operation = Install Operation = Upgrade Operation = Remove Type = File Target = usr/lib/firmware/amd-ucode/* [Action] Description = Applying CPU microcode updates. When = PostTransaction Depends = sh Exec = /bin/sh -c 'echo 1 > /sys/devices/system/cpu/microcode/reload'
Отключение позднего обновления микрокода
Для систем AMD микрокод процессора будет обновляться, даже если пакет amd-ucode не установлен, так как файлы предоставлены linux-firmware (FS#59840). Чтобы отключить позднюю загрузку, вы должны переопределить временные файлы /usr/lib/tmpfiles.d/linux-firmware.conf . Это можно сделать, создав файл с тем же именем в /etc/tmpfiles.d/ :
# ln -s /dev/null /etc/tmpfiles.d/linux-firmware.conf
Проверим, обновился ли microcode при загрузке
Чтобы убедиться, что микрокод обновился, воспользуемся dmesg:
# dmesg | grep microcode
На системах Intel вы должны увидеть что-то похожее на это при каждой загрузке, что говорит о том, что микрокод обновился рано:
[ 0.000000] CPU0 microcode updated early to revision 0x1b, date = 2014-05-29 [ 0.221951] CPU1 microcode updated early to revision 0x1b, date = 2014-05-29 [ 0.242064] CPU2 microcode updated early to revision 0x1b, date = 2014-05-29 [ 0.262349] CPU3 microcode updated early to revision 0x1b, date = 2014-05-29 [ 0.507267] microcode: CPU0 sig=0x306a9, pf=0x2, revision=0x1b [ 0.507272] microcode: CPU1 sig=0x306a9, pf=0x2, revision=0x1b [ 0.507276] microcode: CPU2 sig=0x306a9, pf=0x2, revision=0x1b [ 0.507281] microcode: CPU3 sig=0x306a9, pf=0x2, revision=0x1b [ 0.507286] microcode: CPU4 sig=0x306a9, pf=0x2, revision=0x1b [ 0.507292] microcode: CPU5 sig=0x306a9, pf=0x2, revision=0x1b [ 0.507296] microcode: CPU6 sig=0x306a9, pf=0x2, revision=0x1b [ 0.507300] microcode: CPU7 sig=0x306a9, pf=0x2, revision=0x1b [ 0.507335] microcode: Microcode Update Driver: v2.2.
Примечание: Отображаемая дата отвечает не за версию установленного пакета intel-ucode . Это дата последнего обновления микрокода от Intel для вашего конкретного процессора.
Вполне возможно, особенно с новым аппаратным обеспечением, что для вашего CPU нет обновления микрокода. В этом случае вы можете увидеть примерно следующее:
[ 0.292893] microcode: CPU0 sig=0x306c3, pf=0x2, revision=0x1c [ 0.292899] microcode: CPU1 sig=0x306c3, pf=0x2, revision=0x1c [ 0.292906] microcode: CPU2 sig=0x306c3, pf=0x2, revision=0x1c [ 0.292912] microcode: CPU3 sig=0x306c3, pf=0x2, revision=0x1c [ 0.292956] microcode: Microcode Update Driver: v2.2.
На системах AMD, использующих раннюю загрузку, вывод будет выглядеть примерно так:
[ 2.119089] microcode: microcode updated early to new patch_level=0x0700010f [ 2.119157] microcode: CPU0: patch_level=0x0700010f [ 2.119171] microcode: CPU1: patch_level=0x0700010f [ 2.119183] microcode: CPU2: patch_level=0x0700010f [ 2.119189] microcode: CPU3: patch_lev [ 2.119269] microcode: Microcode Update Driver: v2.2.
На системах AMD, использующих позднюю загрузку, в выводе будет отображаться версия старого микрокода перед перезагрузкой микрокода, а новая — после перезагрузки. Это будет выглядеть примерно так:
[ 2.112919] microcode: CPU0: patch_level=0x0700010b [ 2.112931] microcode: CPU1: patch_level=0x0700010b [ 2.112940] microcode: CPU2: patch_level=0x0700010b [ 2.112951] microcode: CPU3: patch_level=0x0700010b [ 2.113043] microcode: Microcode Update Driver: v2.2. [ 6.429109] microcode: CPU2: new patch_level=0x0700010f [ 6.430416] microcode: CPU0: new patch_level=0x0700010f [ 6.431722] microcode: CPU1: new patch_level=0x0700010f [ 6.433029] microcode: CPU3: new patch_level=0x0700010f [ 6.433073] x86/CPU: CPU features have changed after loading microcode, but might not take effect.
Каким ЦП нужны обновления микрокода
Пользователи могут проконсультироваться как у Intel, так и у AMD насчёт поддержки конкретной модели процессора, перейдя по следующим ссылкам:
- Исследовательский центр операционной системы AMD (англ) [устаревшая ссылка 2023-06-17 ⓘ] .
- Центр загрузки Intel [устаревшая ссылка 2023-07-30 ⓘ] .
Обнаружение доступного обновления микрокода
Вы можете узнать, содержит ли intel-ucode.img образ микрокода для вашего процессора с помощью iucode-tool .
- Установите intel-ucode (для обнаружения обновления не требуется менять initrd)
- Установите iucode-tool
# modprobe cpuid
# bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS -
Применение ранней загрузки микрокода в кастомных ядрах
Для того, чтобы ранняя загрузка работала в кастомных ядрах, «CPU microcode loading support» должен быть вкомпилирован в ядро, а не скомпилирован как модуль. Это включает приглашение «Early load microcode», которое должно быть установлено в Y .
CONFIG_BLK_DEV_INITRD=Y CONFIG_MICROCODE=y CONFIG_MICROCODE_INTEL=Y CONFIG_MICROCODE_AMD=y
Смотрите также
- Обновление микрокодов — Опыт сообщества (англ)
- Замечания по обновлению микрокода Intel — Ben Hawkes (англ)
- Загрузчик микрокода ядра — документация ядра (англ)
- Erratum найден в Haswell/Broadwell – AnandTech (англ)
- проект iucode-tool на GitLab (англ)
Retrieved from «https://wiki.archlinux.org/index.php?title=Microcode_(Русский)&oldid=784043»
- CPU (Русский)
- Security (Русский)
А у процессоров бывает обновление прошивки? Или я неправильно понял. см. дальше
Короче в биосе в настройке процессора я прочитал «Microcode Updation» . И сейчас в недоумении, неужели у проца можно сменить прошивку ?
Дополнен 11 лет назад
Если есть в проце флеш память (то есть энергонезависимая, как в флешках) , то я не понимаю, как там информация будет долго сохранятся, несмотря на то, что там жар! Вроде флеш память не рассчитана на большую температуру.
Лучший ответ
обновление биоса бывает
Остальные ответы
Да, можно. Это называется «ревизия». Биос тут не при чем. Но самостоятельно вы это врядли сделаете.
А то, что вы написали-это не процессор, а именно BIOS
ОлегМудрец (12890) 11 лет назад
Дело в том, что это написано в разделе биоса, который называется UPC — то есть центральный процессор.
Microcode Updation — обновление биоса материнки
У АМД-это называется разлочка!
BIOS то же имеет свою версию и его можно прошить. Прошивка у процессора это что то нове. ЛОЛ не бывает. Есть ревизия.
Да, можно.
Например,
http://support.microsoft.com/kb/2493989/ru
ох ну образно есть, ну вот допустим у меня на ноуте установка драйвера процессора приводит к тому что при бездействии проц снижает частоту и повышает по мере надобности, типа это щадит батарею в простое. Как таково это к софту скорее отнести, чем к драйверу, а вот этот апдейт кода, это кажись обновление биоса, там тоже чёт с процом связано. ИМХО
Microcode updation что это
Микрокодом называют прошивку центрального процессора компьютера. Хотя микрокоды и содержатся в прошивке материнской платы (BIOS или UEFI), ядро Linux имеет возможность обновлять микрокод центрального процессора на начальном этапе загрузки системы. Обновление микрокода позволяет как исправить ошибки, допущенные на этапе проектирования центрального процессора компьютера, так и в некоторой мере оптимизировать его работу. Сами же обновления микрокодов выпускаются в формате обычных файлов и размещаются в специальной директории для прошивок устройств в рамках файловой системы Linux.
Данное руководство описывает процесс обновления микрокодов центральных процессоров производства компаний Intel и AMD.
1. Диагностика
Для того, чтобы определить, какая версия микрокода используется в данный момент, проще всего прочитать содержимое виртуального файла с информацией о центральном процессоре:
$ 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).
2. Микрокоды из репозиториев дистрибутива
Популярные дистрибутивы 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
В том случае, если будет установлено обновление, следует перезагрузить компьютер и проверить, имел ли место факт обновления микрокода с помощью команд, рассмотренных в предыдущем разделе.
3. Микрокоды от производителей процессоров
Не стоит устанавливать микрокоды от производителей центральных процессоров без острой необходимости — в большинстве случаев те версии микрокодов, которые распространяются посредством официальных репозиториев дистрибутивов являются оптимальными. Тем не менее, вы можете самостоятельно загрузить опубликованные производителями процессоров микрокоды из репозиториев и разместить их в файловой системе. В случае процессоров от компании 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
Далее нужно перезагрузить компьютер. В процессе загрузки должна использоваться новая версия микрокода.
4. Хотите ознакомиться с дополнительными советами?
Хотите узнать о других настройках и приемах работы с Linux-системами? На данном веб-сайте размещено большое количество подобных материалов.