With the release of mkinitcpio v38, several hooks previously provided by Arch packages have been moved to the mkinitcpio upstream project. The hooks are: systemd, udev, encrypt, sd-encrypt, lvm2 and mdadm_udev.
To ensure no breakage of users' setup occurs, temporary conflicts have been introduced into the respective packages to prevent installing packages that are no longer compatible.
The following packages needs to be upgraded together:
mkinitcpio 38-3
systemd 255.4-2
lvm2 2.03.23-3
mdadm 4.3-2
cryptsetup 2.7.0-3
Please note that the mkinitcpio flag --microcode, and the microcode option in the preset files, has been deprecated in favour of a new microcode hook. This also allows you to drop the microcode initrd lines from your boot configuration as they are now packed together with the main initramfs image.
mkinitcpio.conf --> make sure you have microcode after the autodetect in the HOOKS line
/etc/mkinitcpio.d/<kernel>.preset --> remove the line ALL_microcode=(/boot/*-ucode.img)
systemd-boot users: arch.conf --> remove or comment out the initrd /amd-ucode.img (or intel-ucode.img) line
Run sudo mkinitcpio -p <kernel> to generate your new initrd, and then reboot
Optional: run grep microcode /proc/cpuinfo before and after the reboot to verify that your microcode version hasn't changed after the reboot - which means that the new microcode loading method is working correctly.
On a tangential note, the above is a perfect example of why I don't recommend Arch (and so-called "easy" derivatives like EndeavourOS) for newbies (ie people who don't RTFM / keep up with Arch news / inspect their .pacnew files etc). Feel free to link this post in your future internet arguments. :)
Other reason is that a newbie (or even advanced user, but someone digging in more) won't even benefit from Arch.
I personally cannot imagine using anything other than Arch, but no way I am going to recommend it for someone who don't know what a bootloader is.
But recommending to install it in VM is good tho, teaches a lot.
As I read the announcement it sounds like you only need to do changes if you setup early-microcode stuff. So if you have a completely standard install, no changes would be needed other than updating packages.
It's the other way round. Early-loading is the default and in fact late-loading doesn't even work on stock Arch kernels, because it requires the kernel to be built with that config option enabled. So any "standard" install would be taking about early-loading microcode, so this should be applicable to you as well.
Okay. But they do state in the announcement, that to ensure that no breaking occurs, they introduced some conflicts. So even if I just update packages, I should get my system up and running and be able to make any changes when they are required?
They don't mention anywhere that manual intervention is required for this update.
So there's two parts to this announcement. The first one deals with the upstreaming of modules and the resultant conflicts with the Arch packaged versions - this was solved by Arch upstream by introducing conflicts. In this case, you don't need to do anything.
The second part is about the microcode loading, where the old method of loading the microcode is deprecated, in favor of the new method (ie making it part of your main initrd). Now it's just deprecated, so you don't have to take any action either, but if you don't, you'll see annoying warning messages from mkinitcpio, whenever your kernel/initrd gets updated. But eventually, the legacy option will go away, and you'll be forced to take action. So might as well do it now, because Arch ain't going to do it for you in the future.
I might have missed something VERY obvious - I did skim through check the mkinitcpio, grub and microcode wikipages - but just merging .pacnew to current config (mkinitcpio, grub defaults), mkinitcpio -p linux and grub-mkconfig -o /boot/grub/grub.cfg, newly created grub.conf still had intel-ucode on the initrd -line. This happened on both machines I have atm.
In addition to what @[email protected] said about grub, I didn't need to edit kernel.preset files, but I did need to have the encrypt hook, and /crypto_keyfile.bin, in files, and crc32c-intel (only on my intel machine, just crc32c on my amd machine) in modules.
I was trying to do this, didn't find the directory, figured out that mkinitcpio wasn't installed. Turns out EndeavourOS set up dracut which means I don't even have to do this.
(Hides behind purple SDDM theme)
Could you please elaborate on the full path for the arch.conf file? I looked at /usr/share/systemd/bootctl/arch.conf and there was no initrd /amd-ucode.img (or intel-ucode.img) line, instead all I had was initrd /initramfs-linux.img
Furthermore, for step 3 I didnt have any entry starting with ALL_microcode=
Could you please elaborate on the full path for the arch.conf file?
Could be called something else, but it should be in /boot/loader/entries/. But if you don't have the initrd /amd-ucode.img line then that's fine, you don't need to do anything. Same with step 3, if you don't have the ALL_microcode line you can ignore that step.