web-dev-qa-db-ja.com

Linuxでの永続的なマイクロコードの更新

指示に従って、Intel Core i3-3217Uプロセッサのマイクロコードを更新しようとしました Intelから 。 Linux Mint Debianエディション2(3.16.0-5-AMD64カーネル)を使用しています。

私がしたこと:

  • /sys/devices/system/cpu/microcode/reloadがあります
  • /lib/firmware/intel-ucodeはなく、/lib/firmware/intelのみです。ダウンロードしたパッケージからとにかくフォルダを追加しました。
  • 指示に従って、SUとして実行しました

    echo 1 > /sys/devices/system/cpu/microcode/reload
    

cat /proc/cpuinfo | grep microcodeは私に0x1fを与えます。これは更新されたバージョンですが、システムが実行されている間だけです。再起動後、0x12に戻ります。

更新を永続的にするにはどうすればよいですか?

1
ccprog

マイクロコードアップデートがDebianに移植されていない場合の中間ソリューションとして、Intelの指示に従ってマイクロコードアップデートをインストールした後、「echo 1>/sys/devices/system/cpu/microcode/reload」を/etc/rc.localに追加できます。これはかなり遅いパッチですが、ブート環境を信頼していればおそらく問題ありません:)

2
port443

インテルのマイクロコードの更新を永続的にすることはできません。起動するたびにロードする必要があります。マイクロコードは、CPUの揮発性RAMに保存されます。

2
Johan Myréen

Debianパッケージのコードを利用してマイクロコードを最初のramdiskにロードできることがわかりました intel-microcode 。これは現在、古いバージョンのマイクロコードにありますが、オーバーライドできます。

パッケージをインストールした後、/lib/firmware/intel-ucode内のすべてのファイルを手動で削除し、Intelダウンロードから新しいバージョンに置き換えました。その後、initrd.img-<kernel version>を次のように更新できます

update-initramfs -u

grub-mkconfigもこれを実行します。

私が理解しているように、他の回答で言及されているintel-ucode.imgは、いわゆる「初期のinitramfsアーカイブ」です。パッケージに含まれているinitramfs-toolsフックスクリプトは、更新モジュールを別の.imgに配置するか、メインのinitrd.imgに配置するかを自動的に選択するようです。

編集:新しいマイクロコードバージョンはすでに 不安定なパッケージ に到達しているようです。依存関係は変更されていないので、Debianストレッチ(または私がまだ使用しているjessie)で機能する可能性があります。新しいパッケージバージョンがバックポートされるまで、ほんの数日かかると思います。その後、インストールするだけで十分です。

1
ccprog

マイクロコードの更新は起動時に適用されるため、ブートローダーに追加する必要があります。 GRUB2またはsystemd-boot。より具体的には、/ boot/intel-ucode.img(またはこのファイルがシステム上のどこにある場合でも)をブートプロセスの最初のinitrdイメージとして追加する必要があります(ただし、通常のinitrdイメージを置き換えます)。マイクロコード更新パッケージがインストールされると、通常、grub-mkconfigスクリプトがそれ自体でこれを処理しますが、/ boot/grub /grub.cfgファイルに同様の行があるかどうかを確認できます。

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

そうでない場合は、マイクロコードパッケージを再インストールするか、grub-mkconfigスクリプトを手動で実行します。

0
kori