「マイクロコード」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:CPU de:Microcode en:Microcode es:Microcode ru:Microcode zh-CN:Microcode Wikipedia:ja:マイクロプログラム方式|プロセッサ...」)
 
5行目: 5行目:
 
[[ru:Microcode]]
 
[[ru:Microcode]]
 
[[zh-CN:Microcode]]
 
[[zh-CN:Microcode]]
[[Wikipedia:ja:マイクロプログラム方式|プロセッサのマイクロコード]]はプロセッサのファームウェアと同種のものです。カーネルは BIOS のアップデートをすることなくプロセッサのファームウェアをアップデートすることができます。
+
[[Wikipedia:ja:マイクロプログラム方式|プロセッサのマイクロコード]]はプロセッサのファームウェアと同種のものです。カーネルは BIOS のアップデートをすることなくプロセッサのファームウェアをアップデートすることができます。[https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=23082 Intel] のウェブサイトより:
   
:''マイクロコードのデータファイルには全ての Intel プロセッサのための最新のマイクロコードが定義されています。Intel はマイクロコードのアップデートをリリースすることで、それぞれのプロセッサの仕様のアプリケーションに文書化されているようにプロセッサの挙動を修正します。一般的に、このマイクロコードの更新を行うのは BIOS のアップデートによりますが、これは管理者を困らせるような羽目になることがあるのを Intel は了解しています。Linux オペレーティングシステムや VMware ESX プロダクトには起動後にマイクロコードを更新する仕組みが備わっています。例えば、Linux システムの {{ic|/etc/firmware}} ディレクトリにファイルが配置されると、オペレーティングシステムの仕組みがこのファイルを使用します。'' ~[https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=23082 Intel]
+
:''マイクロコードのデータファイルには全ての Intel プロセッサのための最新のマイクロコードが定義されています。Intel はマイクロコードのアップデートをリリースすることで、それぞれのプロセッサの仕様のアプリケーションに文書化されているようにプロセッサの挙動を修正します。一般的に、このマイクロコードの更新を行うのは BIOS のアップデートによりますが、これは管理者を困らせるような羽目になることがあるのを Intel は了解しています。Linux オペレーティングシステムや VMware ESX プロダクトには起動後にマイクロコードを更新する仕組みが備わっています。例えば、Linux システムの {{ic|/etc/firmware}} ディレクトリにファイルが配置されると、オペレーティングシステムの仕組みがこのファイルを使用します。''
   
 
{{Note|Arch Linux はアップデートを処理するのに {{ic|/etc/firmware}} は使いません、代わりにファームウェアのバイナリは {{ic|/usr/lib/firmware/*.}} に作成されます。}}
 
{{Note|Arch Linux はアップデートを処理するのに {{ic|/etc/firmware}} は使いません、代わりにファームウェアのバイナリは {{ic|/usr/lib/firmware/*.}} に作成されます。}}
19行目: 19行目:
 
=== Intel のマイクロコードのアップデートを有効にする ===
 
=== Intel のマイクロコードのアップデートを有効にする ===
   
{{warning|linux 3.17-2 と linux-lts 3.14.21-2 以降から、Intel のマイクロコードのアップデートは自動では行われなくなりました。}}
+
{{warning|linux 3.17-2 と linux-lts 3.14.21-2 以降から、Intel のマイクロコードのアップデートは自動では行われなくなりました。多くの AUR のカーネルも公式の Arch カーネルと同じようになっています: linux-ck 3.16.6-3 から、Intel のマイクロコードのアップデートは自動で行われないようになりました。}}}}
   
 
アップデートを有効にするにはブートローダーの設定ファイルに {{ic|/boot/intel-ucode.img}} を一番目の initrd として追加する必要があります。通常の initrd ファイルとは別に追加します。
 
アップデートを有効にするにはブートローダーの設定ファイルに {{ic|/boot/intel-ucode.img}} を一番目の initrd として追加する必要があります。通常の initrd ファイルとは別に追加します。
35行目: 35行目:
 
{{ic|/boot/loader/entries/*.conf}} で {{ic|initrd}} オプションを二回使用:
 
{{ic|/boot/loader/entries/*.conf}} で {{ic|initrd}} オプションを二回使用:
   
{{bc|title Arch Linux
+
title Arch Linux
linux /vmlinuz-linux
+
linux /vmlinuz-linux
initrd /intel-ucode.img
+
initrd /intel-ucode.img
initrd /initramfs-linux.img
+
initrd /initramfs-linux.img
options ...}}
+
options ...
   
 
==== rEFInd ====
 
==== rEFInd ====
45行目: 45行目:
 
上記の EFI ブートスタブと同じように {{ic|/boot/refind_linux.conf}} のブートオプションを編集する、例:
 
上記の EFI ブートスタブと同じように {{ic|/boot/refind_linux.conf}} のブートオプションを編集する、例:
   
{{bc|1="Boot with standard options" "ro root=UUID=(...) quiet initrd=/intel-ucode.img initrd=/initramfs-linux.img"}}
+
"Boot with standard options" "ro root=UUID=(...) quiet initrd=intel-ucode.img initrd=initramfs-linux.img"
   
 
手動で {{ic|/boot/refind.conf}} にカーネルを定義している場合はメインの部分ではなく options 行に {{ic|1=initrd=/intel-ucode.img}} や {{ic|/boot/intel-ucode.img}} を追加してください。
 
手動で {{ic|/boot/refind.conf}} にカーネルを定義している場合はメインの部分ではなく options 行に {{ic|1=initrd=/intel-ucode.img}} や {{ic|/boot/intel-ucode.img}} を追加してください。
   
 
==== Grub ====
 
==== Grub ====
Arch の開発チームが grub におけるマイクロコードのアップデート処理を決定する ([https://bugs.archlinux.org/task/42354 FS#42354]参照)、grub ユーザーはマイクロコードのアップデートの有効2つの選択肢が存在します。以下に記載されている二つの方法のうち、どちらか一方を選択してください。
+
grub-1:2.02-beta2-5 から、''grub-mkconfig'' が自動的にマイクロコードのアップデート処理す。{{Pkg|intel-ucode}} をインストールした後に {{ic|# grub-mkconfig -o /boot/grub/grub.cfg}}実行して、grub の設定を再生成し、マイクロコードのアップデートのロードを有効にしてください。
   
  +
もしくは、grub の設定ファイルを手動で管理したい場合、以下のように {{ic|grub.cfg}} に {{ic|/intel-ucode.img}} や {{ic|/boot/intel-ucode.img}} を追加します:
===== 1. grub.cfg を手動で編集 =====
 
以下のように {{ic|grub.cfg}} に {{ic|/intel-ucode.img}} や {{ic|/boot/intel-ucode.img}} を手動で追加:
 
   
  +
[...]
{{bc|
 
  +
echo 'Loading initial ramdisk ...'
[...]
 
  +
initrd /intel-ucode.img /initramfs-linux.img
echo 'Loading initial ramdisk ...'
 
  +
[...]
initrd /intel-ucode.img /initramfs-linux.img
 
[...]}}
 
   
 
{{Note|すべてのメニューエントリに追加してください。}}
 
{{Note|すべてのメニューエントリに追加してください。}}
  +
 
{{warning|更新があると {{ic|/usr/bin/grub-mkconfig}} によってファイルが自動的に上書きされるため、ファイルの変更は取り消されてしまいます。}}
 
{{warning|更新があると {{ic|/usr/bin/grub-mkconfig}} によってファイルが自動的に上書きされるため、ファイルの変更は取り消されてしまいます。}}
 
{{Tip|initramfs のパスと同じように、{{ic|/intel-ucode.img}} のパスは boot パーティションとの相対パスです。つまり別個の {{ic|/boot}} パーティションを使用する場合は {{ic|/intel-ucode.img}} を使用し、{{ic|/boot}} を分割しない場合は {{ic|/boot/intel-ucode.img}} を使用します。}}
 
 
===== 2. /etc/grub.d/10_linux を手動で編集 =====
 
 
ファームウェアイメージを検出して適切に {{ic|grub.cfg}} に書き出させるように {{ic|/etc/grub.d/10_linux}} を手動で編集してから、{{ic|grub-mkconfig -o /boot/grub/grub.cfg}} を使って {{ic|grub.cfg}} を再生成します:
 
 
{{hc|/etc/grub.d/10_linux|<nowiki>
 
if test -n "${initrd}" ; then
 
+ if test -f "${dirname}/intel-ucode.img"; then
 
+ ucode="${rel_dirname}/intel-ucode.img"
 
+ else
 
+ ucode=
 
+ fi
 
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
 
message="$(gettext_printf "Loading initial ramdisk ...")"
 
sed "s/^/$submenu_indentation/" << EOF
 
echo '$(echo "$message" | grub_quote)'
 
- initrd ${rel_dirname}/${initrd}
 
+ initrd ${ucode} ${rel_dirname}/${initrd}
 
EOF
 
</nowiki>}}
 
 
{{Note|このファイルに変更を加えると上流でパッケージのバージョンが上がった時に正しくインストールされない可能性があります。[[Pacnew と Pacsave ファイル]]を見て下さい。}}
 
   
 
==== Syslinux ====
 
==== Syslinux ====
  +
  +
{{Note|initrd ファイルの {{ic|intel-ucode}} と {{ic|initramfs-linux}} の間に空白は挟まないで下さい。ピリオド記号は省略ではありません。以下の記述そのままに編集するようにしてください。}}
   
 
{{ic|/boot/syslinux/syslinux.cfg}} で複数の initrd をカンマで区切って指定できます:
 
{{ic|/boot/syslinux/syslinux.cfg}} で複数の initrd をカンマで区切って指定できます:
   
{{bc|LABEL arch
+
LABEL arch
MENU LABEL Arch Linux
+
MENU LABEL Arch Linux
LINUX ../vmlinuz-linux
+
LINUX ../vmlinuz-linux
INITRD ../intel-ucode.img,../initramfs-linux.img
+
INITRD ../intel-ucode.img,../initramfs-linux.img
APPEND ...}}
+
APPEND ...
   
 
== 起動時にマイクロコードのアップデートがされたか確認する ==
 
== 起動時にマイクロコードのアップデートがされたか確認する ==
   
マイクロコードがアップデートされたかどうか確認するには {{ic|/usr/bin/dmesg}} を使用します: {{ic|<nowiki>dmesg | grep microcode</nowiki>}}。
+
マイクロコードがアップデートされたかどうか確認するには {{ic|/usr/bin/dmesg}} を使用します:
  +
$ dmesg | grep microcode
   
 
Intel が載っているシステムでは、マイクロコードのアップデートがされていると以下のような表示がされます:
 
Intel が載っているシステムでは、マイクロコードのアップデートがされていると以下のような表示がされます:
   
  +
[ 0.000000] CPU0 microcode updated early to revision 0x1b, date = 2014-05-29
{{bc|<nowiki>
 
[ 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.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.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.262349] CPU3 microcode updated early to revision 0x1b, date = 2014-05-29
+
[ 0.507267] microcode: CPU0 sig=0x306a9, pf=0x2, revision=0x1b
[ 0.507267] microcode: CPU0 sig=0x306a9, pf=0x2, revision=0x1b
+
[ 0.507272] microcode: CPU1 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.507276] microcode: CPU2 sig=0x306a9, pf=0x2, revision=0x1b
+
[ 0.507281] microcode: CPU3 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.507286] microcode: CPU4 sig=0x306a9, pf=0x2, revision=0x1b
+
[ 0.507292] microcode: CPU5 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.507296] microcode: CPU6 sig=0x306a9, pf=0x2, revision=0x1b
+
[ 0.507300] microcode: CPU7 sig=0x306a9, pf=0x2, revision=0x1b
[ 0.507300] microcode: CPU7 sig=0x306a9, pf=0x2, revision=0x1b
+
[ 0.507335] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[ 0.507335] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba</nowiki>}}
 
   
 
最新のハードウェアの場合、CPU のマイクロコードアップデートが存在しないという可能性も考えられます。そのときは、以下のような出力がなされます:
 
最新のハードウェアの場合、CPU のマイクロコードアップデートが存在しないという可能性も考えられます。そのときは、以下のような出力がなされます:
  +
{{bc|<nowiki>
 
[ 0.292893] microcode: CPU0 sig=0x306c3, pf=0x2, revision=0x1c
+
[ 0.292893] microcode: CPU0 sig=0x306c3, pf=0x2, revision=0x1c
[ 0.292899] microcode: CPU1 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.292906] microcode: CPU2 sig=0x306c3, pf=0x2, revision=0x1c
[ 0.292912] microcode: CPU3 sig=0x306c3, pf=0x2, revision=0x1c
+
[ 0.292912] microcode: CPU3 sig=0x306c3, pf=0x2, revision=0x1c
[ 0.292956] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba</nowiki>}}
+
[ 0.292956] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
   
 
AMD 環境では、マイクロコードはブートプロセスのやや後ろのほうでアップデートされます。したがって出力は以下のような感じです:
 
AMD 環境では、マイクロコードはブートプロセスのやや後ろのほうでアップデートされます。したがって出力は以下のような感じです:
   
  +
[ 0.807879] microcode: CPU0: patch_level=0x01000098
{{bc|<nowiki>
 
[ 0.807879] microcode: CPU0: patch_level=0x01000098
+
[ 0.807888] microcode: CPU1: patch_level=0x01000098
[ 0.807888] microcode: CPU1: patch_level=0x01000098
+
[ 0.807983] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
  +
[ 16.150642] microcode: CPU0: new patch_level=0x010000c7
[ 0.807983] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
 
[ 16.150642] microcode: CPU0: new patch_level=0x010000c7
+
[ 16.150682] microcode: CPU1: new patch_level=0x010000c7
[ 16.150682] microcode: CPU1: new patch_level=0x010000c7</nowiki>}}
 
   
 
{{Note|表示される日付は {{pkg|intel-ucode}} パッケージのバージョンとは対応しません。Intel がマイクロコードのアップデートを行った最後の日付が表示されます。}}
 
{{Note|表示される日付は {{pkg|intel-ucode}} パッケージのバージョンとは対応しません。Intel がマイクロコードのアップデートを行った最後の日付が表示されます。}}
145行目: 121行目:
 
* [https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=24290&lang=jpn Intel のダウンロードセンター]。
 
* [https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=24290&lang=jpn Intel のダウンロードセンター]。
   
==== マイクロコードのアップデートが必要かどうか確認する ====
+
=== マイクロコードのアップデートが必要かどうか確認する ===
   
 
{{AUR|iucode-tool}} を使って、使用している cpu のマイクロコードイメージが {{ic|intel-ucode.img}} に含まれているかどうか確認できます:
 
{{AUR|iucode-tool}} を使って、使用している cpu のマイクロコードイメージが {{ic|intel-ucode.img}} に含まれているかどうか確認できます:
155行目: 131行目:
 
* アップデートが存在する場合は、''selected microcodes'' の下に表示されます。
 
* アップデートが存在する場合は、''selected microcodes'' の下に表示されます。
   
==== カスタムカーネルで Intel のマイクロコードのロードを有効にする ====
+
== カスタムカーネルで Intel のマイクロコードのロードを有効にする ==
   
 
カスタムカーネルでロードを行うには、"CPU microcode loading support" をカーネルに組み込む必要があります。モジュールとしてコンパイルしても動作しません。"Early load microcode" プロンプトが有効になるので "Y" に設定してください。
 
カスタムカーネルでロードを行うには、"CPU microcode loading support" をカーネルに組み込む必要があります。モジュールとしてコンパイルしても動作しません。"Early load microcode" プロンプトが有効になるので "Y" に設定してください。
163行目: 139行目:
 
CONFIG_MICROCODE_INTEL_EARLY=y
 
CONFIG_MICROCODE_INTEL_EARLY=y
 
CONFIG_MICROCODE_EARLY=y
 
CONFIG_MICROCODE_EARLY=y
  +
  +
== 参照 ==
  +
  +
* [https://flossexperiences.wordpress.com/2013/11/17/updating-microcodes/ Updating microcodes]
  +
* [http://inertiawar.com/microcode/ Notes on Intel Microcode updates]
  +
* [https://www.kernel.org/doc/Documentation/x86/early-microcode.txt Kernel early microcode]
  +
* [http://www.anandtech.com/show/8376/intel-disables-tsx-instructions-erratum-found-in-haswell-haswelleep-broadwelly Erratum found in Haswell/Broadwell]

2015年5月1日 (金) 20:12時点における版

プロセッサのマイクロコードはプロセッサのファームウェアと同種のものです。カーネルは BIOS のアップデートをすることなくプロセッサのファームウェアをアップデートすることができます。Intel のウェブサイトより:

マイクロコードのデータファイルには全ての Intel プロセッサのための最新のマイクロコードが定義されています。Intel はマイクロコードのアップデートをリリースすることで、それぞれのプロセッサの仕様のアプリケーションに文書化されているようにプロセッサの挙動を修正します。一般的に、このマイクロコードの更新を行うのは BIOS のアップデートによりますが、これは管理者を困らせるような羽目になることがあるのを Intel は了解しています。Linux オペレーティングシステムや VMware ESX プロダクトには起動後にマイクロコードを更新する仕組みが備わっています。例えば、Linux システムの /etc/firmware ディレクトリにファイルが配置されると、オペレーティングシステムの仕組みがこのファイルを使用します。
ノート: Arch Linux はアップデートを処理するのに /etc/firmware は使いません、代わりにファームウェアのバイナリは /usr/lib/firmware/*. に作成されます。

マイクロコードのアップデート

Intel のプロセッサの場合、intel-ucode をインストールしてください。

AMD のプロセッサの場合、マイクロコードのアップデートは linux-firmware で利用することができ、このパッケージはベースシステムの一部としてインストールされます。

Intel のマイクロコードのアップデートを有効にする

警告: linux 3.17-2 と linux-lts 3.14.21-2 以降から、Intel のマイクロコードのアップデートは自動では行われなくなりました。多くの AUR のカーネルも公式の Arch カーネルと同じようになっています: linux-ck 3.16.6-3 から、Intel のマイクロコードのアップデートは自動で行われないようになりました。

}}

アップデートを有効にするにはブートローダーの設定ファイルに /boot/intel-ucode.img を一番目の initrd として追加する必要があります。通常の initrd ファイルとは別に追加します。

サンプル

EFI ブートスタブ / EFI ハンドオーバー

2つの initrd= オプションを追加:

initrd=/intel-ucode.img initrd=/initramfs-linux.img

Gummiboot

/boot/loader/entries/*.confinitrd オプションを二回使用:

title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options ...

rEFInd

上記の EFI ブートスタブと同じように /boot/refind_linux.conf のブートオプションを編集する、例:

"Boot with standard options" "ro root=UUID=(...) quiet initrd=intel-ucode.img initrd=initramfs-linux.img"

手動で /boot/refind.conf にカーネルを定義している場合はメインの部分ではなく options 行に initrd=/intel-ucode.img/boot/intel-ucode.img を追加してください。

Grub

grub-1:2.02-beta2-5 から、grub-mkconfig が自動的にマイクロコードのアップデートを処理します。intel-ucode をインストールした後に # grub-mkconfig -o /boot/grub/grub.cfg を実行して、grub の設定を再生成し、マイクロコードのアップデートのロードを有効にしてください。

もしくは、grub の設定ファイルを手動で管理したい場合、以下のように grub.cfg/intel-ucode.img/boot/intel-ucode.img を追加します:

[...]
    echo	'Loading initial ramdisk ...'
    initrd	/intel-ucode.img /initramfs-linux.img
[...]
ノート: すべてのメニューエントリに追加してください。
警告: 更新があると /usr/bin/grub-mkconfig によってファイルが自動的に上書きされるため、ファイルの変更は取り消されてしまいます。

Syslinux

ノート: initrd ファイルの intel-ucodeinitramfs-linux の間に空白は挟まないで下さい。ピリオド記号は省略ではありません。以下の記述そのままに編集するようにしてください。

/boot/syslinux/syslinux.cfg で複数の initrd をカンマで区切って指定できます:

LABEL arch
    MENU LABEL Arch Linux
    LINUX ../vmlinuz-linux
    INITRD ../intel-ucode.img,../initramfs-linux.img
    APPEND ...

起動時にマイクロコードのアップデートがされたか確認する

マイクロコードがアップデートされたかどうか確認するには /usr/bin/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.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba

最新のハードウェアの場合、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.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba

AMD 環境では、マイクロコードはブートプロセスのやや後ろのほうでアップデートされます。したがって出力は以下のような感じです:

[    0.807879] microcode: CPU0: patch_level=0x01000098
[    0.807888] microcode: CPU1: patch_level=0x01000098
[    0.807983] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[   16.150642] microcode: CPU0: new patch_level=0x010000c7
[   16.150682] microcode: CPU1: new patch_level=0x010000c7
ノート: 表示される日付は intel-ucode パッケージのバージョンとは対応しません。Intel がマイクロコードのアップデートを行った最後の日付が表示されます。

マイクロコードのアップデートができる CPU

特定のモデルがサポートされているのかどうかは以下のリンクから Intel や AMD のサイトで確認することができます:

マイクロコードのアップデートが必要かどうか確認する

iucode-toolAUR を使って、使用している cpu のマイクロコードイメージが intel-ucode.img に含まれているかどうか確認できます:

  • intel-ucode をインストール (アップデートがあるかどうか確認するのに initrd の変更は必要ありません)
  • AUR から iucode-toolAUR をインストール
  • # modprobe cpuid
  • # bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS -
    (マイクロコードイメージを展開して cpuid を検索します)
  • アップデートが存在する場合は、selected microcodes の下に表示されます。

カスタムカーネルで Intel のマイクロコードのロードを有効にする

カスタムカーネルでロードを行うには、"CPU microcode loading support" をカーネルに組み込む必要があります。モジュールとしてコンパイルしても動作しません。"Early load microcode" プロンプトが有効になるので "Y" に設定してください。

CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_INTEL_EARLY=y
CONFIG_MICROCODE_EARLY=y

参照