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

Bra*_*ith 5 boot

我的系统当前在启动时显示出一些奇怪的行为。点击电源按钮几秒钟后就会出现 GUI 登录,但我的键盘和鼠标在大约一分钟内保持未通电状态。systemd-analyze表明fwupd.service问题所在:

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

journalctl -u表示fwupd在某些设备上挂起:

\n
Jun 25 21:25:49 pop_os systemd[1]: Starting Firmware update daemon...\nJun 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\nJun 25 21:26:50 pop_os systemd[1]: Started Firmware update daemon.\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试将指定的 GUID 放入变量 in00000000-0000-0000-0000-000000000000中,但这对启动时间没有影响。我还查看了该目录,该目录中的文件包含上述 GUID。BlacklistDevices/etc/fwupd/daemon.conf/sys/firmware/efi/esrt/entries/entry0fw_class

\n

这是输出fwupdmgr get-devices

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

我的理解是,fwupd.service在放弃并继续之前,在这个 ESRT GUID 条目上挂了整整一分钟。我的问题是:该条目到底是什么?我怎样才能阻止它减慢我的启动速度?

\n

编辑:事实证明根本不是问题fwupd,而是 Xbox One 无线适配器拖慢了速度。在不插入适配器的情况下启动完全解决了问题。

\n

tel*_*coM 3

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

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

BlacklistPlugins=test;uefi
Run Code Online (Sandbox Code Playgroud)

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

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

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