私のシステムでマイクロコードが有効になっているかどうかを確認する方法と再起動の問題を引き起こすIntel CPUファームウェアパッケージを修正する方法[閉じる]

私のシステムでマイクロコードが有効になっているかどうかを確認する方法と再起動の問題を引き起こすIntel CPUファームウェアパッケージを修正する方法[閉じる]

修理するIntelのCPUファームウェアパッケージによって再起動の問題が発生しているようです。

centos 7.3ディストリビューションを使用していますが、1.14.14 kernelどのパッケージがIntelのCPUファームウェアなのか、どのバージョンに問題があるのか​​、どのように解決するのか知りたいです。

このように考えながらマイクロコードパッケージは正しいです。

私もこれに言及しました。文書ただし、正確なパッケージ名とバージョンは言及されていません。

システムメッセージ:

sh-4.2# cat /proc/cpuinfo 
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 62
model name  : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping    : 4
microcode   : 0x42a
cpu MHz     : 2499.980
cache size  : 25600 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 1
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti retpoline fsgsbase smep erms xsaveopt
bugs        : cpu_meltdown spectre_v1 spectre_v2
bogomips    : 5000.16
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 62
model name  : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping    : 4
microcode   : 0x42a
cpu MHz     : 2499.980
cache size  : 25600 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 1
apicid      : 1
initial apicid  : 1
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti retpoline fsgsbase smep erms xsaveopt
bugs        : cpu_meltdown spectre_v1 spectre_v2
bogomips    : 5000.16
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

sh-4.2#

マイクロコードパッケージ

sh-4.2# yum list installed | grep microcode
microcode_ctl.x86_64             2:2.1-22.5.el7_4                   @updates    
sh-4.2#

また知りたいです:

  1. マイクロコードは正しいIntel CPUファームウェアパッケージですか?
  2. microcode_ctlは実際に何をしますか?
  3. 問題のあるパッケージを識別するためにマイクロコード値をパッケージバージョン/proc/cpuinfoにマッピングする方法は?microcode_ctl

修正する:

Intelでリストされているパッケージのバージョンを比較することができました。ここ私のシステムパッケージとして。まず、CPUID次のコマンドを実行して自分のシステムを特定し、影響をyum install cpuid && cpuid | grep serial受ける対応するバージョンを確認します。CPUID ここ。影響を受けたパッケージを使用しているようで、0x42aこのバージョンを使用する予定ですcat /proc/cpuinfo | grep microcode。影響を受けないのは0x428このパッケージですmicrocode_ctl-2.1-16.3.el7_3.x86_64。このパッケージをインストールしましたが、私のシステムでマイクロコードが有効になっていることを確認できませんでした。

いくつかの質問があります -

  1. 私のコンピュータがmicrocode起動時にアクティブになっているかどうかはわかりません。私はこのコマンドに疲れていて、何も出力しませんdmesg | grep microcode。また、確認してみると、grep -i 'microcode' /boot/config-$(uname -r)マイクロコード設定が「はい」に設定されていますが、ブートタイムログにはdmesg | grep microcode何も表示されません。ここでマイクロコードが実際に有効になっているか、それ以外の場合はどのように有効にするのですか?
  2. 私もこれに言及しました。ブログマイクロコードを有効にしましたが、この段階で停止すると、echo 1 > /sys/devices/system/cpu/microcode/reloadシステムはrootユーザーでもこのファイルを生成できません。

答え1

問題のマイクロコードは、Spectre Variant 2の脆弱性に対して急速に開発された軽減機能とともに、1月3日(RHELの場合)および1月4日(CentOSの場合)にリリースされました。https://lists.centos.org/pipermail/centos-announce/2018-January/022697.html

後で、BroadwellおよびHaswellプロセッサ用のパッケージに含まれるマイクロコードに問題があることが判明し、ロールバックされました。 https://access.redhat.com/errata/RHSA-2018:0093

後者のRedHatセキュリティ勧告によると、microcode_ctlパッケージバージョン2:2.1-22.5.el7_4は、問題のあるマイクロコードがロールバックされたバージョンです。ただし、マイクロコードの更新はファイルに組み込まれているため、initramfsまだマイクロコードに関する問題があると思われる場合は、initramfsファイル(通常はmkinitrdコマンドまたはdracutRHEL / Centos 7以降)を再生成してください。

