[Eisfair] Vorgehensweise um manuell die initrd.gz zu modifizieren
Thomas Bork
tom at eisfair.org
Di Okt 15 21:18:52 CEST 2019
Am 15.10.2019 um 21:00 schrieb D. Oezbilen:
> Wo/wie suchst Du? Nur als Info.
Ich weiß, wo sie liegen, denn ich bringe sie mit. Und das sind auch nur
_mögliche_ Updates, da ich dabei nicht prüfen kann, welche Microcodes
eventuell schon installiert sind.
Siehe die Routine in /tmp/install.sh der Kernel-Updates:
#-----------------------------------------------------------------------------
# create /var/install/initrd/ucode.img and concatenate with normal initrd.gz
#-----------------------------------------------------------------------------
# remove files from kernel package 3.17.0/3.18.0
rm -f /var/install/initrd/intel-ucode.img
rm -f /var/install/initrd/initrd.gz.with.iucode
rm -f /var/install/initrd/initrd.gz.without.iucode
# remove old files
rm -f /var/install/initrd/ucode.img
rm -f /var/install/initrd/initrd.gz.with.ucode
rm -f /var/install/initrd/initrd.gz.without.ucode
rm -rf /tmp/microcode_mount.?*
# check for virtual environment
lscpu | egrep -qi 'vmware|xen|kvm|qemu|virtualbox|bochs'
# only do this in non vitualized environments
if [ $? -eq 1 ]
then
message="Running in physical environment, trying to add microcode
updates ..."
echo "$message"
echo "$message" >>"$klogfile"
microcode_mount=`/bin/mktemp -d -t microcode_mount.XXXXXXXXXX`
if [ $? -ne 0 ]
then
microcode_mount="/__mnt_initrd__.$$"
fi
# add intel microcodes if needed
if [ -d /lib/firmware/intel-ucode ]
then
if grep -q 'GenuineIntel' /proc/cpuinfo
then
iucode_tool_bin='/tmp/iucode_tool'
${iucode_tool_bin} -S -l /lib/firmware/intel-ucode/*
>>"$klogfile" 2>&1
if [ $? -eq 0 ]
then
message="Adding Intel microcode updates to initramfs ..."
echo "$message"
echo "$message" >>"$klogfile"
mkdir -p ${microcode_mount}/kernel/x86/microcode
${iucode_tool_bin} -S -w
${microcode_mount}/kernel/x86/microcode/GenuineIntel.bin
/lib/firmware/intel-ucode/* >>"$klogfile" 2>&1
fi
fi
fi
rm -f /tmp/iucode_tool
# add amd microcodes if needed
amd_microcode_files=''
if [ -d /lib/firmware/amd-ucode ]
then
if grep -q 'AuthenticAMD' /proc/cpuinfo
then
case `lscpu | grep 'CPU family:' | awk -F':' '{ print $2 }'
| sed "s#${tabs_or_blanks}##g"`
in
# 10h bis 14h
16|17|18|19|20)amd_microcode_files='/lib/firmware/amd-ucode/microcode_amd.bin*'
;;
# 15h
21)amd_microcode_files='/lib/firmware/amd-ucode/microcode_amd_fam15h.bin*'
;;
# 16h
22)amd_microcode_files='/lib/firmware/amd-ucode/microcode_amd_fam16h.bin*'
;;
# 17h
23)amd_microcode_files='/lib/firmware/amd-ucode/microcode_amd_fam17h.bin*'
;;
esac
if [ -n "$amd_microcode_files" ]
then
message="Adding AMD microcode updates to initramfs ..."
echo "$message"
echo "$message" >>"$klogfile"
mkdir -p ${microcode_mount}/kernel/x86/microcode
ls -l ${amd_microcode_files} >>"$klogfile" 2>&1
cat ${amd_microcode_files}
>${microcode_mount}/kernel/x86/microcode/AuthenticAMD.bin
fi
fi
fi
# create /var/install/initrd/ucode.img
if [ -d ${microcode_mount}/kernel/x86/microcode ]
then
cd ${microcode_mount}
find . | cpio -o -H newc --quiet >/var/install/initrd/ucode.img
fi
# delete temp dir
cd /
rm -rf ${microcode_mount}
if [ -f /var/install/initrd/ucode.img ]
then
# keep normal initrd.gz
mv -f /var/install/initrd/initrd.gz
/var/install/initrd/initrd.gz.without.ucode
# create combined image
cat /var/install/initrd/ucode.img
/var/install/initrd/initrd.gz.without.ucode
>/var/install/initrd/initrd.gz.with.ucode
cp /var/install/initrd/initrd.gz.with.ucode
/var/install/initrd/initrd.gz
else
message="No microcode update for your cpu available."
echo "$message"
echo "$message" >>"$klogfile"
fi
else
message="Running in virtual environment, don't trying to add
microcode updates ..."
echo "$message"
echo "$message" >>"$klogfile"
rm -f /tmp/iucode_tool
fi
--
der tom
[eisfair-team]
Mehr Informationen über die Mailingliste Eisfair