配置硬盘驱动器 APM 级别并在挂起/恢复后维护它们

配置硬盘驱动器 APM 级别并在挂起/恢复后维护它们

在 Fedora 25 上,我的笔记本电脑的硬盘驱动器的 APM 级别(电源管理)非常低,因此我使用来自的 udev 规则这个答案来调整它hdparm。但是,从挂起恢复后,APM 级别会重置。从终端手动触发 udev 规则是可行的,因此为了自动化它,我尝试使用以下 systemd 服务改编自这里这里:-

[Unit]
Description=Re-run udev power_supply rules after resuming from suspend
After=supend.target

[Service]
Type=oneshot
User=root
Group=root
ExecStart=+/bin/sh -c '/usr/sbin/udevadm trigger --subsystem-match="power_supply"'

[Install]
WantedBy=suspend.target

我还尝试了multi-user.target、和的组合,default.target以及.这些都不起作用,所以我尝试将脚本放入,改编自sleep.targetWantedBy=Type=simple/etc/pm/sleep.d/。但这也不起作用(将其放入也不起作用/usr/lib64/pm-utils/sleep.d/)。

最后,手册页systemd-suspend.service说,

...放入的脚本或二进制文件/usr/lib/systemd/system-sleep/旨在供本地使用...并且应被视为黑客。如果应用程序想要收到系统挂起/休眠和恢复的通知,可以使用更好的界面。

然而,放置一个脚本/usr/lib/systemd/system-sleep/实际上是可行的;但无论如何,这些“更好的接口”是什么以及如何使用它们来运行 udev 触发器(首选)或hdparm从挂起恢复后?更好的是,有没有办法通过一些静态配置而不是 udev 规则来设置电池供电和插入状态的硬盘驱动器 APM 级别?

更新 - 已修复 systemd 服务现在正在运行。我想我udevadm在尝试各种组合时错误地从错误的目录中使用了。我已经发帖了一个答案澄清这一点。对于造成的任何混乱,我深表歉意。然而,仍然存在一个问题:是否有办法静态地执行此操作(无需 udev 规则)。

答案1

看来我最初是udevadm从错误的目录(/bin/udevadm)中使用的,然后在尝试时出现了一个或其他组合错误。该程序必须从(或)udevadm运行。/sbin/usr/sbin现在以下 systemd 服务就足够了:-

[Unit]
Description=Re-run udev power_supply rules after resuming from suspend
After=supend.target

[Service]
Type=oneshot
ExecStart=/sbin/udevadm trigger --subsystem-match=power_supply

[Install]
WantedBy=suspend.target

对于造成的任何混乱,我深表歉意。

答案2

编写要在恢复时执行的 systemd 服务

After=挂起.目标单位和安装中的 WantedBy=multi-user.target sleep.target 。

在你的情况下,第二部分是WantedBy=sleep.target.

显然After=sleep.target对一个人有用,但另一个人必须使用After=suspend.target。我不知道为什么。使用它来运行单元的接口恢复似乎没有记录,所以我不会真正声称它更好。

相关内容