Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
マイクロコードのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
マイクロコード
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:CPU]] [[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}} ディレクトリにファイルが配置されると、オペレーティングシステムの仕組みがこのファイルを使用します。'' {{Note|Arch Linux はアップデートを処理するのに {{ic|/etc/firmware}} は使いません、代わりにファームウェアのバイナリは {{ic|/usr/lib/firmware/*.}} に作成されます。}} == マイクロコードのアップデート == Intel のプロセッサの場合、{{Pkg|intel-ucode}} をインストールしてください。 AMD のプロセッサの場合、マイクロコードのアップデートは {{Pkg|linux-firmware}} で利用することができ、このパッケージはベースシステムの一部としてインストールされます。 === 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 ファイルとは別に追加します。 === サンプル === ==== EFI ブートスタブ / EFI ハンドオーバー ==== 2つの {{ic|1=initrd=}} オプションを追加: {{bc|1=initrd=/intel-ucode.img initrd=/initramfs-linux.img}} ==== systemd-boot ==== {{ic|/boot/loader/entries/''entry''.conf}} で {{ic|initrd}} オプションを二回使用: title Arch Linux linux /vmlinuz-linux initrd /intel-ucode.img initrd /initramfs-linux.img options ... [[EFI システムパーティション]]を {{ic|/boot}} にマウントしていない場合、{{ic|/boot/intel-ucode.img}} を EFI システムパーティションにコピーしてください。 ==== rEFInd ==== 上記の EFI ブートスタブと同じように {{ic|/boot/refind_linux.conf}} のブートオプションを編集する、例: "Boot with standard options" "rw root=UUID=(...) quiet initrd=/boot/intel-ucode.img initrd=/boot/initramfs-linux.img" [[rEFInd#手動でブートエントリを記述|手動]]で {{ic|/boot/refind.conf}} にカーネルを定義している場合はメインの部分ではなく options 行に {{ic|1=initrd=/intel-ucode.img}} や {{ic|/boot/intel-ucode.img}} を追加してください。 ==== Grub ==== 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}} を追加します: [...] echo 'Loading initial ramdisk ...' initrd /intel-ucode.img /initramfs-linux.img [...] {{Note|すべてのメニューエントリに追加してください。}} {{warning|更新があると {{ic|/usr/bin/grub-mkconfig}} によってファイルが自動的に上書きされるため、ファイルの変更は取り消されてしまいます。}} ==== Syslinux ==== {{Note|initrd ファイルの {{ic|intel-ucode}} と {{ic|initramfs-linux}} の間に空白は挟まないで下さい。ピリオド記号は省略ではありません。以下の記述そのままに編集するようにしてください。}} {{ic|/boot/syslinux/syslinux.cfg}} で複数の initrd をカンマで区切って指定できます: LABEL arch MENU LABEL Arch Linux LINUX ../vmlinuz-linux INITRD ../intel-ucode.img,../initramfs-linux.img APPEND ''<your kernel parameters>'' ==== LILO ==== LILO などの旧式のブートローダーは複数の initrd イメージをサポートしていません。そのような場合 {{ic|intel-ucode}} と {{ic|initramfs-linux}} をひとつのイメージにまとめる必要があります。 {{Warning|カーネルをアップデートするたびに毎回イメージをマージして再生成する必要があります。}} {{Note|{{ic|intel-ucode}} などの追加イメージは圧縮してはいけません。圧縮すると未圧縮イメージのごみしか認識されずカーネルがエラーを吐いて起動に失敗してしまいます。}} {{ic|intel-ucode.img}} は cpio アーカイブになっています。マイクロコードのアップデートがあるたびにアーカイブが圧縮されているかどうか確認することを推奨します。今後もイメージが同じフォーマットである保証はありません。{{ic|intel-ucode}} が圧縮されているかどうか確認するには {{ic|file}} コマンドを使います: $ file /boot/intel-ucode.img /boot/intel-ucode.img: ASCII cpio archive (SVR4 with no CRC) {{Note|イメージの順番は重要です。オリジナルのイメージである {{ic|initramfs-linux}} は {{ic|intel-ucode}} イメージよりも先に来るように結合する必要があります。}} ふたつのイメージを {{ic|initramfs-merged.img}} という名前のイメージにマージするには、以下のコマンドを使用: # cat /boot/intel-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/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 {{Note|表示される日付は {{pkg|intel-ucode}} パッケージのバージョンとは対応しません。Intel がマイクロコードのアップデートを行った最後の日付が表示されます。}} == マイクロコードのアップデートができる CPU == 特定のモデルがサポートされているのかどうかは以下のリンクから Intel や AMD のサイトで確認することができます: * [http://www.amd64.org/microcode.html AMD の Operating System Research Center]。 * [https://downloadcenter.intel.com/ja/download/27337/Linux-Processor-Microcode-Data-File Intel のダウンロードセンター]。 === マイクロコードのアップデートが必要かどうか確認する === {{AUR|iucode-tool}} を使って、使用している cpu のマイクロコードイメージが {{ic|intel-ucode.img}} に含まれているかどうか確認できます: * {{Pkg|intel-ucode}} をインストール (アップデートがあるかどうか確認するのに initrd の変更は必要ありません) * [[AUR]] から {{AUR|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 == 参照 == * [https://flossexperiences.wordpress.com/2013/11/17/updating-microcodes/ Updating microcodes] * [http://inertiawar.com/microcode/ Intel によるマイクロコードアップデートのノート] * [https://www.kernel.org/doc/Documentation/x86/early-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 技術的な詳細]
このページで使用されているテンプレート:
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
テンプレート:TranslationStatus
(
ソースを閲覧
)
テンプレート:Warning
(
ソースを閲覧
)
マイクロコード
に戻る。
検索
検索
マイクロコードのソースを表示
話題を追加