我正在尝试清理根分区上的空间,但 /lib/firmware 占用了大量空间。有很多我知道我没有的设备的文件,但也有很多我不认识的设备的文件,所以我不知道我是否需要固件。
有没有办法查看实际已加载的固件文件?
答案1
我会在这里说:我同意可能有很多/lib/firmware
你可能不需要的文件,因此应该可以删除其中的一些。
但是,无论如何都应该谨慎进行,并且您应该准备通过实时 USB 启动或类似方法放回丢失的固件文件。
/lib/firmware
我制作了以下超过 5 MB的文件夹列表,仅供参考:(我已删除intel
和intel-ucode
,因为您很可能不应该删除它们)
/lib/firmware/netronome : NIC firmware implementation for Agilio SmartNICs /lib/firmware/amdgpu : AMD GPU firmware /lib/firmware/mellanox : Mellanox Ethernet and InfiniBand NIC firmware /lib/firmware/qcom : Qualcomm device firmware /lib/firmware/mrvl : Marvell device firmware /lib/firmware/ath11k : Firmware for Qualcomm IEEE 802.11ax devices /lib/firmware/i915 : Firmware for i915 Intel GFX Driver /lib/firmware/liquidio : NIC firmware implementation for Marvell Liquidio SmartNICs /lib/firmware/qed : Firmware for QLogic Everest FastLinQ Linux Driver /lib/firmware/mediatek : MediaTak device firmware /lib/firmware/dpaa2 : Firmware for DPAA2 (Data Path Acceleration Architecture Gen2) /lib/firmware/ath10k : Firmware for Qualcomm IEEE 802.11ac devices /lib/firmware/brcm : Broadcom device firmware /lib/firmware/radeon : Firmware for AMD Radeon GPU adapters /lib/firmware/rtw89 : Firmware for Realtek rtw89 devices /lib/firmware/cypress : Cypress device firmware /lib/firmware/ti-connectivity : Texas Instruments device firmware
然后我建议你运行sudo lshw
,并仔细检查列表。如果你 100% 确定你没有来自特定供应商的硬件,我认为你可以移动该固件文件夹。请注意,我建议您移动它而不是首先将其移除,以便在出现任何问题时可以将其放回去。
例如,我相信视频卡就是一个很好的例子。如果您只有 NVidia 视频卡,您可能可以删除 AMD GPU 固件 - 反之亦然。同样,对于无线网络适配器,如果您有一个供应商的产品,那么您很可能没有其他供应商的产品。
请注意,如果您稍后决定更换硬件,您可能会突然错过一些固件文件。这就是为什么我(再次)建议您不要删除任何东西,而是将其移至其他位置。
最后请注意,运行时sudo apt upgrade
,可能会安装新文件/lib/firmware
。因此,您应该定期检查您绝对确定不需要的文件夹。
这是一个优雅的解决方案吗?不。它是不是太黑客了?是的。但是,我仍然认为,在某些情况下,删除文件不会产生任何后果。如果您运行的 Ubuntu Server 只带有板载图形适配器,那么删除 AMD 和 Nvidia 固件肯定没有问题。而且可能还有其他类似的情况。
只要小心一点,并做好在任何情况下恢复文件的准备。
注意:我目前正在研究一种可靠地找出自上次重启以来访问过的固件文件的方法——我将在几天后报告这一点...
答案2
您可以在内核日志中检查系统使用的固件。
grep firmware /var/log/kernel.log
将为您提供自上次日志轮换以来加载的固件列表(可能是几天)
然而自从我第一次发布这篇文章以来,我了解到大多数固件将由 initrd 加载,并且通常不会生成其正在执行的操作的日志文件。