[SOLVED] How to set up early load of Intel firmware
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Introduction to Linux - A Hands on Guide
This guide was created as an overview of the Linux Operating System, geared toward new users as an exploration tour and getting started guide, with exercises at the end of each chapter.
For more advanced trainees it can be a desktop reference, and a collection of the base knowledge needed to proceed with system and network administration. This book contains many real life examples derived from the author's experience as a Linux system and network administrator, trainer and consultant. They hope these examples will help you to get a better understanding of the Linux system and that you feel encouraged to try out things on your own.
Click Here to receive this Complete Guide absolutely free.
I've just downloaded an updated version of my cpu firmware that is supposed to deal with the Zombiload exploit. I've installed it in LFS using the instructions given in BLFS. Basically you put it in a cpio archive and set this to be your initrd.
I now want to do the same in Slackware. But my Slackware installation already has an initrd that I made to go with the generic kernel. The BLFS book says you can specify two initrds if you put the uncompressed one with the kernel firmware first, but they are talking about GRUB and I don't know if the same applies in lilo/elilo. Can I do this in elilo.conf? Or should I put the kernel/x86/microcode tree which contains the firmware into the initrd tree and remake initrd.gz?
-P microcode_archive
This option specifies a cpio archive containing updated
microcode for your CPU. CPU manufacturers occasionally release
such updates to fix bugs in the microcode currently embedded in
the CPU. The microcode archive will be prepended to the output
initrd, where the kernel will find it for early patching:
-P /boot/intel-ucode.cpio
Interesting but the build has another dependency (iucode_tool). It's simpler just to copy over and use the cpio file I already have. Especially as the mkinitrd script has a specific option for doing that. Just one of the nice friendly little touches I've noticed in Slackware since I started using it. Everything seems to be crafted to give you smooth working.
Even if I don't use initrd (at all) in my lilo configuration, as per Petri Kaukasoina's advice, I had to add initrd=/boot/intel-ucode.cpio on its own in /etc/lilo.conf and update lilo (run lilo).
Reported the success here: https://www.linuxquestions.org/quest...ml#post5996246
Obviously, if you already use initrd, then you need to merge your initrd image with the intel-ucode.cpio
So I decided to update the kernel before I went any further. The one in patches (4.4.172) is an earlier series but LTS, so paradoxically it is more recent. It's the first time I have installed a kernel in Slackware, and I was intrigued to see that the doinst.sh script only made a few useful symbolic links and did not actually change the boot process. I think I can see the philosophical rationale for that: changing the boot is hazardous, so should not be done behind the sysadmin's back.
I made the new initrd and got it right the second time (!). Now, I'm running the new kernel and I piped the intel firmware into /sys/devices to see what would happen. It seems to work OK.
Code:
[ 1728.000678] microcode: CPU0 sig=0x30678, pf=0x4, revision=0x811
[ 1728.003107] microcode: CPU0 updated to revision 0x838, date = 2019-04-22
[ 1728.003370] microcode: CPU1 sig=0x30678, pf=0x4, revision=0x811
[ 1728.005450] microcode: CPU1 updated to revision 0x838, date = 2019-04-22
[ 1728.005661] microcode: CPU2 sig=0x30678, pf=0x4, revision=0x811
[ 1728.008503] microcode: CPU2 updated to revision 0x838, date = 2019-04-22
[ 1728.008993] microcode: CPU3 sig=0x30678, pf=0x4, revision=0x811
[ 1728.011868] microcode: CPU3 updated to revision 0x838, date = 2019-04-22
Code:
cat /sys/devices/system/cpu/vulnerabilities/*
Not affected
Mitigation: PTI
Not affected
Mitigation: __user pointer sanitization
Mitigation: Full generic retpoline
So now I'm going to make yet another initrd image with the -P option to load that stuff at boot.
You may not get full mitigation on 14.2 since the last stable, as you know, is 4.4.172 which was released in late Jan. Pat needs to at least release 4.4.180 for stable which has the necessary patches for ZombieLoad.
Mind you, I don't know which CPU you're running. It looks like an older one so maybe you're affected by ZL anyway?
Last edited by Lysander666; 05-20-2019 at 05:38 AM.
Apparently it's a Bay Trail Pentium JS209. But bear in mind that I know damn-all about hardware. The point is that I'm not getting any report of vulnerabilities.
CVE-2017-5753 Spectre 1: Mitigated, not vulnerable
CVE-2017-7515 Spectre 2: Mitigated, not vulnerable but should enable IBBP
CVE-2017-5754 Meltdown: Mitigated, not vulnerable
CVE-2018-3640 Variant 3A: Vulnerable. More up-to-date firmware required.
CVE-2018-12126 Fallout: Vulnerable. Microcode supports mitigation but kernel does not.
CVE-2018-12130 Zombieload: Vulnerable. Microcode supports mitigation but kernel does not.
CVE-2018-12127 RIDL: Vulnerable. Microcode supports mitigation but kernel does not.
CVE-2019-11091 RIDL: Vulnerable. Microcode supports mitigation but kernel does not.
Looks like that new kernel isn't good enough. Is there a later one in current? I'll go check. Now I've installed one, it should be easy to do another.
Just checked: current has 4.19.44.
btw What is IBBP? I can't find it on duckduckgo.
Last edited by hazel; 05-20-2019 at 09:53 AM.
Reason: Added postscript
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.