No Fedora 25, o disco rígido do meu laptop tem um nível muito baixo de APM (gerenciamento de energia), então eu uso as regras do udev de esta resposta para ajustá-lo com hdparm
. No entanto, após retomar da suspensão, o nível de APM é redefinido. Acionar manualmente as regras do udev do terminal funciona, então, para automatizá-lo, tentei usar o seguinte serviço systemd adaptado de aqui e aqui : -
[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
Eu também tentei combinações de multi-user.target
, default.target
e sleep.target
na linha WantedBy=
, bem como Type=simple
. Nada disso funcionou, então tentei colocar um script em /etc/pm/sleep.d/
, adaptado de este . Mas isso também não funcionou (nem foi colocado em /usr/lib64/pm-utils/sleep.d/
).
Finalmente, a página man do systemd-suspend.service
diz
... scripts or binaries dropped in /usr/lib/systemd/system-sleep/
are intended for local use ... and should be considered hacks. If applications want to be notified of system suspend/hibernation and resume, there are much nicer interfaces available.
No entanto, colocar um script em /usr/lib/systemd/system-sleep/
realmente funciona; mas em qualquer caso, quais são essas "interfaces muito melhores" e como usá-las para executar o gatilho do udev (preferível) ou hdparm
após retomar a suspensão? Melhor ainda, existe uma maneira de definir os níveis de APM do disco rígido para os estados de bateria e plug-in por meio de alguma configuração estática em vez das regras do udev?
Atualização - corrigida
O serviço systemd está funcionando agora. Acho que usei por engano udevadm
do diretório errado enquanto tentava várias combinações. Eu publiquei uma resposta esclarecendo isso. Peço desculpas por qualquer confusão causada. No entanto, ainda existe a questão de saber se existe uma maneira de fazer isso estaticamente (sem regras do udev).