#!/usr/bin/env bash # Copyright 2024 Gentoo Authors # This script is installed by sys-firmware/intel-microcode, it is executed by # the traditional installkernel, NOT by systemd's kernel-install. I.e. this # plugin is run when the systemd USE flag is disabled or # SYSTEMD_KERNEL_INSTALL=0 is set in the environment. # familiar helpers, we intentionally don't use Gentoo functions.sh die() { echo -e " ${NOCOLOR-\e[1;31m*\e[0m }${*}" >&2 exit 1 } einfo() { echo -e " ${NOCOLOR-\e[1;32m*\e[0m }${*}" >&2 } main() { # re-define for subst to work [[ -n ${NOCOLOR+yes} ]] && NOCOLOR= if [[ ${INSTALLKERNEL_INITRD_GENERATOR} == dracut ]]; then # Dracut bundles microcode in its initramfs images echo "initrd_generator=${INSTALLKERNEL_INITRD_GENERATOR} bundles CPU microcode, nothing to do here." exit 0 fi # do nothing if somehow iucode_tool is not installed [[ -x $(command -v iucode_tool) ]] || die "iucode_tool command not available" [[ ${EUID} -eq 0 ]] || die "Please run this script as root" local opts=( --write-earlyfw="/boot/intel-uc.img" --overwrite --strict-checks --no-ignore-broken --no-downgrade --list-all --list ) einfo "Generating Intel CPU Microcode early initramfs image..." iucode_tool /lib/firmware/intel-ucode "${opts[@]}" || die "iucode_tool failed" } main