如何在Linux上安装/更新英特尔微码固件
如何使用命令行选项在Linux上为Intel/AMD CPU安装或更新微码固件?
微码不过是Intel或AMD提供的CPU固件。
Linux内核可以在引导时更新BIOS而不用更新BIOS。
处理器微代码存储在RAM中,内核在每次引导时都会更新微代码。
这些来自Intel/AMD的微代码更新需要修复错误或应用勘误表以避免CPU错误。
本教程将学习如何使用Intel在Linux上提供的软件包管理器或处理器微代码更新来安装AMD或Intel微代码更新。
如何找出微码的当前状态
以超级用户身份运行以下命令:
# dmesg | grep microcode
输出示例:请注意,您的CPU完全可能没有微码更新。
在这种情况下,它将如下所示:
[ 0.952699] microcode: sig=0x306a9, pf=0x10, revision=0x1c [ 0.952773] microcode: Microcode Update Driver: v2.2.
如何使用程序包管理器在Linux上安装英特尔微码固件
Linux附带了用于转换和部署x86/amd64的CPU微代码更新的工具。
在Linux上安装AMD或Intel微码固件的过程如下:
- 打开终端应用
- Debian/Ubuntu Linux用户类型:``sudo apt install intel-microcode`
- CentOS/RHEL Linux用户类型:``sudo yum install microcode_ctl`
软件包名称如下所示,用于流行的Linux发行版:
- microcode_ctl和linux-firmware CentOS/RHEL微代码更新包
- 英特尔微码Debian/Ubuntu并克隆英特尔CPUS的微码更新包
- amd64-微代码Debian/Ubuntu并为AMD CPU克隆微代码固件
- linux-firmware用于AMD CPU的Arch Linux微代码固件(默认情况下已安装,您无需执行任何操作)
- 用于Intel CPU的intel-ucode Arch Linux微代码固件
- microcode_ctl,linux固件和ucode-intel Suse/OpenSUSE Linux微代码更新包
警告:在某些情况下,微码更新可能会导致启动问题,例如服务器挂起或在启动时自动重置。
该程序对我有用,我是一位经验丰富的sysadmin。
我对任何硬件故障概不负责。
自行承担风险。
例子
在用于Intel CPU的Debian/Ubuntu Linux上执行以下apt命令/apt-get命令:
$ sudo apt-get install intel-microcode
输出示例:必须重新启动该框才能激活micocode更新:
$ sudo reboot
重新启动后进行验证:
# dmesg | grep 'microcode'
输出示例:
[ 0.000000] microcode: microcode updated early to revision 0x1c, date = 2014-02-26 [ 1.604672] microcode: sig=0x306a9, pf=0x10, revision=0x1c [ 1.604976] microcode: Microcode Update Driver: v2.01 <[email protected]>, Peter Oruba
如果您使用的是RHEL/CentOS,请尝试使用yum命令安装或更新以下两个软件包:
$ sudo yum install linux-firmware microcode_ctl $ sudo reboot $ sudo dmesg | grep 'microcode'
如何更新/安装从英特尔站点下载的微码
仅在供应商推荐时使用以下方法,否则请按照上述方法使用Linux软件包。
大多数Linux发行版维护者通过软件包管理器更新微码。
包管理器方法很安全,已通过许多用户测试。
如何为Linux(20160108版本)安装英特尔处理器微码Blob
好的,首先访问AMD或Intel网站以获取最新的微代码固件。
在此示例中,我有一个名为~/Downloads/microcode-20160108.tgz的文件(请不要忘记检查校验和),该文件可能有助于解决故障/Spectre。
首先使用tar命令将其提取:
$ mkdir firmware $ cd firmware $ tar xvf ~/Downloads/microcode-20160108.tgz $ ls -l
输出示例:
drwxr-xr-x 2 Hyman Hyman 4096 Jan 8 12:41 intel-ucode -rw-r--r-- 1 Hyman Hyman 4847056 Jan 8 12:39 microcode.dat -rw-r--r-- 1 Hyman Hyman 1907 Jan 9 07:03 releasenote
我仅在CentOS 7.x/RHEL 7.x/Debian 9.x和Ubuntu 17.10上测试了以下说明。
如果看不到/sys/devices/system/cpu/microcode/reload文件,则较早发行版附带的较早内核可能无法工作。
请参阅下面的讨论。
请注意,很少有客户在应用固件更新后重启更高的系统。
具体来说,这些系统针对服务器中使用的客户端和数据中心cpus运行Intel Broadwell和Haswell CPU。
不要在Intel Broadwell和Haswell CPU上应用Intel固件版本20160108。
如果可能,请使用包管理器方法。
确保/sys/devices/system/cpu/microcode/reload退出:
$ ls -l /sys/devices/system/cpu/microcode/reload
您必须使用cp命令将所有文件从intel-ucode复制到/lib/firmware/intel-ucode /:
$ sudo cp -v intel-ucode/* /lib/firmware/intel-ucode/
您只需将intel-ucode目录复制到/lib/firmware /。
将重载接口写入1以重载微代码文件:
# echo 1 > /sys/devices/system/cpu/microcode/reload
更新现有的initramfs,以便下次通过内核加载时:
$ sudo update-initramfs -u $ sudo reboot
验证微码在启动时已更新或通过echo命令重新加载:
# dmesg | grep microcode