Since no one seems to have an answer or hasn’t tried it yet … this is how I did it; keep in mind that this may not be the entirely correct way.
First of all you need to somehow cough up a initrd image containing the AMD microcode. Since it doesn’t exist OOB (Out Of the Box) we have to make one:
Copy/Paste the code below, save it as “mkamducode.sh”
if [ $UID != "0" ]; then
echo "Please run as root."
if [ -d /lib/firmware/amd-ucode ]; then
echo "Entering /tmp..."
if [ -d kernel/x86/microcode ]; then
echo " Deleting old files..."
rm -rf kernel
echo " Creating directories..."
mkdir -p kernel/x86/microcode
echo " Creating 'AuthenticAMD.bin'..."
cat /lib/firmware/amd-ucode/microcode_amd*.bin > kernel/x86/microcode/AuthenticAMD.bin
echo " Creating initrd image..."
echo kernel/x86/microcode/AuthenticAMD.bin | bsdcpio -o -H newc -R 0:0 > amd-ucode.img
echo " Cleaning up..."
rm -rf kernel
if [ -e /boot/amd-ucode.img ]; then
echo " Deleting '/boot/amd-ucode.img'..."
echo " Putting 'amd-ucode.img' into /boot..."
mv amd-ucode.img /boot/
echo "All done."
echo "Required /lib/firmware/amd_ucode directory not found. "
echo "Make sure 'linux-firmware' is installed."
We need to make it executable…
sudo chmod 755 /path/to/mkamducode.sh
… and run it to create /boot/amd-ucode.img …
Alright, now that we have the file (also includes the ucode files for Ryzen, in case the files drop faster than a UEFI update) we need to make grub work with it …
First, let us create a backup copy of the file we’re going to modify; just in case something goes wrong …
sudo cp /etc/grub.d/10_antergos /root/
Now we open the file for editing …
sudo nano /etc/grub.d/10_antergos
Search for “intel_ucode=”, should be at line 83
Above the “intel_ucode=” line or below the closing “fi” line - just like you prefer - insert this code block …
if test -e "/boot/amd-ucode.img" ; then
gettext_printf "Found AMD Microcode image\n" >&2
Save the modification (make sure you didn’t typo in case you typed it in).
Let us re-run grub-mkconfig…
sudo grub-mkconfig -o /boot/grub/grub.cfg
One thing you’re going to notice is that it will now print the “Found AMD microcode image” line.
When grub-mkconfig is done and hasn’t thrown any error reboot the machine.
Login, open a terminal and issue:
dmesg | grep microcode
The output should look like this (copy/pasted from a FX8150 test system):
[ 0.938804] microcode: microcode updated early to new patch_level=0x06000852
[ 0.938830] microcode: CPU0: patch_level=0x06000852
[ 0.938836] microcode: CPU1: patch_level=0x06000852
[ 0.938843] microcode: CPU2: patch_level=0x06000852
[ 0.938849] microcode: CPU3: patch_level=0x06000852
[ 0.938852] microcode: CPU4: patch_level=0x06000852
[ 0.938856] microcode: CPU5: patch_level=0x06000852
[ 0.938863] microcode: CPU6: patch_level=0x06000852
[ 0.938869] microcode: CPU7: patch_level=0x06000852
[ 0.938909] microcode: Microcode Update Driver: v2.2.
Now we’re talkin’ “early microcode loadin’ boy” … seems like implementing a simple hack like that to help older systems is too 31337 for Arch.
Downside of this solution: In case of an updated microcode being shipped via “linux-firmware” requires you to re-run the “mkamducode.sh” script to recreate the initrd image file with the updated bits.
So, that’s all there is to it. The shell script isn’t even necessary; I only cobbled that one up so you have a script to do it for you instead of having to type each command into the terminal … might be as bothersome as trying to get to Google to do some research.