Microcode: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
(Artikel erstellt)
 
(EFI-Stub-Kernel hinzugefüt und Verweis auf englischen Artikel)
Zeile 1: Zeile 1:
{{unvollständig}}
{{unvollständig}}
[[en:Microedit]]
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.
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 12: Zeile 13:
Die Updates werden durch Hinzufügen von {{ic|/boot/intel-ucode.img}} als ersten initrd-Befehl in der Bootloader-Konfiguration erreicht.
Die Updates werden durch Hinzufügen von {{ic|/boot/intel-ucode.img}} als ersten initrd-Befehl in der Bootloader-Konfiguration erreicht.
=== Beispiele ===
=== Beispiele ===
==== EFI Stub Kernel ====
Man fügt zwei initrd-Befehle hinzu:
initrd=/intel-ucode.img initrd=/initramfs-linux.img
==== Gummiboot ====
==== Gummiboot ====
Man benutzt die {{ic|initrd}}-Option '''zweimal''' in dem unter {{ic|/boot/loader/entries/}} für Arch Linux vorgesehenen Eintrag:
Man benutzt die {{ic|initrd}}-Option '''zweimal''' in dem unter {{ic|/boot/loader/entries/}} für Arch Linux vorgesehenen Eintrag:

Version vom 26. Oktober 2014, 17:17 Uhr

Dieser Artikel oder Artikelabschnitt ist noch nicht vollständig!


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.

Microcode-Updates aktivieren

Für AMD-Prozessoren befindet sich alles Nötige in dem Paket linux-firmware, welches bereits installiert sein sollte.

Intel-Benutzer müssen das Paket intel-ucode installieren.

Aktivieren von Intel Microcode-Updates

Achtung: Seit der Kernelversion linux 3.17-2 bzw. linux-lts 3.14.21-2 werden Intel Microcode-Updates nicht mehr automatisch angesteuert und müssen manuell aktiviert werden.

Die Updates werden durch Hinzufügen von /boot/intel-ucode.img als ersten initrd-Befehl in der Bootloader-Konfiguration erreicht.

Beispiele

EFI Stub Kernel

Man fügt zwei initrd-Befehle hinzu:

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

Gummiboot

Man benutzt die initrd-Option zweimal in dem unter /boot/loader/entries/ für Arch Linux vorgesehenen Eintrag:

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

Grub

Bisher hat das Arch Linux Entwickler-Team noch nicht entschieden, wie es mit Microcode-Updates bei Grub verfahren möchte (s. a. im Bug FS#42354. Bis dahin kann man sich mit zwei Notlösungen verhelfen.

Möglichkeit 1: Editieren der grub.conf

Man editiert die Datei /etc/grub.conf und fügt zu jedem dort gelisteten Eintrag entweder /intel-ucode.img, falls man eine extra Boot-Partition besitzt, oder /boot/intel-ucode.img, falls man keine spezielle Boot-Partition verwendet, hinzu.

[...]
echo	'Loading initial ramdisk ...'
initrd	/intel-ucode.img /initramfs-linux.img
[...]

Achtung: Mit jedem Update von GRUB wird diese Datei überschrieben, so dass anschließend die Änderungen erneut vorgenommen werden müssen.

Möglichkeit 2: Editieren der /etc/grub.d/10_linux

Man bearbeitet die Datei etc/grub.d/10_linux, von der aus die grub.conf erstellt wird, und fügt folgende Zeilen hinzu (am Ende der Datei):

   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

Anschließend generiert man die grub.conf neu:

# grub-mkconfig -o /boot/grub/grub.cfg

Hinweis: Bei dieser Methode kann es dazu kommen, das eventuelle GRUB-Updates nicht richtig installiert werden

Syslinux

Man kann hier verschiedene initrd-Einträge durch Kommas trennen. Dazu bearbeitet man die Datei /boot/syslinux/syslinux.cfg:

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