Como posso executar um comando hdparm após a inicialização e continuar no Fedora 19?

8

Comprei um novo HD (WD5000BPVT) que infelizmente tenta dormir a cada 5-8 segundos. O ruído de cliques não é apenas audível, mas o tempo de rotação de 1 segundo adiciona uma latência muito perceptível no uso diário.

Descobri que hdparm -B 254 /dev/sda desativará o sono muito curto, mas não sei como aplicar essa configuração toda vez que a unidade é ligada. Os aplicativos dconf-editor e 'Power Management Preferences' não fazem nada em relação às configurações de HD. Eu não tenho nenhum caminho /etc/hdparm ou /etc/acpi . MATE é o gerenciador de janelas.

No Fedora 19, como posso forçar este comando a rodar sempre que a unidade é ativada?

    
por Pete 23.06.2013 / 18:42

5 respostas

10

Eu tive o mesmo problema, nenhuma das soluções aqui atendeu às minhas necessidades. Usar o cron é realmente uma solução alternativa, não uma solução, as regras do udev são executadas quando a energia é conectada / desconectada, mas não depois de suspender / retomar e pm-utils não são mais usados por padrão no Fedora 19 quando você fecha o laptop.

Como systemd agora é responsável por suspender / hibernar, acho que a única maneira correta de lidar com essa situação é criar uma unidade systemd que será executada após a inicialização e depois da suspensão.

Notas:

  • Usando /dev/disk/by-id/... em vez de /dev/sda , você sempre terá certeza de obter o disco correto (sda, b, c depende da ordem em que são detectados pelo kernel)
  • Você pode ter várias ExecStart linhas para poder configurar vários discos

Aqui está a unidade que eu escrevi:

[Unit]
Description=Silence HD
After=suspend.target

[Service]
Type=oneshot
# Disable automatic head parking for the main disk
ExecStart=/sbin/hdparm -B 254 /dev/disk/by-id/ata-ST3250824AS_4N127FD1
# Enable automatic spin down after 30 seconds for the second, infrequently used disk
ExecStart=/sbin/hdparm -S 6 /dev/disk/by-id/ata-ST31000528AS_BVP5H5X1

[Install]
WantedBy=suspend.target basic.target

Salve este arquivo como /etc/systemd/system/hdsilence.service e, em seguida, ative-o usando:

systemctl enable hdsilence.service
systemctl daemon-reload
    
por 31.08.2013 / 20:13
5

Você pode fazer o sistema executar o comando durante a inicialização, criando seu próprio serviço systemd ou adicionando o comando ao /etc/rc.d/rc.local.

Se você quiser que o comando seja executado toda vez que acordar o sistema depois de dormir / hibernar, você pode adicionar um script que comece com 2 dígitos para /etc/pm/sleep.d/, procure nos outros scripts em /usr/lib64/pm-utils/sleep.d (assumindo x86_64) para mais detalhes. Basicamente, leva um parâmetro dependendo de qual estado está entrando. Você também pode precisar adicionar um pouco de login ao power.d / no mesmo diretório pai, se quiser operar de maneira diferente com a energia da bateria em comparação com o plug-in.

    
por 23.06.2013 / 19:43
3

Para configurações diferentes quando executado em CA / bateria, eu faria isso por meio de uma regra simples de udev , por exemplo, /etc/udev/rules.d/98-apmsettings.rules :

SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/usr/bin/hdparm -B 128 /dev/sda"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="/usr/bin/hdparm -B 254 /dev/sda"

Isso definiria apm para 254 quando o laptop estiver conectado e, respectivamente, 128 quando desconectado. Além disso, deve sempre funcionar, mesmo depois de sair da suspensão.

    
por 24.06.2013 / 13:07
2

Eu tenho o mesmo disco (e o mesmo problema). Minha solução estúpida, mas funcional: coloquei isso em /etc/crontab :

-*/5  * * * *   root  hdparm -B 254 /dev/sda
    
por 23.06.2013 / 18:46
1

As regras do udev funcionam bem em eventos de plug, mas para obter o comportamento correto após o reinício da suspensão, preciso de algo assim em /etc/pm/sleep.d :

#!/bin/sh

case "${1}" in
    resume|thaw)
    if grep -q 1 /sys/class/power_supply/ADP1/online; then
      /usr/sbin/hdparm -B 254 /dev/sda
    else
      /usr/sbin/hdparm -B 128 /dev/sda
    fi
;;
esac
    
por 07.01.2015 / 14:39