Intel-ucode가 업데이트되지 않았나요? 펌웨어 오류: 정오표로 인해 TSC_DEADLINE이 비활성화되었습니다. 마이크로코드를 버전 이상으로 업데이트하십시오.

Intel-ucode가 업데이트되지 않았나요? 펌웨어 오류: 정오표로 인해 TSC_DEADLINE이 비활성화되었습니다. 마이크로코드를 버전 이상으로 업데이트하십시오.

시작할 때 다음 오류가 발생합니다.

[Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version (or later)

/boot/intel-ucode.img의 펌웨어 버전과 dmesg에서 보고한 버전 사이에 불일치 가능성이 있음을 발견했습니다. 그러나 이 문제를 해결하는 방법을 모르겠습니다.

커널/배포판:

# uname -a
Linux workstation 4.13.9-1-ARCH #1 SMP PREEMPT Sun Oct 22 09:07:32 CEST 2017 x86_64 GNU/Linux

CPU 정보(머신은 듀얼 Xeon이며 각 CPU에는 10개의 코어가 있으며 1개만 나열됨)

# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 79
model name      : Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
stepping        : 1
microcode       : 0xb00001c
cpu MHz         : 2200.126
cache size      : 25600 KB
physical id     : 0
siblings        : 20
core id         : 0
cpu cores       : 10
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 20
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cdp_l3 intel_ppin intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt_a rdseed adx smap xsaveopt cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts
bugs            :
bogomips        : 4402.59
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

이 항목은 intel-ucode.img가 먼저 나열하는 필수 두 개의 initrd 라인을 사용하고 있음을 보여줍니다.

# cat /boot/loader/entries/arch.conf 
title          Arch Linux
linux          /vmlinuz-linux
initrd         /intel-ucode.img
initrd         /initramfs-linux.img
options  ...

위 항목을 사용하고 있는지 확인하세요.

# cat /boot/loader/loader.conf 
default arch

내 intel-ucode.img 파일의 날짜가 정확하고 올바른 위치에 있는지 확인했습니다.

# ls -la /boot/
total 137324
drwxr-xr-x 5 root root     4096 Nov  7 02:18 .
drwxr-xr-x 1 root root      224 Oct 29 02:38 ..
drwxr-xr-x 4 root root     4096 May 16  2016 EFI
-rwxr-xr-x 1 root root 35074017 Nov  2 05:58 initramfs-linux-fallback.img
-rwxr-xr-x 1 root root 19212497 Nov  2 05:58 initramfs-linux.img
-rwxr-xr-x 1 root root 27503970 May 19  2016 initramfs-linux-lts-fallback.img
-rwxr-xr-x 1 root root 19029219 Nov  2 05:58 initramfs-linux-lts.img
-rwxr-xr-x 1 root root 21556194 May 29  2016 initramfs-linux-simple-fallback.img
-rwxr-xr-x 1 root root  6569920 May 29  2016 initramfs-linux-simple.img
-rwxr-xr-x 1 root root  1303040 Jul  9 08:15 intel-ucode.img
drwxr-xr-x 3 root root     4096 Jun 24  2016 loader
-rwxr-xr-x 1 root root  5502736 Oct 22 03:09 vmlinuz-linux
-rwxr-xr-x 1 root root  4827424 Oct 30 04:20 vmlinuz-linux-lts

dmesg는 마이크로코드 버전 0xb000020(또는 그 이상)이 필요하고 내 버전은 0xb00001c라고 말합니다.

# dmesg | grep microcode
[    0.000000] microcode: microcode updated early to revision 0xb00001c, date = 2016-05-20
[    0.000000] [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0xb000020 (or later)
[   22.175583] microcode: sig=0x406f1, pf=0x1, revision=0xb00001c
[   22.177119] microcode: Microcode Update Driver: v2.2.

내 마이크로코드 버전이 0xb00001c인 것으로 확인됩니다.

$ grep microcode /proc/cpuinfo
microcode       : 0xb00001c

그러나 iucode_tool내 파일 /boot/intel-ucode.img에 마이크로코드 개정판 0xb000021이 포함되어 있음을 나타내는 것 같습니다.

bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS - 
iucode_tool: system has processor(s) with signature 0x000406f1
microcode bundle 1: (stdin)
selected microcodes:
001/139: sig 0x000406f1, pf_mask 0xef, 2017-03-01, rev 0xb000021, size 26624

문제는 마이크로코드 rev 0xb000021이 사용되지 않는 이유와 이를 올바르게 "로드"하는 방법입니다.

업데이트 - Jasonwryan의 요청에 따른 추가 정보.하지만, 원래 이 질문을 하고 이 업데이트를 제공하는 사이에 실행하여 pacman -Syu새 커널을 얻었습니다. 따라서 이것은 요청된 정보와 현재 출력입니다.uname -a

# pacman -Q linux intel-ucode
linux 4.13.11-1
intel-ucode 20170707-1

# uname -a
Linux workstation 4.13.11-1-ARCH #1 SMP PREEMPT Thu Nov 2 10:25:56 CET 2017 x86_64 GNU/Linux

답변1

uname설치된 커널과 initramfs가 로드되지 않았습니다( 및 출력의 차이점 참조 ). 이는 설치되지 않은 업데이트를 pacman -Q linux실행 중일 수 있음을 의미합니다 ./boot

/bootchroot 를 설치하고 업그레이드를 다시 실행하고 initramfs를 재생성하는지 확인하세요 . /boot있어야 할 곳에 설치될 파일을 정리해야 할 수도 있습니다 .

답변2

이 문제는 intel-ucode.img부팅 중에 파일이 로드되지 않기 때문에 발생할 수 있습니다. 이것마이크로코드ArchWiki 페이지에서는 다음과 같이 설명합니다.

마이크로코드는 부트로더에 의해 로드되어야 합니다. 사용자의 초기 실행 구성은 매우 다양하므로 Arch의 기본 구성은 자동으로 마이크로코드 업데이트를 트리거하지 않을 수 있습니다. 많은 AUR 커널은 이와 관련하여 공식 Arch 커널의 경로를 따릅니다.

이러한 업데이트는 부트로더 구성 파일의 첫 번째 initrd로 /boot/amd-ucode.img 또는 /boot/intel-ucode.img를 추가하여 활성화해야 합니다. 이는 일반 initrd 파일에 추가되는 것입니다. 일반적인 부트로더에 대한 설명은 아래를 참조하세요.

자세한 지침은 이 페이지를 참조하세요. 제 경우에는 systemd-boot를 사용하고 있기 때문에 파일을 다음과 같이 변경했습니다 /boot/loader/entries/arch.conf.

title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=/dev/sda6 rw ipv6.disable=1

도착하다

title   Arch Linux 2
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options root=/dev/sda6 rw ipv6.disable=1

관련 정보