このmicrocode_ctlパッケージには、実際のマイクロコードファイルと正しいマイクロコードアップデートをファイルに構築するためのいくつかのツールが含まれていますinitramfs。実際のマイクロコードファイルは次の場所にインストールされます/lib/firmware/intel-ucode。マイクロコードの更新が必要な各Intelプロセッサモデルごとに、1つずつかなり多くの小さなファイルがあります。

一部のIntel CPUでは、特定のハードウェアのバグを防ぐために、ブートプロセスの最初にマイクロコードアップデートを適用する必要がある場合があります。

/sys/devices/system/cpu/microcode/reload(具体的には、/proc/cpuinfoモデルコード79および生のマイクロコードを搭載したIntelプロセッサの場合、システムが通常のSMPモードで実行されている間に使用すると、アップデートプロセスは信頼できません。BIOSからマイクロコードアップデートをインストールまたは起動するプロセスまだすべてのコアを起動しておらず、まだ1つのコアでのみ実行されている間、初期起動時に更新されます。

この目的のために、Linuxでは「初期のマイクロコードロード」ツールが開発されました。 initrd/initramfs ファイルにkernel/x86/microcode/GenuineIntel.bin(Intel の場合) または (AMD の場合) というファイルが含まれている場合、kernel/x86/microcode/AuthenticAMD.binカーネルはブート プロセスの初期にそのファイルをマイクロコード更新としてロードしようとします。この機能にはユーザースペースツールは必要ありません。

RHEL/Centos 7 で initramfs ファイルに初期マイクロコード更新ファイルが含まれていることを確認するには、次のコマンドを実行します。

lsinitrd /boot/initramfs-$(uname -r).img | less

出力の先頭が次の場合、マイクロコードアップデートが含まれています。

Image: /boot/initramfs-3.10.0-693.el7.x86_64.img: 20M
========================================================================
Early CPIO image
========================================================================
drwxr-xr-x   3 root     root            0 Oct 11 05:11 .
-rw-r--r--   1 root     root            2 Oct 11 05:11 early_cpio
drwxr-xr-x   3 root     root            0 Oct 11 05:11 kernel
drwxr-xr-x   3 root     root            0 Oct 11 05:11 kernel/x86
drwxr-xr-x   2 root     root            0 Oct 11 05:11 kernel/x86/microcode
-rw-r--r--   1 root     root        12288 Oct 11 05:11 kernel/x86/microcode/GenuineIntel.bin
========================================================================
Version: dracut-033-502.el7

Arguments: -f -v

[... main initrd contents skipped ...]

実際のマイクロコードファイルに加えて、microcode_ctlRPMパッケージには次のものが含まれています。

  • /usr/lib/dracut/dracut.conf.d/01-microcode.conf、このファイルはdracutinitramfsコンストラクタにinitramfsファイルに初期マイクロコードアップデートを追加するように指示します。
  • /usr/lib/systemd/system/microcode.service/sys/devices/system/cpu/microcode/reload以前のマイクロコードアップデートが無効になっているか、実行に失敗した場合は、マイクロコードアップデートをロードするために使用されます。モデルコード79を使用するIntel CPUには特別な例外があります。これらのCPUでは何もしません。
  • /usr/sbin/intel-microcode2ucode、IntelマイクロコードファイルをLinuxマイクロコードアップデートメカニズムで利用可能な形式に変換するツールです。
  • /usr/share/doc/microcode_ctl/README.readme ファイル

仮想マシンで実行している場合は、マイクロコードの更新について心配する必要はありません。これは仮想化ホスト(VM)マネージャのタスクです。できないします。パッケージをインストールしてもmicrocode_ctl仮想マシンで実行しても何も起こりません。

問題のあるマイクロコードをロールバックするには、システムから問題のあるマイクロコードのすべてのソースを削除する必要があります。

  • 問題のあるファームウェアを含むすべてのファームウェアアップグレードをロールバックします。
  • パッケージが問題のあるマイクロコードをロールバックしたバージョンであることを確認してくださいmicrocode_ctl(すでに実行しています)。
  • microcode_ctl現在インストールされているパッケージのインストール時間と一致するようにinitramfsファイルが更新されていることを確認してください。

それから停電そして再起動してください。マイクロコードは電源を入れ直しても持続しません。ただし、CPUは、すでに最新のマイクロコードバージョンがロードされている場合、より低いバージョン番号のマイクロコードの更新を許可しません。

関連情報