
我正在嘗試清理根分割區上的空間,而 /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
。因此,您應該定期檢查您確信不需要的資料夾。
這是一個優雅的解決方案嗎?不。是不是很hacky?是的。但是,我仍然認為在某些情況下可以刪除文件而不會產生任何後果。如果您運行僅帶有板載圖形適配器的 Ubuntu Server,那麼刪除 AMD 和 Nvidia 韌體肯定沒有問題。可能還有其他類似的情況。
請務必小心,並做好在任何情況下恢復文件的準備。
注意:我目前正在研究一種方法來可靠地找出自上次重新啟動以來哪些韌體檔案已被訪問 - 我將在幾天內報告這一點...
答案2
您可以在核心日誌中檢查用於您的系統的韌體。
grep firmware /var/log/kernel.log
將為您提供自上次日誌輪換以來加載的固件的不錯列表(可能是幾天)
然而,自從我第一次發布這篇文章以來,我了解到大多數韌體將由 initrd 加載,並且通常不會生成其正在執行的操作的日誌檔案。