Boot

fwupd 服務正在減慢我的 PCIe SSD 的啟動時間。為什麼會這樣,我該如何解決?

  • June 27, 2020

我的系統目前在啟動時顯示出一些奇怪的行為。按下電源按鈕幾秒鐘後,GUI 登錄出現,但我的鍵盤和滑鼠保持未通電約一分鐘。systemd-analyze表示fwupd.service是問題:

$ systemd-analyze time
Startup finished in 12.573s (firmware) + 293ms (loader) + 3.710s (kernel) + 1min 2.907s (userspace) = 1min 19.485s 
graphical.target reached after 5.434s in userspace
$ systemd-analyze blame
1min 705ms fwupd.service                       
   4.083s plymouth-quit-wait.service          
   1.028s gpu-manager.service                 
    925ms systemd-logind.service              
    708ms systemd-resolved.service            
    507ms accounts-daemon.service             
    490ms networkd-dispatcher.service         
    488ms system76-power.service              
    470ms fancontrol.service                  
    437ms ModemManager.service                
    301ms systemd-journald.service
...

journalctl -u表示fwupd正在掛斷某些設備:

Jun 25 21:25:49 pop_os systemd[1]: Starting Firmware update daemon...
Jun 25 21:25:50 pop_os fwupd[1501]: 01:25:50:0156 FuPluginUefi         failed to add /sys/firmware/efi/esrt/entries/entry0: ESRT GUID '00000000-0000-0000-0000-000000000000' was not valid
Jun 25 21:26:50 pop_os systemd[1]: Started Firmware update daemon.

我嘗試將指定的 GUID00000000-0000-0000-0000-000000000000放在BlacklistDevices變數 in 中/etc/fwupd/daemon.conf,但這對啟動時間沒有影響。我還查看了/sys/firmware/efi/esrt/entries/entry0目錄,該目錄中的文件fw_class包含上述 GUID。

這是輸出fwupdmgr get-devices

$ fwupdmgr get-devices 
To Be Filled By O.E.M.
│
├─PCIe SSD:
│     Device ID:           71b677ca0f1bc2c5b804fa1d59e52064ce589293
│     Summary:             NVM Express Solid State Drive
│     Current version:     ECFM12.3
│     Vendor:              Phison Electronics Corporation (NVME:0x1987)
│     GUIDs:               8cb1e2fe-eb01-5508-9fb3-98add4bb7c34
│                          a44eb54c-5441-56f2-8cc0-5e48964c6457
│                          8d128eab-f266-513f-81e7-910de65fd73a
│     Device Flags:        • Internal device
│                          • Updatable
│                          • Requires AC power
│                          • Supported on remote server
│                          • Needs shutdown after installation
│                          • Device is usable for the duration of the update
│   
└─PS Audio USB Audio 2.0:
     Device ID:           aff287d984fc4f1ed8f1ab3b35e4650b1b1f6c22
     Current version:     6.152
     Vendor:              PS Audio (USB:0x2616)
     GUIDs:               0f7b0016-25d6-5bc5-a6e0-423dba203c62
                          1fd717ad-32ef-5d86-a59a-71fd73ed6aae
     Device Flags:        • Updatable

我的理解是,fwupd.service在放棄並繼續前進之前,會在此 ESRT GUID 條目上掛斷一分鐘。我的問題是:那個條目到底是什麼,我怎樣才能阻止它減慢我的啟動速度?

編輯:事實證明,它根本不是fwupd,而是 Xbox One 無線適配器正在減慢一切。在沒有插入適配器的情況下啟動完全解決了這個問題。

簡短回答:您系統的 UEFI 韌體聲稱支持“UEFI 韌體更新膠囊”機制,該機制允許所有作業系統以統一的方式提供系統韌體更新(也稱為“BIOS 更新”)。但是您目前的韌體版本顯然在ESRT 資訊表中提供了一個空 GUID,而不是正確辨識可更新的系統韌體,因此嘗試檢查Linux 供應商韌體服務中是否有更新的韌體版本失敗。

fwupd負責從系統韌體中讀取 ESRT 資訊表並查詢該類型韌體更新可用性的外掛的名稱是uefi,因此您可以嘗試BlacklistPlugins在您的 to 中編輯該行/etc/fwupd/daemon.conf

BlacklistPlugins=test;uefi

(假設您的配置文件已經包含test外掛的預設黑名單,就像在我的 Debian 10 上一樣)

fwupd.service是完全可選的,因此如果您更喜歡該解決方案,完全禁用它應該沒有問題(systemctl mask fwupd.service即使其他服務請求它也可以防止它自動啟動)。但是,您需要以老式方式自行查找適用於您系統的任何韌體更新。:-)

幸運的是,系統供應商可能已在更新的 UEFI 韌體版本中修復了它,因此將您的 UEFI 韌體更新到最新的可用版本可能會解決問題。

引用自:https://unix.stackexchange.com/questions/595146