diff options
author | Rick Farina (Zero_Chaos) <zerochaos@gentoo.org> | 2016-10-27 00:36:31 -0400 |
---|---|---|
committer | Rick Farina (Zero_Chaos) <zerochaos@gentoo.org> | 2016-10-27 00:36:31 -0400 |
commit | f1009fdc9d720bde0b2332179a44a0be51dcd9c6 (patch) | |
tree | 1681e84b8cabc92a3dc0451d0b7279b6a80439f7 | |
parent | FIRMWARE_INSTALL control option. (diff) | |
download | genkernel-f1009fdc9d720bde0b2332179a44a0be51dcd9c6.tar.gz genkernel-f1009fdc9d720bde0b2332179a44a0be51dcd9c6.tar.bz2 genkernel-f1009fdc9d720bde0b2332179a44a0be51dcd9c6.zip |
initial early-microcode support
automatically detect if it is possible to prepend cpu ucode to the
initramfs, and then, you know, do it. Left a few blanks because it's
super later and I'm tired of working on this. I can continue if no one
beats me to it.
-rwxr-xr-x | gen_funcs.sh | 2 | ||||
-rwxr-xr-x | gen_initramfs.sh | 34 |
2 files changed, 35 insertions, 1 deletions
diff --git a/gen_funcs.sh b/gen_funcs.sh index 7e974de..1bdaa7b 100755 --- a/gen_funcs.sh +++ b/gen_funcs.sh @@ -262,7 +262,7 @@ then for i in ${TMPDIR_CONTENTS} do print_info 1 " >> removing ${i}" - rm ${TMPDIR}/${i} + rm -r ${TMPDIR}/${i} done fi } diff --git a/gen_initramfs.sh b/gen_initramfs.sh index ea4a771..fb74929 100755 --- a/gen_initramfs.sh +++ b/gen_initramfs.sh @@ -1040,6 +1040,40 @@ create_initramfs() { print_info 1 " >> Not compressing cpio data ..." fi fi + ## To early load microcode we need to follow some pretty specific steps + ## mostly laid out in linux/Documentation/x86/early-microcode.txt + #if CONFIG_MICROCODE=y; then + print_info 1 "early-microcode: >> Preparing..." + UCODEDIR="${TMPDIR}/ucode_tmp/kernel/x86/microcode/" + mkdir -p "${UCODEDIR}" + #if CONFIG_MICROCODE_INTEL=y; then + if [ "$(ls -A /lib/firmware/intel-ucode)" ]; then + print_info 1 " >> adding GenuineIntel.bin" + cat /lib/firmware/intel-ucode/* > "${UCODEDIR}/GenuineIntel.bin" || gen_die "Failed to concat intel cpu ucode" + #else + #print_info 1 "CONFIG_MICROCODE_INTEL=y set but no ucode available. Please install sys-firmware/intel-microcode[split-ucode]" + fi + #fi + #if CONFIG_MICROCODE_AMD=y; then + if [ "$(ls -A /lib/firmware/amd-ucode)" ]; then + print_info 1 " >> adding AuthenticAMD.bin" + cat /lib/firmware/amd-ucode/*.bin > "${UCODEDIR}/AuthenticAMD.bin" || gen_dir "Failed to concat amd cpu ucode" + #else + #print_info 1 "CONFIG_MICROCODE_AMD=y set but no ucode available. Please install sys-firmware/linux-firmware" + fi + #fi + if [ "$(ls -A ${UCODE})" ]; then + print_info 1 "early-microcode: >> Creating cpio..." + pushd "${TMPDIR}/ucode_tmp" > /dev/null + find . | cpio -o -H newc > ../ucode.cpio || gen_die "Failed to create cpu microcode cpio" + popd > /dev/null + print_info 1 "early-microcode: >> Prepending early-microcode to initramfs" + cat "${TMPDIR}/ucode.cpio" "${CPIO}" > "${CPIO}.early-microcode" || gen_die "Failed to prepend early-microcode to initramfs" + mv -f "${CPIO}.early-microcode" "${CPIO}" || gen_die "Rename failed" + #else + #print_info 1 "CONFIG_MICROCODE=y is set but no microcode found" + fi + #fi if isTrue "${WRAP_INITRD}" then local mkimage_cmd=$(type -p mkimage) |