Every couple of weeks or so I get a linux-firmware update that's hundreds of MB (today is 0.5GB). I'd like to know if these updates only cover installed hardware or if Ubuntu keeps a generic set of firmware modules covering also not-installed hardware. If this is the case, I'd like to know if there's a way to limit the update to firmware related to installed modules and avoid installing not used firmware. My disk is not so big...
It’s all the firmware for all devices for which the kernel has a driver – or at least all the firmware for which the makers of the devices have in some form agreed with the firmware being redistributed. This – combined with the drivers either compiled into the kernel or included as loadable kernel-modules - allows you to just plug some hardware in and have it work without having to search for and install drivers.
Selective installation is not supported AFAIK. The only idea I could come up with is to remove the files you don’t need after installation, but you’d need to know which files are needed for what device. With the number of supported devices and the number of files (about 3000, a bit more than a Gigabyte) this seems to be a somewhat sisyphean task especially since you’d have to do it again after every update …
If you really want to suppress the 0.5GB “update” of something you’re pretty sure you don’t need, just sudo apt-mark hold linux-firmware. If some kernel update really needs something there, unhold, and update.
If you want, you can apt pin the package. The package then won’t be updated.
I’d suggest unpinning occasionally to check for updates for the package but then repin
Note that the linux-firmware package is a hard dependency of the kernel metapackage, so holding it like this will effectively block all future kernel (security) updates on that machine .,… perhaps not such a good idea just to solve some size concerns