Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
マイクロコードのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
マイクロコード
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:CPU]] [[Category:セキュリティ]] [[de:Microcode]] [[en:Microcode]] [[es:Microcode]] [[ru:Microcode]] [[zh-hans:Microcode]] [[Wikipedia:ja:マイクロプログラム方式|プロセッサのマイクロコード]]はプロセッサのファームウェアと同種のものです。カーネルは BIOS のアップデートをすることなくプロセッサのファームウェアをアップデートすることができます。[https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=23082 Intel] のウェブサイトより: :''マイクロコードのデータファイルには全ての Intel プロセッサのための最新のマイクロコードが定義されています。Intel はマイクロコードのアップデートをリリースすることで、それぞれのプロセッサの仕様のアプリケーションに文書化されているようにプロセッサの挙動を修正します。一般的に、このマイクロコードの更新を行うのは BIOS のアップデートによりますが、これは管理者を困らせるような羽目になることがあるのを Intel は了解しています。Linux オペレーティングシステムや VMware ESX プロダクトには起動後にマイクロコードを更新する仕組みが備わっています。例えば、Linux システムの {{ic|/etc/firmware}} ディレクトリにファイルが配置されると、オペレーティングシステムの仕組みがこのファイルを使用します。'' 全てのユーザーがアップデートをインストールすべきですが、Intel Haswell と Broadwell プロセッサファミリーに属する CPU を使っている場合は特に、システムを安定させるためにマイクロコードのアップデートをインストールしてください。 == インストール == Intel のプロセッサの場合、{{Pkg|intel-ucode}} をインストールしてください。 AMD のプロセッサの場合、{{Pkg|amd-ucode}} をインストールしてください。 Arch 環境を[[USB キーに Arch Linux をインストール|リムーバブルドライブ]]上に構築していて、両方のメーカーのマイクロコードが必要な場合、両方のパッケージをインストールしてください。 == 起動初期にマイクロコードをアップデート == マイクロコードは[[ブートローダー]]からロードする必要があります。ブートの設定はユーザーによって様々であるため、Arch のデフォルト設定ではマイクロコードのアップデートは自動的に使われないようになっています。この点について AUR カーネルの多くは Arch の公式[[カーネル]]と同じようになっています。 アップデートを有効にするにはブートローダーの設定ファイルに {{ic|/boot/amd-ucode.img}} または {{ic|/boot/intel-ucode.img}} を一番目の initrd として追加する必要があります。通常の initrd ファイルとは別に追加します。 {{Note|以下のセクションで出てくる {{ic|''cpu_manufacturer''}} はあなたが使っている CPU のメーカー名 ({{ic|amd}} または {{ic|intel}}) に置き換えてください。}} {{Tip|[[USB キーに Arch Linux をインストール|リムーバブルドライブ]]に Arch Linux をインストールする場合、ブートローダーの設定にマイクロコードファイルを両方とも {{ic|initrd}} で追加してください。initramfs イメージよりも前に指定していればファイルの順番は関係ありません。}} === GRUB === ==== 自動ロード ==== ''grub-mkconfig'' が自動的にマイクロコードのアップデートを処理します。マイクロコードのパッケージをインストールした後に以下のコマンドを実行して、grub の設定を再生成し、マイクロコードのアップデートのロードを有効にしてください: # grub-mkconfig -o /boot/grub/grub.cfg ==== 手動ロード ==== もしくは、[[GRUB]] の設定ファイルを手動で管理したい場合、以下のように {{ic|grub.cfg}} に {{ic|/boot/''cpu_manufacturer''-ucode.img}} ({{ic|/boot}} パーティションを分けている場合は {{ic|/''cpu_manufacturer''-ucode.img}}) を追加します: {{hc|/boot/grub/grub.cfg| ... echo 'Loading initial ramdisk' initrd '''/boot/''cpu_manufacturer''-ucode.img''' /boot/initramfs-linux.img ... }} すべてのメニューエントリに追加してください。 === systemd-boot === 以下のように初期 RAM ディスクの前に {{ic|initrd}} オプションを使ってマイクロコードをロード: {{hc|/boot/loader/entries/''entry''.conf| title Arch Linux linux /vmlinuz-linux '''initrd /''cpu_manufacturer''-ucode.img''' initrd /initramfs-linux.img ... }} 最新のマイクロコード {{ic|''cpu_manufacturer''-ucode.img}} が起動時に [[EFI システムパーティション]]に必要となります。{{Pkg|amd-ucode}} または {{Pkg|intel-ucode}} を更新したときはマイクロコードが更新されるように {{ic|/boot}} に ESP をマウントしてください。もしくは ESP に {{ic|/boot/''cpu_manufacturer''-ucode.img}} をコピーしてください。 === EFI ブートスタブ / EFI ハンドオーバー === {{ic|1=initrd=}} オプションを2つ追加: '''initrd=/''cpu_manufacturer''-ucode.img''' initrd=/initramfs-linux.img 全ての initrd とコマンドライン、カーネルを含むひとつのファイルとしてカーネルを生成した場合、まず以下のように新しい initrd を作成して統合してください: {{bc|1= cat /boot/''cpu_manufacturer''-ucode.img /boot/initramfs-linux.img > my_new_initrd objcopy ... --add-section .initrd=my_new_initrd }} === rEFInd === 上記の EFI ブートスタブと同じように {{ic|/boot/refind_linux.conf}} のブートオプションを編集する、例: "Boot with standard options" "rw root=UUID=(...) '''initrd=/boot/''cpu_manufacturer''-ucode.img''' initrd=/boot/initramfs-linux.img" [[rEFInd#手動でブートエントリを記述|手動]]で {{ic|''esp''/EFI/refind/refind.conf}} にカーネルを定義している場合はメインの部分ではなく options 行に {{ic|/boot/''cpu_manufacturer''-ucode.img}} ({{ic|/boot}} パーティションを分けている場合は {{ic|/''cpu_manufacturer''-ucode.img}}) を追加してください。例: options "root=root=UUID=(...) rw add_efi_memmap '''initrd=/boot/''cpu_manufacturer''-ucode.img'''" === Syslinux === {{Note|initrd ファイルの {{ic|''cpu_manufacturer''-ucode.img}} と {{ic|initramfs-linux}} の間に空白は挟まないで下さい。以下の記述そのままに編集するようにしてください。}} {{ic|/boot/syslinux/syslinux.cfg}} で複数の initrd をカンマで区切って指定できます: LABEL arch MENU LABEL Arch Linux LINUX ../vmlinuz-linux INITRD '''../''cpu_manufacturer''-ucode.img''',../initramfs-linux.img ... === LILO === LILO などの旧式のブートローダーは複数の initrd イメージをサポートしていません。そのような場合 {{ic|''cpu_manufacturer''-ucode.img}} と {{ic|initramfs-linux.img}} をひとつのイメージにまとめる必要があります。 {{Warning|カーネルをアップデートするたびに毎回イメージをマージして再生成する必要があります。}} {{Note|イメージの順番は重要です。オリジナルのイメージである {{ic|initramfs-linux}} は {{ic|''cpu_manufacturer''-ucode.img}} イメージよりも先に来るように結合する必要があります。}} ふたつのイメージを {{ic|initramfs-merged.img}} という名前のイメージにマージするには、以下のコマンドを使用: # cat /boot/''cpu_manufacturer''-ucode.img /boot/initramfs-linux.img > /boot/initramfs-merged.img マージできたら {{ic|/etc/lilo.conf}} を編集して新しいイメージをロードします: ... initrd=/boot/initramfs-merged.img ... root で {{ic|lilo}} を実行してください: # lilo == 起動後にマイクロコードをアップデート == システムを起動した後にマイクロコードのアップデートをロードすることもできます。{{ic|/usr/lib/firmware/amd-ucode/}} と {{ic|/usr/lib/firmware/intel-ucode/}} のファイルを使用します。 AMD プロセッサの場合、マイクロコードのアップデートファイルは {{Pkg|linux-firmware}} によって提供されます。 Intel プロセッサの場合、マイクロコードのアップデートファイルが含まれるパッケージはありません ({{Bug|59841}})。起動後にロードするには Intel が提供しているアーカイブから手動で {{ic|intel-ucode/}} を抽出する必要があります。 === マイクロコードのアップデートを有効にする === 起動初期のロードとは異なり、起動後のマイクロコードのアップデートのロードは Arch Linux ではデフォルトで有効になっており {{ic|/usr/lib/tmpfiles.d/linux-firmware.conf}} を使用します。起動後に {{man|8|systemd-tmpfiles-setup.service}} によってファイルが読み込まれて CPU のマイクロコードが更新されます。 実行中のシステムで手動でマイクロコードをアップデートするには: # echo 1 > /sys/devices/system/cpu/microcode/reload このコマンドを使えば {{Pkg|linux-firmware}} が更新されたときにシステムを再起動することなくマイクロコードのアップデートを適用することができます。[[pacman フック]]を使って自動的にコマンドを実行することも可能です: {{hc|/etc/pacman.d/hooks/microcode_reload.hook|2= [Trigger] Operation = Install Operation = Upgrade Operation = Remove Type = File Target = usr/lib/firmware/amd-ucode/* [Action] Description = Applying CPU microcode updates... When = PostTransaction Depends = sh Exec = /bin/sh -c 'echo 1 > /sys/devices/system/cpu/microcode/reload' }} === マイクロコードのアップデートを無効にする === AMD 環境では {{Pkg|amd-ucode}} がインストールされてなくても {{Pkg|linux-firmware}} にファイルが含まれているため CPU のマイクロコードはアップデートされてしまいます ({{Bug|59840}})。起動後のロードを無効にしたい場合は {{ic|/usr/lib/tmpfiles.d/linux-firmware.conf}} を無効にしてください。{{ic|/etc/tmpfiles.d/}} に同名のファイルを作成することで無効化できます: # ln -s /dev/null /etc/tmpfiles.d/linux-firmware.conf == 起動時にマイクロコードのアップデートがされたか確認する == マイクロコードがアップデートされたかどうか確認するには {{ic|/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.2. {{Note|表示される日付は {{pkg|intel-ucode}} パッケージのバージョンとは対応しません。Intel がマイクロコードのアップデートを行った最後の日付が表示されます。}} 最新のハードウェアの場合、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.2. AMD 環境で起動初期にマイクロコードをアップデートしている場合、以下のように出力されます: [ 2.119089] microcode: microcode updated early to new patch_level=0x0700010f [ 2.119157] microcode: CPU0: patch_level=0x0700010f [ 2.119171] microcode: CPU1: patch_level=0x0700010f [ 2.119183] microcode: CPU2: patch_level=0x0700010f [ 2.119189] microcode: CPU3: patch_level=0x0700010f [ 2.119269] microcode: Microcode Update Driver: v2.2. AMD 環境で起動後にマイクロコードをアップデートしている場合、古いマイクロコードのバージョンが表示されてからマイクロコードがリロードされ、新しいマイクロコードのバージョンが表示されます。例: [ 2.112919] microcode: CPU0: patch_level=0x0700010b [ 2.112931] microcode: CPU1: patch_level=0x0700010b [ 2.112940] microcode: CPU2: patch_level=0x0700010b [ 2.112951] microcode: CPU3: patch_level=0x0700010b [ 2.113043] microcode: Microcode Update Driver: v2.2. [ 6.429109] microcode: CPU2: new patch_level=0x0700010f [ 6.430416] microcode: CPU0: new patch_level=0x0700010f [ 6.431722] microcode: CPU1: new patch_level=0x0700010f [ 6.433029] microcode: CPU3: new patch_level=0x0700010f [ 6.433073] x86/CPU: CPU features have changed after loading microcode, but might not take effect. == マイクロコードのアップデートができる CPU == 特定のモデルがサポートされているのかどうかは以下のリンクから Intel や AMD のサイトで確認することができます: * [http://www.amd64.org/microcode.html AMD の Operating System Research Center]。 * [https://downloadcenter.intel.com/SearchResult.aspx?lang=eng&keyword=processor%20microcode%20data%20file Intel のダウンロードセンター]。 === マイクロコードのアップデートが必要かどうか確認する === {{Pkg|iucode-tool}} を使って、使用している cpu のマイクロコードイメージが {{ic|intel-ucode.img}} に含まれているかどうか確認できます: * {{Pkg|intel-ucode}} をインストール (アップデートがあるかどうか確認するのに initrd の変更は必要ありません) * {{Pkg|iucode-tool}} をインストール * {{ic|# modprobe cpuid}} * {{ic|<nowiki># bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS - </nowiki>}}<br />(マイクロコードイメージを展開して cpuid を検索します) * アップデートが存在する場合は、''selected microcodes'' の下に表示されます。 * メーカーの BIOS にマイクロコードが既に含まれていてロードされたことが dmesg に表示されていない可能性もあります。{{ic|grep microcode /proc/cpuinfo}} を実行して現在のマイクロコードを比較してください。 == カスタムカーネルで Intel のマイクロコードのロードを有効にする == カスタムカーネルでロードを行うには、"CPU microcode loading support" をカーネルに組み込む必要があります。モジュールとしてコンパイルしても動作しません。"Early load microcode" プロンプトが有効になるので "Y" に設定してください。 CONFIG_BLK_DEV_INITRD=Y CONFIG_MICROCODE=y CONFIG_MICROCODE_INTEL=Y CONFIG_MICROCODE_AMD=y == 参照 == * [https://flossexperiences.wordpress.com/2013/11/17/updating-microcodes/ Updating microcodes] * [http://inertiawar.com/microcode/ Intel によるマイクロコードアップデートのノート] * [https://www.kernel.org/doc/Documentation/x86/microcode.txt マイクロコードのカーネルドキュメント] * [http://www.anandtech.com/show/8376/intel-disables-tsx-instructions-erratum-found-in-haswell-haswelleep-broadwelly Haswell/Broadwell で見つかったエラッタ] * [https://gitlab.com/iucode-tool/iucode-tool iucode-tool GitLab プロジェクト]
このページで使用されているテンプレート:
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
テンプレート:TranslationStatus
(
ソースを閲覧
)
テンプレート:Warning
(
ソースを閲覧
)
マイクロコード
に戻る。
検索
検索
マイクロコードのソースを表示
話題を追加