1
0
kernel-firmware/mkinitrd_setup-amd_microcode.sh

37 lines
1.3 KiB
Bash
Raw Normal View History

#/bin/bash
#%stage: boot
#
# Adds AMD microcode to the initrd
#
# If processor(s) are upgraded on the system, mkinitrd has to be re-called
# manually to include a possible other needed firmware to the initrd
#
if grep -q -i AuthenticAMD /proc/cpuinfo; then
echo -n "Microcode: "
if [ ! -e /lib/firmware/amd-ucode ];then
echo "AMD microcode not found, amd-ucode package not installed?"
return 0
fi
fam=`head /proc/cpuinfo |sed -n -e 's/cpu family.*: \([0-9]\+\)/\1/p'`
# Only try to update when family >= 16 (0x10, fam 10h)
if [ $fam -ge 16 >& /dev/null ];then
# Family 0x15 firmware is named: microcode_amd_famXXh.bin"
if [ $fam -lt 21 >& /dev/null ];then
file=microcode_amd.bin
else
file=`printf "microcode_amd_fam%xh.bin" $fam`
fi
if [ -e /lib/firmware/amd-ucode ];then
echo "Adding AMD microcode $file"
mkdir -p $tmp_mnt/lib/firmware/amd-ucode
cp /lib/firmware/amd-ucode/"$file"* $tmp_mnt/lib/firmware/amd-ucode
else
echo "No AMD microcode found, amd-ucode package not installed?"
fi
else
printf "AMD CPU family: 0x%x does not support microcode updates" $fam
fi
fi