升级到 Ubuntu 21.04+ 后,TLP 未在系统启动时运行

mha*_*idg 2 power-management tlp

升级到 Ubuntu 21.04 后,TLP 配置不会在系统启动时应用。重新安装该软件包没有帮助。

\n

检查 TLP systemd 单元tlp.service确认了该问题。

\n
$ systemctl status tlp.service                  \n\n\xe2\x97\x8f tlp.service - TLP system startup/shutdown\n     Loaded: loaded (/lib/systemd/system/tlp.service; enabled; vendor preset: enabled)\n     Active: inactive (dead)\n       Docs: https://linrunner.de/tlp\n
Run Code Online (Sandbox Code Playgroud)\n

mha*_*idg 5

新的 power-profiles-daemon 包就是问题所在(请参阅TLP/issues/564)。该软件包默认安装在 Ubuntu 21.04+ 和其他几个发行版中。

解释

新的 power-profiles-daemon 软件包附带了一个 systemd 单元power-profiles-daemon.servicetlp.service该单位声明与导致tlp.service有效禁用发生冲突。

/lib/systemd/system/power-profiles-daemon.service(注意该Conflicts=指令)

[Unit]
Description=Power Profiles daemon
Conflicts=tuned.service tlp.service auto-cpufreq.service
Before=multi-user.target display-manager.target

...
Run Code Online (Sandbox Code Playgroud)

如果一个单元Conflicts=对另一个单元有指令,则启动前者将停止后者,反之亦然。并且因为tlp.service没有Conflicts=在 上声明指令power-profiles-daemon.service。无论单元的激活顺序如何,它始终是被禁用的那个。

解决方案

  • 您可以使用 ; 禁用 power-profiles-daemon.service 单元sudo systemctl disable power-profiles-daemon.service。或者
  • 使用 . 从系统中删除 power-profiles-daemon 软件包sudo apt purge power-profiles-daemon
  • 或者,您可以手动覆盖tlp.service配置sudo systemctl edit tlp.service并设置Conflicts=withBefore=指令。
[Unit]
Conflicts=power-profiles-daemon.service
Before=power-profiles-daemon.service
Run Code Online (Sandbox Code Playgroud)