fwupd 服务正在减慢我的 PCIe SSD 的启动时间。为什么会这样,我该如何解决它?

fwupd 服务正在减慢我的 PCIe SSD 的启动时间。为什么会这样,我该如何解决它?

我的系统当前在启动时显示出一些奇怪的行为。点击电源按钮几秒钟后就会出现 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 无线适配器拖慢了速度。在不插入适配器的情况下启动完全解决了问题。

答案1

简短回答:您的系统的 UEFI 固件声称支持“UEFI 固件更新胶囊”机制,该机制允许所有操作系统以统一的方式提供系统固件更新(也称为“BIOS 更新”)。但您当前的固件版本显然在ESRT信息表而不是正确识别可更新的系统固件,因此尝试检查是否有更新的固件版本Linux 供应商固件服务正在失败。

fwupd负责从系统固件读取 ESRT 信息表并查询该类型固件更新的可用性的插件的名称是uefi,因此您可以尝试将BlacklistPlugins您的行编辑/etc/fwupd/daemon.conf为:

BlacklistPlugins=test;uefi

(假设您的配置文件已经包含该test插件的默认黑名单,就像我的 Debian 10 上的那样)

fwupd.service是完全可选的,因此如果您更喜欢该解决方案,那么完全禁用它应该没有问题(systemctl mask fwupd.service即使其他服务请求它也可以防止它自动启动)。但随后您需要以老式的方式自行查找适用于您的系统的任何固件更新。 :-)

幸运的是,系统供应商可能已在更新的 UEFI 固件版本中修复了该问题,因此将 UEFI 固件更新到最新的可用版本可能会解决该问题。

相关内容