Jeśli zaktualizowałeś microcode do najnowszej wersji - czyli 20140913-1 musisz dokonać niżej przedstawionych zmian, inaczej microcode nie będą ładowane podczas startu systemu. W czym tkwi "problem"?
Od niedawna konieczne jest dodanie /boot/intel-ucode.img jako pierwszego initrd w pliku konfiguracyjnym bootloadera. Musimy być bardzo ostrożni, gdyż niewłaściwe dodanie wpisu uniemożliwi start systemu! Poniżej przedstawię przykładowe wpisy w poszczególnych bootloaderach.
EFI boot stub / EFI handover
initrd=/intel-ucode.img initrd=/initramfs-linux.img
Gummiboot
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options ...
rEFInd
"Boot with standard options" "ro root=UUID=(...) quiet initrd=/intel-ucode.img initrd=/initramfs-linux.img"
Grub
I. Edycja pliku /boot/grub/grub.cfg
1. Oddzielna partycja boot:
echo 'Loading initial ramdisk ...'
initrd /intel-ucode.img /initramfs-linux.img
2. Sytuacja standardowa tj. brak oddzielnej patycji /boot
echo 'Loading initial ramdisk ...'
initrd /boot/intel-ucode.img /boot/initramfs-linux.img
Uwaga: Wykonanie komendy grub-mkconfig -o /boot/grub/grub.cfg anuluje wprowadzane przez nas zmiany.
II. Edycja pliku /etc/grub.d/10_linux
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
Konieczne jest użycie komendy grub-mkconfig -o /boot/grub/grub.cfg.
Uwaga: użycie tego rozwiązania może powodować problemy podczas aktualizacji do nowszej wersji. W repozytorium testing znajduje się wersja grub przystosowana do korzystania z intel-ucode.img
Syslinux
LABEL arch
MENU LABEL Arch Linux
LINUX ../vmlinuz-linux
INITRD ../intel-ucode.img,../initramfs-linux.img
APPEND ...
Uwaga ogólna: jeśli posiadamy inne kernele, niż ten dystrybucyjny, musimy wykonać dokładnie te same czynności!
Sprawdzamy, czy wszystko działa poprawnie:
[lucjan@archlinux ~]$ dmesg | grep microcode
[ 0.000000] CPU0 microcode updated early to revision 0x1c, date = 2014-07-03
[ 0.044993] CPU1 microcode updated early to revision 0x1c, date = 2014-07-03
[ 0.250570] microcode: CPU0 sig=0x40651, pf=0x40, revision=0x1c
[ 0.250575] microcode: CPU1 sig=0x40651, pf=0x40, revision=0x1c
[ 0.250581] microcode: CPU2 sig=0x40651, pf=0x40, revision=0x1c
[ 0.250588] microcode: CPU3 sig=0x40651, pf=0x40, revision=0x1c
[ 0.250625] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
W rzadkich przypadkach, jeśli posiadamy nowy sprzęt, może się okazać, że nie ma aktualizacji microcode dla posiadanego przez nas procesora. Data przy aktualizacji microcode nie musi się zgadzać (i przeważnie nie zgadza się) z wersją paczki. Data oznacza tylko i wyłącznie ostatnią datę wypuszczenia aktualizacji microcode dla naszego procesora przez Intel.