How can we list firmware that's in use?

I also have long wanted to get that disk space back. I have CentOS on an embedded system in a remote location.

When it was installed, 2gb was all the storage i could get and with some care that is fine. But i wanted to extend some logging and was looking for space to prune.

When I saw this thread, I thought the best answer was going to be “get your kernel somewhere other that the default package”

Thanks for learning me about weak/strong dependencies.

Question for OP: HOW can i be 100% certain that no firmwares are in use on my system, and none are needed for boot?

I’m pretty sure none are but I’m not certain myself.

Your specific hardware determines which (if any) firmware modules are needed. I don’t know how to tell otherwise, but if you remove the linux-firmware package and something then does not work it seems pretty reasonable to assume needed firmware is no longer available.

so… remove it, and try to reboot and if if reboots okay, then I didn’t need it?

I was hoping for a more surgical solution. Something that would not likely end up in a headless system not booting up again if I was wrong and it did need one of the firmware blobs…

A specific comandline command for example to enumerate which blobs are in use or have been accessed since boot began…

Firmware is never a blob. For me this question makes no sense: what are you doing when you plug-in new hardware and the system can not recognize it because you have deleted the firmware package? This “blob fantasy” comes from the windows world, where software manufacturers offers free test versions for later buying it. Fedora is not a commercial software blob platform. Leave it as it is otherwise you will get in to troubles and sometimes later you will ask us how to repair different hardware issues. Stay tuned and enjoy Fedora.

First, the other thread that is sometimes mentioned or referred to in this thread is: How to avoid installing firmware when updating kernel?
Just to ensure that we are all on the same page :wink:



The Linux kernel mainline contains binary firmware blobs, which are not free. Some distributions use a linux-libre kernel without them (or remove the blobs on their own from the mainline kernel) to get a fully-free kernel without these blobs, but such kernel has less hardware support. So, firmware blobs are also a Linux topic. Fedora is intended to contain the binary firmware blobs. Playing with this is, as you already pointed out, potentially dangerous because it is not intended and not tested for Fedora.
Some elaboration of the topic:
KernelFirmwareLicensing - Debian Wiki
The kernel and binary firmware [LWN.net] (old but still interesting in terms of the relations of firmware blobs : )
Linux firmware - Gentoo wiki

Supplement: maybe it is worth to mention at this point that firmware does not imply blob. Using blobs is just the usual/easiest way of making non-free software available to the kernel, while non-free software added to the Linux kernel is usually firmware (firmware is the sole thing where it often cannot be avoided to include non-free).

I have a comparable opinion in terms of the risks that supersede the few mb that can be freed by removing the package. I already made my point in the other thread b3y referred to. However, b3y has to make his own trade-off. He knows his needs the best :wink:

@b3y When you remove the linux-firmware package, just be aware of the disadvantages we put forward in both threads, and I suggest to prepare a Fedora live system on a stick, just for the worst case (which is that some critical hardware depends on the package). And don’t forget how much space the removal will release (below 200 mb). You should carefully consider if it is worth the risks. What you are going to do is not intended and not tested. Therefore, troubles are possible, and may happen also after future updates/upgrades (to software and/or hardware).

To answer this question based upon the exact meaning of firmware: you know for sure if the monitor is black and no input/output is possible. So, when everything is dead. Because firmware is what makes the hardware usable on the lower levels. However, not all firmware is in the linux-firmware package. Does that make sense?

Btw, I am currently not convinced if we are talking about firmware or about non-free software in the kernel space?

1 Like

To clarify what I’m talking about and what I think the intention of OP is:

  • we’re talking about the resources provided by the linux-firmware package.
  • we’re not concerned (in this thread) about wether it’s free or non-free
  • it doesn’t matter to us if it’s a blob or not a blob
  • our objective is reducing disk space usage to fit on systems with limited storage.

It feels a wee bit wrong to dismiss this objective as a ‘few mb’ of savings. From a couple of my machines…
516M /usr/lib/firmware/
270M /usr/lib/firmware/
409M /usr/lib/firmware/

I get it. a lot of computers are big old desktops with 8TB of storage or servers with 50TB nowadays. But some of us use linux on embeded devices. Maybe they run off microsd cards that are just 16gb or 8gb. I have one (which has been online and in service now for 6 years) and when I built it I put in 4gb of storage.

I analyze disk usage a couple times a year, and it feels ever more preposterous each year how large the ‘firmware’ dir is in comparison to everything else and I look in there and see for instance 1/4 of all it’s disk space is for some nic called netronome I’ve never heard of and I’m thinking what the heck I don’t have that. This hardware will not ever accept a different nic anyways.

It might be nice to be able to slim down a little and that’s all OP and I want to do. Maybe some sort of firmware-excludes file that is referenced when linux-firmware package installs, to exclude drivers that are spefically listed there. And then some utility for embeded / low-disk-space users that lists out all the drivers you actually need and puts all others in that file after displaying a prominent warning “you may loose some plug-and-play ability if you do this”

In this case, I suggest to close this thread and not limit yourself to firmware. Open another thread that generally asks how to free space on Fedora. This may start with things like regularly delete old logs (they can increase to gigabytes! e.g., journalctl --vacuum-time=30days) and may further result in a debate about which packages are usually not needed and may be removed.

I am quite sure there is much more than firmware packages, and much that is less risky.

If you add some information about the specific use case, this may increase the number of suggestions for packages you are likely to not need. The more we know about the use case, the more packages we can identify that are not needed for that specific use case.

Just some thoughts :slight_smile:

Supplement: as mentioned before, not every firmware is contained in the package linux-firmware. When I do dnf remove linux-firmware, dnf is to free 193 MB. However, I do not know if it is possible to exactly determine which firmware package is in use and which not.

But maybe it makes sense to identify, e.g., wireless firmware packages, and remove them if you generally do not use wireless. I would not start with linux-firmware. E.g.,

iwl3945-firmware.noarch : Firmware for Intel PRO/Wireless 3945 A/B/G network adaptors
iwl4965-firmware.noarch : Firmware for Intel PRO/Wireless 4965 A/G/N network adaptors
iwl5000-firmware.noarch : Firmware for Intel PRO/Wireless 5000 A/G/N network adaptors
iwl5150-firmware.noarch : Firmware for Intel PRO/Wireless 5150 A/G/N network adaptors

dnf search firmware (be aware that this search does not necessarily output all firmware but just the packages that have the term in their name)

However, my suggestion remains to not break dependencies if dnf makes you aware of some.

2 Likes

Firmware is the third largest non-operational directory. behind /usr/lib and /usr/lib64. and those two sound a lot more important to me and harder to sort out what I need from what I don’t. Firmware is the obvious target.

I use the logs. They provide value. They are a large part of why the system was installed, so truncating those necessarily reduces value. Removing every last wifi or video card firmware, on the other hand is fine. this system has never had wireless interfaces or a video card so I don’t see why I need any of that, or printer/scanner stuff or sound cards, etc.

---- actually---- I just went and did some more examination and cleaning. I found and removed an orphaned installation of nvidia x11 drivers which I obviously do not need without avideo card, an orphaned jvm version and purged all JVMs since I don’t use java at all on this machine, and purged an obnovious nodejs module that I haven’t used in 3 years, and now firmware is absolutely the largest dir on the system.

The linux-firmware package is probably the single largest “mandatory” package there is in Fedora.

I wonder if you can use access time (ls -ltu) to select only files used at last boot.