Microcode: Unterschied zwischen den Versionen
Boenki (Diskussion | Beiträge) K Kleinigkeiten |
Tuxnix (Diskussion | Beiträge) Umstellung auf hook microcode |
||
(7 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Einige Prozessoren erlauben es, den Firmware-Code (oder auch Microcode genannt) beim Systemstart zu überschreiben, so dass ohne ein BIOS-Update eventuelle Firmware-Fehler zur Laufzeit beseitigt werden können. | |||
Einige Prozessoren erlauben es, den Firmware-Code (oder auch Microcode genannt) beim Systemstart zu überschreiben, so dass ohne ein BIOS-Update eventuelle Firmware-Fehler beseitigt werden können. | |||
Das Überschreiben gilt aber nur bis zum Ausschalten des Computers (es ist reversibel), so dass danach wieder der ursprüngliche Code vorhanden ist. | Das Überschreiben gilt aber nur bis zum Ausschalten des Computers (es ist reversibel), so dass danach wieder der ursprüngliche Code vorhanden ist. | ||
Zeile 7: | Zeile 5: | ||
Eine Liste mit unterstützten Modellen gibt es sowohl von [http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=21925&keyword=%22microcode%22&lang=eng Intel] als auch von [http://www.amd64.org/microcode.html AMD]. | Eine Liste mit unterstützten Modellen gibt es sowohl von [http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=21925&keyword=%22microcode%22&lang=eng Intel] als auch von [http://www.amd64.org/microcode.html AMD]. | ||
== Microcode | == Microcode Installieren == | ||
Für AMD-Prozessoren | Für AMD-Prozessoren wird das {{Paket|amd-ucode}}, für Intel-CPUs das Paket {{Paket|intel-ucode}} installiert. | ||
== Microcode Aktivieren == | |||
In der Datei /etc/mkinitcpio.conf wird in der Zeile HOOKS=(base udev {{ic|microcode}}... eingefügt. | |||
Anschließend wird mit dem Befehl: | |||
mkinitcpio -p linux | |||
eine neue /boot/initramfs-linux.img und /boot/initramfs-linux-fallback.img Datei erzeugt. | |||
{{Hinweis|Seit der Umstellung auf den hook microcode am 5.3.2024 ist der Microcode in diesen Dateien integriert. Eine separate Anführung eines ucode.img im jeweiligen Bootloader entfällt damit.}} | |||
== | == Feststellen, ob Microcode-Updates vorgenommen wurden == | ||
Möchte man überprüfen, ob beim Booten des Systems ein Microcode-Update stattgefunden hat, so kann einen ersten Test mittels | |||
journalctl -k --grep microcode | |||
=== | durchführen. | ||
=== | Im Falle von Intelprozessoren mit erfolgreichem Early Loading erhält man etwa folgendes (hier ein Lenovo Thinkpad T480s): | ||
Sep 04 15:31:40 darkstar kernel: microcode: microcode updated early to revision 0xb4, date = 2019-04-01 | |||
Sep 04 15:31:40 darkstar kernel: microcode: sig=0x806ea, pf=0x80, revision=0xb4 | |||
Sep 04 15:31:40 darkstar kernel: microcode: Microcode Update Driver: v2.2. | |||
Findet kein Microcode-Update statt, sieht die Ausgaben wir folgt aus (hier das selbe Lenovo Thinkpad T480s): | |||
Jul 30 10:21:06 darkstar kernel: SRBDS: Mitigation: Microcode | |||
Jul 30 10:21:06 darkstar kernel: microcode: sig=0x806ea, pf=0x80, revision=0xd6 | |||
Jul 30 10:21:06 darkstar kernel: microcode: Microcode Update Driver: v2.2. | |||
Ein negatives Ergebnis muß nicht auf eine Fehlkonfiguration zurückzuführen sein. Es kann auch bedeuten, daß das BIOS bereits die neueste Firmware enthält. Im Falle des exemplarisch verwendeten T480s war dies nach einem BIOS-Update der Fall. | |||
Möchte man sichergehen, daß die neueste Firmwareversion geladen ist, geht man wie folgt vor: | |||
* Installation von iucode-tool: | |||
# pacman -S iucode-tool | |||
* Laden des cpuid Kernelmoduls: | |||
# modprobe cpuid | |||
* Bestimmung der neuesten Firmware-Revision für die vorhandene CPU: | |||
# bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS - | |||
* Prüfen, ob diese tatsächlich verwendet wird: | |||
grep microcode /proc/cpuinfo | |||
Bei AMD-Prozessoren findet das Microcode-Update erst etwas später im Bootprozess statt. Deshalb erhält man ein Ergebnis wie dieses: | Bei AMD-Prozessoren findet das Microcode-Update erst etwas später im Bootprozess statt. Deshalb erhält man ein Ergebnis wie dieses: | ||
Jul 30 21:59:24 darkstar kernel: microcode: CPU0: patch_level=0x010000c8 | |||
Jul 30 21:59:24 darkstar kernel: microcode: CPU1: patch_level=0x010000c8 | |||
Jul 30 21:59:24 darkstar kernel: microcode: CPU2: patch_level=0x010000c8 | |||
Jul 30 21:59:24 darkstar kernel: microcode: CPU3: patch_level=0x010000c8 | |||
Jul 30 21:59:24 darkstar kernel: microcode: Microcode Update Driver: v2.2. | |||
[[Kategorie:Hardware]] | [[Kategorie:Hardware]] | ||
[[en:Microcode]] | [[en:Microcode]] |
Aktuelle Version vom 6. März 2024, 01:03 Uhr
Einige Prozessoren erlauben es, den Firmware-Code (oder auch Microcode genannt) beim Systemstart zu überschreiben, so dass ohne ein BIOS-Update eventuelle Firmware-Fehler zur Laufzeit beseitigt werden können. Das Überschreiben gilt aber nur bis zum Ausschalten des Computers (es ist reversibel), so dass danach wieder der ursprüngliche Code vorhanden ist.
Unterstützte Prozessoren
Eine Liste mit unterstützten Modellen gibt es sowohl von Intel als auch von AMD.
Microcode Installieren
Für AMD-Prozessoren wird das amd-ucode, für Intel-CPUs das Paket intel-ucode installiert.
Microcode Aktivieren
In der Datei /etc/mkinitcpio.conf wird in der Zeile HOOKS=(base udev microcode
... eingefügt.
Anschließend wird mit dem Befehl:
mkinitcpio -p linux
eine neue /boot/initramfs-linux.img und /boot/initramfs-linux-fallback.img Datei erzeugt.
Hinweis: Seit der Umstellung auf den hook microcode am 5.3.2024 ist der Microcode in diesen Dateien integriert. Eine separate Anführung eines ucode.img im jeweiligen Bootloader entfällt damit.
Feststellen, ob Microcode-Updates vorgenommen wurden
Möchte man überprüfen, ob beim Booten des Systems ein Microcode-Update stattgefunden hat, so kann einen ersten Test mittels
journalctl -k --grep microcode
durchführen. Im Falle von Intelprozessoren mit erfolgreichem Early Loading erhält man etwa folgendes (hier ein Lenovo Thinkpad T480s):
Sep 04 15:31:40 darkstar kernel: microcode: microcode updated early to revision 0xb4, date = 2019-04-01 Sep 04 15:31:40 darkstar kernel: microcode: sig=0x806ea, pf=0x80, revision=0xb4 Sep 04 15:31:40 darkstar kernel: microcode: Microcode Update Driver: v2.2.
Findet kein Microcode-Update statt, sieht die Ausgaben wir folgt aus (hier das selbe Lenovo Thinkpad T480s):
Jul 30 10:21:06 darkstar kernel: SRBDS: Mitigation: Microcode Jul 30 10:21:06 darkstar kernel: microcode: sig=0x806ea, pf=0x80, revision=0xd6 Jul 30 10:21:06 darkstar kernel: microcode: Microcode Update Driver: v2.2.
Ein negatives Ergebnis muß nicht auf eine Fehlkonfiguration zurückzuführen sein. Es kann auch bedeuten, daß das BIOS bereits die neueste Firmware enthält. Im Falle des exemplarisch verwendeten T480s war dies nach einem BIOS-Update der Fall. Möchte man sichergehen, daß die neueste Firmwareversion geladen ist, geht man wie folgt vor:
- Installation von iucode-tool:
# pacman -S iucode-tool
- Laden des cpuid Kernelmoduls:
# modprobe cpuid
- Bestimmung der neuesten Firmware-Revision für die vorhandene CPU:
# bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS -
- Prüfen, ob diese tatsächlich verwendet wird:
grep microcode /proc/cpuinfo
Bei AMD-Prozessoren findet das Microcode-Update erst etwas später im Bootprozess statt. Deshalb erhält man ein Ergebnis wie dieses:
Jul 30 21:59:24 darkstar kernel: microcode: CPU0: patch_level=0x010000c8 Jul 30 21:59:24 darkstar kernel: microcode: CPU1: patch_level=0x010000c8 Jul 30 21:59:24 darkstar kernel: microcode: CPU2: patch_level=0x010000c8 Jul 30 21:59:24 darkstar kernel: microcode: CPU3: patch_level=0x010000c8 Jul 30 21:59:24 darkstar kernel: microcode: Microcode Update Driver: v2.2.