Linux 更新 CPU microcode

本文详细介绍如何在Linux系统上更新Intel和AMD处理器的Microcode。包括配置内核选项、使用microcode_ctl工具、通过sysfs接口更新以及利用混合initrd进行早期更新的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux 更新 CPU microcode

Kernel 配置

当前Linux kernel 中microcode 模块已提供Intel/AMD CPU更新接口, 配置以下参数启用此模块:

CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_MICROCODE_INTEL_LIB=y

此模块提供三种不同的方式接口:
1. /dev/cpu/microcode,通过第三方工具(如microcode_ctl)将microcode中对应当前系统cpu的ucode写入即可更新 ; kernel 3.9以后版本需开启 kernel配置参数保持兼容;

CONFIG_MICROCODE_OLD_INTERFACE=y
  1. sysfs接口,echo 1 > /sys/devices/system/cpu/microcode/reload内核将自动查找/lib/firmware/intel-ucode/目录下基于当前CPU(格式为:family-model-stepping)更新文件并执行更新操作;
  2. EARLY方式,kernel在初始化后,加载混合了microcodecpio与initrdramfs的initrd自动完成更新操作; 需kernel3.9之后版本并开启配置参数:
CONFIG_MICROCODE_INTEL_EARLY=y
CONFIG_MICROCODE_AMD_EARLY=y
CONFIG_MICROCODE_EARLY=y

microcode更新

确认当前待更新microcode CPU 版本及步进等信息:

cat /proc/cpuinfo  |grep "model\|microcode\|stepping\|family" |head -n 5
cpu family      : 6
model           : 45
model name      : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
stepping        : 7
microcode       : 0x70a

可知当前CPU ucode 文件为* 06-2d-07*

下载CPU microcode
AMD’s Operating System Research Center.
Intel’s download center.
解压为一个单一文件: microcode.dat

