I have a Haswell Intel CPU with intel-ucode installed in a multi-boot system. Grub2 is only installed on my Antergos drive with only root and swap paritions on my other two disks, which include Xubuntu on drive sdb and Vanilla Arch on drive sdc. So no boot partitions on sdb and sdc, just /boot directories. I have os-prober installed in Antergos and updated grub in Antergos after installing the other OSs.

[[email protected] ~]$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 223.6G  0 disk 
├─sda1   8:1    0   200M  0 part /boot/efi
├─sda2   8:2    0   256M  0 part /boot
├─sda3   8:3    0 215.5G  0 part /
└─sda4   8:4    0   7.6G  0 part [SWAP]
sdb      8:16   0 223.6G  0 disk 
├─sdb1   8:17   0 216.1G  0 part 
└─sdb2   8:18   0   7.5G  0 part 
sdc      8:32   0 111.8G  0 disk 
├─sdc1   8:33   0 102.6G  0 part 
└─sdc2   8:34   0   9.3G  0 part 
sr0     11:0    1  1024M  0 rom  

When I run the following commmand in Antergos and Xubuntu, the updated microcode driver is loaded:

[[email protected] ~]$ dmesg | grep microcode
[    0.000000] microcode: microcode updated early to revision 0x24, date = 2018-01-21
[    0.398111] microcode: sig=0x306c3, pf=0x2, revision=0x24
[    0.398272] microcode: Microcode Update Driver: v2.2.

But running the same command in my Vanilla Arch, I get the following error and the updated microcode isn’t loaded:

[[email protected] ~]$ dmesg | grep microcode
[    0.000000] [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x22 (or later)
[    0.362059] microcode: sig=0x306c3, pf=0x2, revision=0x1c
[    0.362176] microcode: Microcode Update Driver: v2.2.

So I changed the following last line below in the Vanilla Arch menuentry from initrd /boot/initramfs-linux.img to initrd /boot/intel-ucode.img /boot/initramfs-linux.img in /etc/grub.d/40_custom and now the microcode gets loaded correctly. Below is my copy and paste into /etc/grub.d/40_custom, and you can see the uncommented line is what was originally created with os-prober in /boot/grub/grub.cfg when updating grub in Antergos:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry 'Arch Linux (on /dev/sdc1)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-41a2c403-015b-4edc-9433-3b39cbbf665f' {
        insmod part_gpt
        insmod ext2
        set root='hd2,gpt1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd2,gpt1 --hint-efi=hd2,gpt1 --hint-baremetal=ahci2,gpt1  41a2c403-015b-4edc-9433-3b39cbbf665f
        else
          search --no-floppy --fs-uuid --set=root 41a2c403-015b-4edc-9433-3b39cbbf665f
        fi
        linux /boot/vmlinuz-linux root=/dev/sdc1
        initrd /boot/intel-ucode.img /boot/initramfs-linux.img
        #initrd /boot/initramfs-linux.img
}
submenu 'Advanced options for Arch Linux (on /dev/sdc1)' $menuentry_id_option 'osprober-gnulinux-advanced-41a2c403-015b-4edc-9433-3b39cbbf665f' {
        menuentry 'Arch Linux (on /dev/sdc1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-linux--41a2c403-015b-4edc-9433-3b39cbbf665f' {
                insmod part_gpt
                insmod ext2
                set root='hd2,gpt1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd2,gpt1 --hint-efi=hd2,gpt1 --hint-baremetal=ahci2,gpt1  41a2c403-015b-4edc-9433-3b39cbbf665f
                else
                  search --no-floppy --fs-uuid --set=root 41a2c403-015b-4edc-9433-3b39cbbf665f
                fi
                linux /boot/vmlinuz-linux root=/dev/sdc1
		initrd /boot/intel-ucode.img /boot/initramfs-linux-fallback.img
                #initrd /boot/initramfs-linux.img
        }
}

But now I have separate two separate Vanilla Arch menuentry when booting into grub - one that doesn’t load the microcode and the other that does. I have Grub Customizer installed as well - removing these is easy if I want to go this route, but I’d rather have a more “hands on” approach. Is there a cleaner or better way to do this boot all drives considering that I will have to update grub on the Antergos drive every time a new kernel update is installed?