如何在 Fedora 19 上启动和恢复后运行 hdparm 命令?

如何在 Fedora 19 上启动和恢复后运行 hdparm 命令?

我买了一台新的 HD(WD5000BPVT),不幸的是它每 5-8 秒就会尝试休眠一次。不仅咔嗒声很明显,而且 1 秒的启动时间在日常使用中增加了非常明显的延迟。

我发现hdparm -B 254 /dev/sda将禁用非常短的睡眠,但我不知道如何在每次驱动器开机时强制执行此设置。和“电源管理首选项”应用dconf-editor程序均对高清设置不执行任何操作。我没有任何/etc/hdparm路径/etc/acpi。 MATE 是窗口管理器。

在 Fedora 19 上,如何在驱动器激活时强制运行此命令?

答案1

我遇到了同样的问题,这里的解决方案都不适合我的需求。使用 cron 实际上是一种解决方法,而不是解决方案,udev 规则在连接/断开电源时运行,但在挂起/恢复后不会运行,并且pm-utils在 Fedora 19 中默认情况下不再使用,例如当您合上笔记本电脑的盖子时。

由于systemd现在负责挂起/休眠,我认为处理这种情况的唯一正确方法是创建一个systemd在启动后和从挂起恢复后都运行的单元。

笔记:

  • 通过使用/dev/disk/by-id/...而不是/dev/sda,您始终确保获得正确的磁盘(sda、b、c 取决于内核检测到它们的顺序)
  • 您可以有多条ExecStart线路,以便可以配置多个磁盘

这是我写的单元:

[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

将此文件另存为/etc/systemd/system/hdsilence.service,然后使用以下命令启用它:

systemctl enable hdsilence.service
systemctl daemon-reload

答案2

您可以通过创建自己的 systemd 服务或将命令添加到 /etc/rc.d/rc.local 来让系统在引导期间运行该命令。

如果您希望每次运行该命令唤醒sleep/hibernate后的系统,可以在/etc/pm/sleep.d/中添加一个以2位数字开头的脚本,查看/usr/lib64/pm-utils/sleep.d中的其他脚本(假设x86_64)更多细节。基本上,它需要一个参数,具体取决于它要进入的状态。如果您想在电池电源上与插入电源时进行不同的操作,您可能还需要在同一父目录中的 power.d/ 中添加一些登录信息。

答案3

udev对于使用交流电/电池运行时的不同设置,我会通过一个简单的规则来完成,例如
/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"

这将分别设置apm254笔记本电脑插入时和128拔出时。此外,即使从挂起状态恢复后,它也应该始终有效。

答案4

udev 规则在插头事件上运行良好,但为了从挂起恢复后获得正确的行为,我需要这样的东西/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

相关内容