下载[microcode_ctl] (https://fedorahosted.org/microcode_ctl/)

方法一

使用 microcode_ctl 1.7版本中microcode_ctl 直接更新即可:

microcode_ctl -u microcode.dat
方法二

使用 microcode_ctl v2.x intel-microcode2ucode转换工具.

cp microcode.dat /lib/firmware/
cd /lib/fimware
# 解码 microcode.dat 并在当前目录下生成基于`intel-ucode`目录的CPU更新文件
intel-microcode2ucode microcode.dat 
# 通知内核自动更新
echo 1 > /sys/devices/system/cpu/microcode/reload 
方法三

已知当前CPU更新文件为06-2d-07, 创建混合initrd:

mkdir initrd
cd initrd
mkdir -p kernel/x86/microcode
# Intel CPU文件名为 GenuineIntel.bin; AMD CPU 文件名为 AuthenticAMD.bin
cp /lib/firmware/intel-ucode/06-2d-07 kernel/x86/microcode/GenuineIntel.bin
find . | cpio -o -H newc >../ucode.cpio
cd ..
cat ucode.cpio /boot/initrd.img > initrd-ucode.img

修改grub配置参数,重启即可完成更新.

initrd initrd-ucode.img

更新完成

cat /proc/cpuinfo  |grep "model\|microcode\|stepping\|family" |head -n 5
cpu family      : 6
model           : 45
model name      : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
stepping        : 7
microcode       : 0x710
......

RHEL/CentOS 7 在系统安装时会自动更新当前CPU microcode, 用的是方式2&方式3共存方式, 所有CPU microcode都包含在microcode_ctl中:

cat /usr/lib/systemd/system/microcode.service
[Unit]
Description=Load CPU microcode update
After=basic.target
ConditionVirtualization=false

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/usr/bin/bash -c "echo 1 > /sys/devices/system/cpu/microcode/reload"

[Install]
WantedBy=basic.target
cpio -t < initramfs-3.10.0-327.el7.x86_64.img
.
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/GenuineIntel.bin
early_cpio
36 blocks

其他Linux发行版未测试,相信应该也是一样.

参考

https://www.kernel.org/doc/Documentation/x86/early-microcode.txt
https://fedorahosted.org/microcode_ctl/
https://downloadcenter.intel.com/download/26400/Linux-Processor-Microcode-Data-File?v=t
https://fitzcarraldoblog.wordpress.com/2014/11/06/updating-intel-cpu-microcode-from-gentoo-linux/
http://www.timelordz.com/wiki/Microcode
http://manpages.ubuntu.com/manpages/trusty/man8/iucode_tool.8.html

<think>我们被要求查看Linux系统中CPU的版本信息。根据提供的引用,我们可以通过多种命令来获取CPU信息,特别是版本信息(如型号、主频等)。主要参考引用[2]、[3]、[4]:引用[2]:使用`cat/proc/cpuinfo|grepname|cut-f2-d:|uniq-c`可以查看CPU型号。引用[3]:使用`cat/proc/cpuinfo`可以查看cpu相关信息,包括型号、主频、内核信息等。引用[4]:同样提到使用`cat/proc/cpuinfo|grepname|cut-f2-d:|uniq-c`查看CPU信息(型号),并给出了查看物理CPU个数、每个物理CPU的核数、逻辑CPU个数的方法。因此,我们可以通过以下步骤查看CPU版本信息:1.**查看CPU的型号和版本信息**:命令:`cat/proc/cpuinfo|grep"modelname"|uniq`或者使用:`cat/proc/cpuinfo|grep"modelname"|cut-f2-d:|uniq`这样可以得到CPU的型号名称,例如:Intel(R)Core(TM)i5-6500CPU@3.20GHz2.**查看更详细的CPU信息**:如果想查看所有CPU信息,可以直接使用:`cat/proc/cpuinfo`这会输出每个逻辑CPU的详细信息,包括vendor_id、cpufamily、model、stepping、microcodecpuMHz等。3.**查看物理CPU个数、每个物理CPU的核数、逻辑CPU个数**(引用[4]):-物理CPU个数:`cat/proc/cpuinfo|grep"physicalid"|sort|uniq|wc-l`-每个物理CPU的核数:`cat/proc/cpuinfo|grep"cpucores"|uniq`-逻辑CPU个数:`cat/proc/cpuinfo|grep"processor"|wc-l`4.**使用lscpu命令**(虽然引用中没有提到,但这是一个常用命令):命令:`lscpu`这个命令会以更易读的方式显示CPU架构信息,包括型号、核心数、线程数、架构、操作模式等。注意:在有些系统中,`/proc/cpuinfo`可能不会直接提供“modelname”,但通常都会有。另外,不同的架构(如ARM)可能字段名称略有不同。因此,针对用户问题“查看Linux系统中CPU的版本信息”,我们主要使用第一个命令来获取型号(版本)信息。步骤:打开终端,输入命令:```bashcat/proc/cpuinfo|grep"modelname"|uniq```或者更简洁的:```bashgrep"modelname"/proc/cpuinfo|uniq```示例输出:modelname:Intel(R)Core(TM)i5-6500CPU@3.20GHz如果系统有多个相同的CPU,那么输出可能只有一行(因为uniq去重了),否则会显示多行(每个逻辑CPU一行,但型号相同)。另外,也可以使用`lscpu`命令,它会包含Modelname字段。所以,我们给出两种方法。回答结构:1.直接给出查看CPU型号(版本)的命令。2.解释命令的含义。3.提供其他相关命令以获取更多信息。注意:用户可能没有安装额外的工具,所以我们优先使用/proc/cpuinfo的方法,因为这是所有Linux系统都有的。同时,根据引用[3]的提示,如果用户想查看所有版本信息(包括发行版等),可以使用`lsb_release-a`,但这不是CPU相关的,所以这里不强调。最后,生成相关问题。</think>### 如何在 Linux 系统中查看 CPU 版本信息 #### 方法 1:通过 `/proc/cpuinfo` 文件(最常用) 执行以下命令查看完整的 CPU 信息,重点关注 **model name** 字段: ```bash cat /proc/cpuinfo | grep -E "model name|stepping|microcode|cpu MHz" ``` **输出示例**: ``` model name : Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz stepping : 5 microcode : 0xea cpu MHz : 3800.000 ``` - **model name**:CPU 具体型号和主频(关键版本信息) - **stepping**:硬件修订版本号 - **microcode**:CPU 微码版本 - **cpu MHz**:实际运行频率[^2][^4] #### 方法 2:专用型号提取命令 直接获取 CPU 型号名称(简化输出): ```bash cat /proc/cpuinfo | grep "model name" | uniq | cut -d':' -f2 ``` **输出示例**: ``` Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz ``` #### 方法 3:使用 `lscpu` 命令(结构化视图) 获取包括架构、型号、核心数的完整信息: ```bash lscpu | grep -E "Model name|Architecture|CPU(s)|Stepping" ``` **输出示例**: ``` Architecture: x86_64 Model name: Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz Stepping: 5 CPU(s): 16 ``` #### 方法 4:查看 CPU 物理信息 ```bash dmidecode -t processor | grep -E "Version:|Family:|Manufacturer:" ``` **输出示例**: ``` Manufacturer: Intel Version: Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz Family: Other ``` > ⚠️ 需 root 权限执行[^3] #### 关键字段解析 | 字段名 | 含义 | 示例值 | |----------------|-----------------------|----------------------------------------| | `model name` | CPU 完整型号 | Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz | | `stepping` | 硬件修订版本 | 5 | | `cpu family` | CPU 产品家族 | 6 (Intel) / 25 (AMD Zen3) | | `microcode` | 固件版本 | 0xea | | `cpu cores` | 物理核心数 | 8 | --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值