Fedora 19で起動および修復後にhdparmコマンドを実行するにはどうすればよいですか?

Fedora 19で起動および修復後にhdparmコマンドを実行するにはどうすればよいですか?

新しいHD(WD5000BPVT)を購入しましたが、残念ながら5〜8秒ごとにスリープモードを試してください。カチッという音が目立つだけでなく、ブート時間が1秒のため、日常使用時に非常に目立つ遅延が追加されます。

非常に短いスリープモードが無効になっていることがわかりましたが、hdparm -B 254 /dev/sdaドライブの電源を入れるたびにそれを適用する方法がわかりません。電源管理の基本設定アプリはdconf-editorHD設定と何もしません。私には/etc/hdparm道がありません/etc/acpi。 MATEはウィンドウマネージャです。

Fedora 19でドライブがアクティブになったときにこのコマンドを強制的に実行するにはどうすればよいですか?

答え1

私は同じ問題に直面し、ここの解決策のどれも私のニーズに合わなかった。 cronの使用は実際には解決策ではなく回避策です。 udev ルールは、電源のオン/オフ時に実行されますが、一時停止/再開後は実行されず、pm-utilsFedora 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

独自のシステムサービスを作成するか、/etc/rc.d/rc.localにコマンドを追加して、起動中にシステムにこのコマンドを実行させることができます。

毎回コマンドを実行するには起きるスリープ/休止状態の後のシステムでは、/etc/pm/sleep.d/に2桁の数字で始まるスクリプトを追加し、/usr/lib64/pm-utils/sleep.d(x86_64仮定)で他のスクリプトを確認しますできます。詳細については。デフォルトでは、入力したい状態に応じてパラメータを使用します。バッテリー電源を接続したときとは異なる作業を実行するには、同じ親ディレクトリの power.d/ にいくつかのログイン情報を追加することもできます。

答え3

udevAC/バッテリーで実行する場合、他の設定の場合は、次の簡単な規則に従います
/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"

これは、ノートブックが接続されているときとapm接続が失われたときに別々に設定されます。また、サスペンドから再起動した後も常に機能する必要があります。254128

答え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

関連情報