On my CentOS, a yum update
brings up the following:
(6/38): iwl1000-firmware-39.31.5.1-62.el7_39.31.5.1-62.2.el7_5.noarch.drpm
(7/38): iwl105-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(8/38): iwl135-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(9/38): iwl2000-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(10/38): iwl2030-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(11/38): iwl3160-firmware-22.0.7.0-62.el7_22.0.7.0-62.2.el7_5.noarch.drpm
etc.
These being so-called "firmware packages". For example, let's find a few of them that are installed:
rpm --query --all | grep firmware
and then query its info:
rpm --query --info iwl105-firmware-18.168.6.1-62.2.el7_5.noarch
and we get:
Summary : Firmware for Intel(R) Centrino Wireless-N 105 Series Adapters
Description :
This package contains the firmware required by the iwlagn driver
for Linux to support the iwl105 hardware. Usage of the firmware
is subject to the terms and conditions contained inside the provided
LICENSE file. Please read it carefully.
Ok, well.
I don't even have that kind of hardware, as this is a VM.
So, question:
What do the firmware packages actually do?
Are they "one-shot" installs that run an opaque executable (immediately? on next boot?) which checks whether the hardware exists, pumps binary code into the hardware's flash if the hardware is there (maybe while asking the user; on Windows at least, hardware flashing is always fraught with DOS windows that pop up, EULAs that have to been clicked through, and progress bars that have to be endured), and then marks the package as "installed".
Do they modify the initramfs so that a binary blob is loaded by a kernel module or something happens at the next boot?